compnerd (Saleem Abdulrasool)
User

Projects

User does not belong to any projects.

User Details

User Since
Dec 9 2012, 11:41 PM (266 w, 5 d)

Recent Activity

Today

compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

address comments

Sat, Jan 20, 2:36 PM
compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Sat, Jan 20, 2:35 PM
compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Sat, Jan 20, 1:01 PM

Yesterday

compnerd committed rL323023: test: fix ARM tests harder.
test: fix ARM tests harder
Fri, Jan 19, 5:28 PM
compnerd closed D42201: CodeGen: handle llvm.used properly for COFF.

SVN r323017

Fri, Jan 19, 5:13 PM
compnerd committed rL323021: test: move ARM test from x86.
test: move ARM test from x86
Fri, Jan 19, 5:05 PM
compnerd committed rL323017: CodeGen: handle llvm.used properly for COFF.
CodeGen: handle llvm.used properly for COFF
Fri, Jan 19, 4:29 PM
compnerd added inline comments to D42201: CodeGen: handle llvm.used properly for COFF.
Fri, Jan 19, 3:38 PM
compnerd updated the diff for D42201: CodeGen: handle llvm.used properly for COFF.

context + comment

Fri, Jan 19, 2:46 PM
compnerd updated the diff for D42201: CodeGen: handle llvm.used properly for COFF.

ignore internal globals as per IRC conversion with @rnk , @pcc, @smeenai

Fri, Jan 19, 2:07 PM
compnerd added a comment to D42225: libcxx: Provide overloads for basic_filebuf::open() et al that take wchar_t* filenames on Windows..

Can we avoid the _WIN32 usage please? We spent some effort to avoid it, and have _LIBCPP_WIN32API to indicate that we want the Win32 API. I know that Marshall had some strong opinions on avoiding the _WIN32 usage, but, beyond that, I think that this is a completely reasonable thing to provide. I'm still torn if we should enable this on not _LIBCPP_ABI_MICROSOFT. One other option would be to have a _LIBCPP_MS_EXTENSIONS flag to control whether they are provided. But, all of that is merely details on how to control access to the interfaces, not the direction itself.

Fri, Jan 19, 10:16 AM
compnerd accepted D42232: [cmake] Also pass CMAKE_ASM_COMPILER_ID to next stage when bootstrapping.

Took a bit of reading to realize that the compiler is being set to clang, and therefore CMAKE_ASM_COMPILER_ID should be Clang.

Fri, Jan 19, 10:07 AM
compnerd added a comment to D42292: [ARM] Call __chkstk for dynamic stack allocation in all windows environments.

What is the motivation for this change? If you are trying to enable this for MinGW, that is fine, but I'm not sure if we should try to catch the VLA issues in the frontend. I believe that on x86_64, we also disallow the VLAs as Microsoft does not permit them there, but @rnk can correct me if I'm wrong on that.

Fri, Jan 19, 10:06 AM

Thu, Jan 18

compnerd updated the summary of D40849: CodeGen: support an extension to pass linker options on ELF.
Thu, Jan 18, 9:36 PM
compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.
Thu, Jan 18, 9:36 PM
compnerd added a comment to D42127: [GlobalMerge] Don't merge dllexport globals.

Can you add a test case to ensure that it still triggers for non-dllexport cases with this target?

Thu, Jan 18, 6:54 PM

Wed, Jan 17

compnerd updated the diff for D42201: CodeGen: handle llvm.used properly for COFF.

rebase and emit one entry per line

Wed, Jan 17, 4:59 PM
compnerd added a comment to D42201: CodeGen: handle llvm.used properly for COFF.

Awesome; I was thinking about doing that as a follow up. I'll hoist this into that new layer. Completely agree on the fixing the emission after this infrastructure is in place. I can't believe that we never implemented this.

Wed, Jan 17, 4:10 PM
compnerd updated the diff for D42201: CodeGen: handle llvm.used properly for COFF.
Wed, Jan 17, 3:26 PM
compnerd created D42201: CodeGen: handle llvm.used properly for COFF.
Wed, Jan 17, 3:06 PM

Mon, Jan 8

compnerd accepted D41314: [cmake] Use symlinks for Windows-hosted toolchains built on Unix.

Yeah, we should be using symlinks on the unix hosts. This fixes an issue in cross-compiling, LGTM.

Mon, Jan 8, 10:27 PM
compnerd accepted D41712: [docs] Mention SjLj fixes in the release notes.

Sure.

Mon, Jan 8, 10:25 PM
compnerd accepted D41842: [libunwind][MIPS]: Rename Registers_mips_n64 to Registers_mips_newabi..

Thanks for splitting this up!

Mon, Jan 8, 10:17 PM
compnerd accepted D41673: [CMake] Install resource files into a share/ directory.

This needs to be coordinated with D41706.

Mon, Jan 8, 1:46 PM
compnerd accepted D41706: [Driver] Update default sanitizer blacklist location.

This seems fine, but will need D41673 to go in at the same time. The sanitizers are pretty tightly coupled with the compiler, so I don't think that it is too big of a deal, but it may be nice to have a more robust upgrade path.

Mon, Jan 8, 1:46 PM

Sat, Jan 6

compnerd committed rCXX321937: Correct mistake in pragma usage for Windows.
Correct mistake in pragma usage for Windows
Sat, Jan 6, 10:49 AM
compnerd committed rL321937: Correct mistake in pragma usage for Windows.
Correct mistake in pragma usage for Windows
Sat, Jan 6, 10:48 AM

Fri, Jan 5

compnerd accepted D41300: [ARM] Fix PR35379 - incorrect unwind information when compiling with -Oz.
Fri, Jan 5, 5:37 PM

Thu, Jan 4

compnerd added a comment to D39074: [libunwind][MIPS]: Add support for unwinding in N32 processes..

Looking over this patch again, I think I really would prefer that this was split up into two patches. The first one should be entirely mechanical, replacing n64 with newabi. The second patch would actually make the changes that you are are after. That would really help with focusing what the issue here actually is. I don't see anything technically that is an issue (I admit I didn't verify the sizes, but the assertions should hopefully catch that). Beyond that split up, Id like to get a signoff from @sdardis for the MIPS specific bits, but from the libunwind side, LGTM.

Thu, Jan 4, 5:38 PM

Wed, Jan 3

compnerd updated subscribers of D40849: CodeGen: support an extension to pass linker options on ELF.
Wed, Jan 3, 9:58 PM

Fri, Dec 29

compnerd requested changes to D41621: [cmake] [libunwind] Fix path problems when cross compiling..

Similar to the libc++abi and libc++ changes.

Fri, Dec 29, 3:35 PM
compnerd requested changes to D41622: [cmake] [libcxx] Fix path and flag problems when cross compiling..
Fri, Dec 29, 3:34 PM
compnerd added a comment to D41622: [cmake] [libcxx] Fix path and flag problems when cross compiling..

Similar to the libc++abi wrt find_path. The CMAKE_REQUIRED_FLAGS handling LGTM.

Fri, Dec 29, 3:34 PM
compnerd requested changes to D41623: [cmake] [libcxxabi] Fix path problems when cross compiling..
Fri, Dec 29, 3:34 PM
compnerd added a comment to D41623: [cmake] [libcxxabi] Fix path problems when cross compiling..

I think that it might be better to handle this as a single global change:

Fri, Dec 29, 3:33 PM

Mon, Dec 25

compnerd accepted D41571: RISCV: Add IMAGE_FILE_MACHINE COFF address spaces.

Cn you add a roundtrip test through yaml2obj/obj2yaml and a test for the COFF dumper?

Mon, Dec 25, 3:27 PM
compnerd accepted D41570: COFF: fix IMAGE_FILE_MACHINE_AM33.
Mon, Dec 25, 10:41 AM

Sun, Dec 24

compnerd accepted D41568: [cmake] Always respect existing CMAKE_REQUIRED_FLAGS when adding additional ones..
Sun, Dec 24, 3:11 PM

Dec 20 2017

compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

It looks like this thread has evolved into a design discussion. It isn't clear to me that we all agree on what problem should be solved. Saleem, it seems like you have some interest in having the format be open-ended, while many others (myself included) seem to want this to be as locked-down as possible with a narrow set of really clearly defined operations. Saleem, could you maybe start an RFC on llvm-dev so we can have a higher-level design discussion? Off the top of my head, there are a couple things that have been mentioned in this thread but not really resolved:

Dec 20 2017, 7:25 PM

Dec 19 2017

compnerd accepted D41131: [AArch64] Implement stack probing for windows.

Please do add the docs that the large code model behavior is an extension.

Dec 19 2017, 2:14 PM
compnerd accepted D41134: [compiler-rt] [builtins] Implement __chkstk for arm64 windows.

Bah, I forgot that __chkstk is special and the normal preserved/clobbered register set is not the same.

Dec 19 2017, 2:03 PM
compnerd accepted D41379: [LLD] [COFF] Don't set the thumb bit in address table entries for data symbols.
Dec 19 2017, 1:57 PM
compnerd added a comment to D30709: Handle IMAGE_REL_AMD64_ADDR32NB in RuntimeDyldCOFF.

We have tests for the dyld bits in the tree already. You should be able to use that for inspiration for writing the tests. They are in test/ExecutionEngine/RuntimeDyld/<ARCH>

Dec 19 2017, 11:34 AM
compnerd added inline comments to D41379: [LLD] [COFF] Don't set the thumb bit in address table entries for data symbols.
Dec 19 2017, 11:32 AM
compnerd accepted D41386: [libunwind][PPC64] Port to ppc64le - initial version.
Dec 19 2017, 11:28 AM
compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

Address @jhenderson's suggestions.

Dec 19 2017, 11:16 AM
compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 19 2017, 10:58 AM

Dec 18 2017

compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

Address @ruiu's comments

Dec 18 2017, 3:20 PM
compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 18 2017, 3:18 PM
compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

Address various comments, fix test

Dec 18 2017, 11:38 AM

Dec 16 2017

compnerd added a comment to D34875: ARM: Report error for invalid use of AAPCS_VFP calling convention.

ARM ELF has an additional field that indicates the PCS used. With the frontend validating the input, wouldn't we be sure that each object file is valid. If there is a mismatch in the PCS, that should already be an error from the linker. Wouldn't the LTO case be handled similarly?

Dec 16 2017, 11:03 AM

Dec 15 2017

compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 15 2017, 11:07 AM
compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 15 2017, 10:31 AM

Dec 14 2017

compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 14 2017, 6:03 PM
compnerd added inline comments to D41131: [AArch64] Implement stack probing for windows.
Dec 14 2017, 5:50 PM
compnerd added inline comments to D41134: [compiler-rt] [builtins] Implement __chkstk for arm64 windows.
Dec 14 2017, 5:44 PM
compnerd accepted D41219: [cmake] Fix clang-cl cross-compilation on macOS.

This is awesome!

Dec 14 2017, 4:51 PM
compnerd committed rL320776: FastISel: support no-PLT PIC calls on ELF x86_64.
FastISel: support no-PLT PIC calls on ELF x86_64
Dec 14 2017, 4:33 PM

Dec 13 2017

compnerd accepted D41087: [Preprocessor] Implement __is_target_{arch|vendor|os|environment} function-like builtin macros.

It would be good to straighten out the corner case of the canonicalized vs specified triple before merging this as that would make it harder to change.

Dec 13 2017, 10:58 AM
compnerd added inline comments to D41134: [compiler-rt] [builtins] Implement __chkstk for arm64 windows.
Dec 13 2017, 10:50 AM
compnerd added inline comments to D39074: [libunwind][MIPS]: Add support for unwinding in N32 processes..
Dec 13 2017, 10:48 AM
compnerd added inline comments to D41156: [cmake] Add support for case-sensitive Windows SDKs.
Dec 13 2017, 9:52 AM
compnerd added inline comments to D41160: [LLD] [COFF] Sort .pdata for arm64.
Dec 13 2017, 9:46 AM
compnerd accepted D41163: [LLD] [COFF] Error out if 20 bit thumb branches are out of range.
Dec 13 2017, 9:44 AM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

Yes, gABI specifies pointer sized alignment, but that is not what currently occurs. Everything is 4-byte aligned due to a mis-interpretation of the specification long ago, and now it has fossilized into the reality (yay for compatibility!).

Dec 13 2017, 8:42 AM

Dec 12 2017

compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

@ruiu, that explicitly has the problem that Im trying to avoid: having to modify the compiler for any new option.

Dec 12 2017, 3:58 PM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

I was thinking more along the lines of #pragma comment(linker, "-liberty").

Dec 12 2017, 2:30 PM
compnerd added inline comments to D41131: [AArch64] Implement stack probing for windows.
Dec 12 2017, 1:57 PM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

I don't think that parsing the options on the LLVM side is a good idea. What if the linker uses a non-GNU style driver? What if there are multiple ways of specifying the option (joined vs separate)? This is something that really should be pushed further down. Can you even do -l library with the GNU driver?

Dec 12 2017, 1:44 PM
compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

Add llvm-readobj decoding support, tweak the structure layout a bit.

Dec 12 2017, 11:05 AM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

@ruiu I had the same concern and thats why I am doing one option per C-style string with an array that is null terminated to represent the options. If there are options with spaces they will be a string onto themselves. That is in the test itself (two options: "spaced option" and "nospace").

Dec 12 2017, 9:38 AM

Dec 11 2017

compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

Ah, my concern is in keeping the handling in the compiler agnostic. I don't mind discussing the aspects of the options. I think that the two options that really matter are -L and -l. I think that adjusting the linker search path should apply to all future library searches. For the -l, the ideal location would be after the object itself. But, I don't think that should really gate this infrastructure level support.

Dec 11 2017, 9:40 PM
compnerd added inline comments to D41087: [Preprocessor] Implement __is_target_{arch|vendor|os|environment} function-like builtin macros.
Dec 11 2017, 9:25 PM
compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

Address implementation details pointed out by @jakehehrlich

Dec 11 2017, 4:38 PM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

It also means that it is harder to add features in the future for things which may not yet exist. As an example, there is no equivalent to this option today, but it would be pretty nice to have: -reexport-l<ibrary>. This would be equivalent to forwarders in COFF and LC_REEXPORT in the MachO. There is no ELF equivalent, but, were we to add that to the linker, this would now require changing the entire toolchain rather than forwarding the one single option.

Dec 11 2017, 4:34 PM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

Sure, the intent is that only a subset of features would be used. But, controlling which subset of the features shouldn't be limited in the implementation I think. This is mostly meant to serve as a means for adding equivalent functionality for linking that exists elsewhere. Im thinking of things like library search paths and linked libraries are generally pretty useful to be able to embed in a static library (as well as objects). One place where this would be immediately useful would be swift and Linux where currently the linker directives are added into a special section, a special tool will then post-process object files to extract and construct response files to pass along the options. All of this seems unnecessary and bulky when all the other object files support a clean way to support this.

Dec 11 2017, 10:09 AM

Dec 8 2017

compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

This could be embedded within the note structure. Because we want this section to be discarded by default, having a PROGBITS section seems like a bad idea to me, but if someone else has a better way to accomplish this, I'm not tied to this.

Okay, that makes sense. We have control over the linker scripts our proprietary linker uses, so we use /DISCARD/ to achieve this with our own version of the structure. Since there's no guarantee that a linker will recognise this new section, I'm happy for it to stay as SHT_NOTE, but it must fit the SHT_NOTE format, or tools won't be able to interpret it properly.

Should we explicitly reserve a range of version numbers (e.g. 0xF0000000-0xFFFFFFFF) to allow for vendor-specific versions? That way there's no risk of people using a number in their local LLVM ports which will clash with something done upstream. Also, it might be wise to explicitly reserve version 0 and/or some other range, to allow us to do crazier things in the future that we can't anticipate just yet.

Dec 8 2017, 11:48 AM
compnerd added a comment to D40917: Emit .debug$H section in clang.

I really wish that we had some way to indicate that this is a LLVM extension.

Dec 8 2017, 11:34 AM
compnerd accepted D40689: [llvm] Add install-distribution-stripped.
Dec 8 2017, 11:23 AM
compnerd accepted D40927: [runtimes] Add install-*-stripped targets.
Dec 8 2017, 11:22 AM

Dec 6 2017

compnerd accepted D38110: [libunwind][MIPS]: Add support for unwinding in O32 and N64 processes..

LGTM if @sdardis is good with it

Dec 6 2017, 2:37 PM
compnerd added a comment to D40849: CodeGen: support an extension to pass linker options on ELF.

This could be embedded within the note structure. Because we want this section to be discarded by default, having a PROGBITS section seems like a bad idea to me, but if someone else has a better way to accomplish this, I'm not tied to this.

Dec 6 2017, 10:38 AM

Dec 5 2017

compnerd accepted D40680: [libc++] Create install-stripped targets.
Dec 5 2017, 4:33 PM
compnerd added inline comments to D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 5 2017, 2:11 PM
compnerd updated the diff for D40849: CodeGen: support an extension to pass linker options on ELF.

Tweak test

Dec 5 2017, 2:06 PM
compnerd created D40849: CodeGen: support an extension to pass linker options on ELF.
Dec 5 2017, 12:21 PM
compnerd committed rL319816: Enable auto-linking on Windows.
Enable auto-linking on Windows
Dec 5 2017, 11:33 AM
compnerd committed rCXX319816: Enable auto-linking on Windows.
Enable auto-linking on Windows
Dec 5 2017, 11:33 AM
compnerd closed D40660: Enable auto-linking on Windows.

SVN r319816

Dec 5 2017, 11:33 AM
compnerd accepted D40816: [libunwind] Use the correct variable name for target triple in lit.

I'm okay with this change in principle, but Im worried that this may break the buildbots. Please ensure that they remain green after this change.

Dec 5 2017, 11:27 AM
compnerd accepted D40817: [libunwind] Pass LIBUNWIND_SYSROOT and LIBUNWIND_GCC_TOOLCHAIN to lit .
Dec 5 2017, 11:26 AM
compnerd accepted D40820: [libunwind][CMake] Set TARGET_TRIPLE if LIBUNWND_TARGET_TRIPLE is set.
Dec 5 2017, 11:26 AM
compnerd accepted D40823: [CMake] Use PRIVATE in target_link_libraries for executables.
Dec 5 2017, 11:26 AM
compnerd accepted D40842: [ObjectYAML] Update obj2yaml and yaml2obj for .debug$H section.
Dec 5 2017, 11:15 AM

Dec 4 2017

compnerd accepted D40779: [cmake] Fix zlib library detection.
Dec 4 2017, 3:21 PM

Dec 3 2017

compnerd accepted D40744: [cmake] Modernize some conditionals. NFC.

Looks like a carry-over from the autoconf conversion (where it is used to deal with a posix sh limitation.

Dec 3 2017, 10:23 PM
compnerd accepted D40770: [AArch64] Allow using emulated tls on platforms other than ELF.

Please add a MachO test as this enables emulated TLS on MachO as well.

Dec 3 2017, 10:21 PM
compnerd accepted D40769: [ARM] Allow using emulated tls on platforms other than ELF.

Please add a test case with emulated TLS on Darwin as -femulated-tls will now lower with emulated TLS on Darwin too.

Dec 3 2017, 10:17 PM

Nov 30 2017

compnerd added inline comments to D40660: Enable auto-linking on Windows.
Nov 30 2017, 5:01 PM
compnerd updated the diff for D40660: Enable auto-linking on Windows.

@rnk/@smeenai don't want future proofing

Nov 30 2017, 11:43 AM