Page MenuHomePhabricator

rafaelauler (Rafael Auler)
User

Projects

User does not belong to any projects.

User Details

User Since
Aug 13 2014, 4:45 PM (363 w, 3 d)

Recent Activity

Sep 2 2015

rafaelauler accepted D12027: [lld][LinkerScript] Consider order of headers in PHDRS command.

LGTM

Sep 2 2015, 5:17 AM · lld

Aug 14 2015

rafaelauler added a comment to D12027: [lld][LinkerScript] Consider order of headers in PHDRS command.

Is it an error in gnu ld to have two output sections with the same name? I'm not sure if it is. IIRC, I remember Rafael specifically relying on the ability to have multiple sections with the same name in order to reduce the final binary size.

Aug 14 2015, 12:16 PM · lld

Jul 29 2015

rafaelauler added a comment to D11589: [lld][LinkerScript] Process program header of linker script.

This LGTM.

Jul 29 2015, 9:58 AM · lld

Jul 13 2015

rafaelauler added a comment to D10951: [LinkerScript] Fix bug in Segment::assignVirtualAddress().

Ping

Jul 13 2015, 1:56 PM

Jul 6 2015

rafaelauler added a comment to D10951: [LinkerScript] Fix bug in Segment::assignVirtualAddress().

This is tested in D10952, which is a patch that takes advantage of segments with multiple slices and frequently triggers the bug handled here. Without this patch, D10952 will break an existing test.

Jul 6 2015, 11:10 AM

Jul 5 2015

rafaelauler retitled D10952: [LinkerScript] Don't create unnecessarily large segments from to [LinkerScript] Don't create unnecessarily large segments.
Jul 5 2015, 10:38 PM
rafaelauler retitled D10951: [LinkerScript] Fix bug in Segment::assignVirtualAddress() from to [LinkerScript] Fix bug in Segment::assignVirtualAddress().
Jul 5 2015, 10:35 PM

Apr 7 2015

rafaelauler accepted D8840: [LinkerScript] Handle symbols defined in linker scripts in case of shared lib.

Sure!

Apr 7 2015, 1:21 PM · lld
rafaelauler closed D8263: [lld] [LinkerScript] Handle symbols defined in linker scripts.
Apr 7 2015, 1:20 PM

Apr 6 2015

rafaelauler added a comment to D8840: [LinkerScript] Handle symbols defined in linker scripts in case of shared lib.

Hi Simon,

Apr 6 2015, 8:05 AM · lld

Mar 13 2015

rafaelauler added a comment to D8138: LinkerScript: Add -T <scriptfile> option.

No more comments, Meador, LGTM. Thanks for working on this.

Mar 13 2015, 9:59 AM · lld

Mar 12 2015

rafaelauler added inline comments to D8157: [lld] [LinkerScript] Implement semantics for simple sections mappings.
Mar 12 2015, 12:50 PM

Mar 11 2015

rafaelauler added a comment to D8263: [lld] [LinkerScript] Handle symbols defined in linker scripts.

Thanks for pointing out Davide, I saw this patch. But there are two things that are not correct in init_array:

Mar 11 2015, 1:33 PM
rafaelauler added a comment to D8263: [lld] [LinkerScript] Handle symbols defined in linker scripts.

Oh you meant, the linking will fail because it is done in the writer (a final step)? No, this is added before the resolver gets called.

Mar 11 2015, 1:25 PM
rafaelauler added a comment to D8263: [lld] [LinkerScript] Handle symbols defined in linker scripts.

For now I just used the same mechanism used to add other linker-defined symbols such as _bss_start, etc. I plan to later change this to be more precise.

Mar 11 2015, 1:22 PM
rafaelauler retitled D8263: [lld] [LinkerScript] Handle symbols defined in linker scripts from to [lld] [LinkerScript] Handle symbols defined in linker scripts.
Mar 11 2015, 1:12 PM

Mar 10 2015

rafaelauler updated the diff for D8157: [lld] [LinkerScript] Implement semantics for simple sections mappings.

Addressed reviewers' concerns.

Mar 10 2015, 2:06 PM
rafaelauler added inline comments to D8157: [lld] [LinkerScript] Implement semantics for simple sections mappings.
Mar 10 2015, 2:04 PM

Mar 9 2015

rafaelauler closed D8156: [lld] [LinkerScript] Implement linker script expression evaluation.

Committed r231707.

Mar 9 2015, 2:51 PM
rafaelauler added a comment to D8157: [lld] [LinkerScript] Implement semantics for simple sections mappings.

Thank you all for your patience with this patch size and for the reviews. I'll keep the next patches shorter. Comments inline.

Mar 9 2015, 8:10 AM
rafaelauler abandoned D7915: [lld] [LinkerScript] Implement semantics for simple sections mappings.
Mar 9 2015, 6:33 AM
rafaelauler updated the diff for D8156: [lld] [LinkerScript] Implement linker script expression evaluation.

Addressed reviewers' concerns.

Mar 9 2015, 6:31 AM
rafaelauler added a comment to D8156: [lld] [LinkerScript] Implement linker script expression evaluation.

Hi all,

Mar 9 2015, 6:26 AM

Mar 8 2015

rafaelauler retitled D8157: [lld] [LinkerScript] Implement semantics for simple sections mappings from to [lld] [LinkerScript] Implement semantics for simple sections mappings.
Mar 8 2015, 6:49 PM
rafaelauler retitled D8156: [lld] [LinkerScript] Implement linker script expression evaluation from to [lld] [LinkerScript] Implement linker script expression evaluation.
Mar 8 2015, 6:40 PM

Mar 7 2015

rafaelauler added a comment to D8138: LinkerScript: Add -T <scriptfile> option.

This is the tablegen language, not Python :)

Mar 7 2015, 12:12 PM · lld

Mar 2 2015

rafaelauler added a comment to D7915: [lld] [LinkerScript] Implement semantics for simple sections mappings.

Hi Rui and Shankar,

Mar 2 2015, 3:25 AM

Feb 26 2015

rafaelauler retitled D7915: [lld] [LinkerScript] Implement semantics for simple sections mappings from to [lld] [LinkerScript] Implement semantics for simple sections mappings.
Feb 26 2015, 11:38 AM

Feb 3 2015

rafaelauler accepted D7393: Simplify large switches..

LGTM

Feb 3 2015, 3:26 PM · lld
rafaelauler accepted D7390: ELF: Support INPUT linker script directive.

LGTM

Feb 3 2015, 2:00 PM · lld
rafaelauler added a comment to D7323: [lld] Make ELFLinkingContext own LinkerScript buffers.

I committed with LLVM_DELETED_FUNCTION because "= delete" breaks my MSVC 2012 box. After we move on to officially only support MSVC >= 2013, we can drop this macro.

Feb 3 2015, 8:16 AM · lld

Feb 2 2015

rafaelauler updated the diff for D7323: [lld] Make ELFLinkingContext own LinkerScript buffers.

Thanks for the suggestions. Here is the new version.

Feb 2 2015, 11:37 AM · lld
rafaelauler updated the diff for D7323: [lld] Make ELFLinkingContext own LinkerScript buffers.

Changed the implementation according to suggestions from Rui and Shankar.

Feb 2 2015, 11:03 AM · lld

Feb 1 2015

rafaelauler added a comment to D7322: [lld] Make ELFLinkingContext own LinkerScript buffers.

I agree, we don't need a master linker script, Shankar was right in that we
can have multiple linker scripts with the -T option. I'll work on your
suggestions, they sound good to me.

Feb 1 2015, 9:13 PM · lld
rafaelauler added a comment to D7326: [ELF] Support for parsing OUTPUT command in LinkerScript.

Well, I think no file is left open. After MemoryBuffer::getFileOrSTDIN(), the memory buffer is simply filled in with the file contents, and the file is closed right before this call finishes and the lexer starts its work. So, my original point was that, since we already copied the entire file to a separate memory buffer, we would be duplicating work by creating new strings and duplicating the contents of this memory buffer in several small string buffers.

Feb 1 2015, 7:46 PM · lld
rafaelauler added a comment to D7326: [ELF] Support for parsing OUTPUT command in LinkerScript.

It's an option, but why dup every string that is already in a memory buffer?

Feb 1 2015, 7:26 PM · lld
rafaelauler accepted D7326: [ELF] Support for parsing OUTPUT command in LinkerScript.

Next time, could you please upload your diffs with "git diff -U999999 <other-branch>"? This way, we get more context here on Phabricator. Thanks for the patch.

Feb 1 2015, 7:10 PM · lld
rafaelauler added a comment to D7322: [lld] Make ELFLinkingContext own LinkerScript buffers.

Hi Shankar,

Feb 1 2015, 3:58 PM · lld
rafaelauler added a comment to D7323: [lld] Make ELFLinkingContext own LinkerScript buffers.

I also want to solve the problem of this patch (make ELFLinkingContext own
the buffers) without mixing with future directions on cooking linkerscript
AST. However, we will essentially end up with a vector of BumpPtrAllocators
in ELFLinkingContext (one for each linker script), which makes the code, in
my opinion, much harder to understand (it's better to have "hey, these are
a bunch of linkerscripts" than "hey, here are a bunch of unnamed buffers
that need to be anchored somewhere"). What are the benefits of this? We
avoid including LinkerScript.h into ELFLinkingContext.h, but that is
something that we will eventually need to do to avoid rewriting all classes
in LinkerScript.h in their "cooked" version, don't you think?

Feb 1 2015, 3:44 PM · lld
rafaelauler added a comment to D7323: [lld] Make ELFLinkingContext own LinkerScript buffers.

The reason I created a new class that encapsulates the parser is because I
plan to later add code to this class (or to another new class called
ScriptSema that is owned by ScriptInstance) that cooks the AST with
semantic info to answer high level questions about the linker script, such
as "in which output section to put this input section, according to this
linker script?". Anyway, I will need to find a location to put new data
structures to store this data, and I thought of this as a first step. What
do you think?

Feb 1 2015, 2:50 PM · lld
rafaelauler abandoned D7322: [lld] Make ELFLinkingContext own LinkerScript buffers.

forgot to subscribe to llvm-commits. opened a new one in D7323

Feb 1 2015, 2:08 PM · lld
rafaelauler retitled D7323: [lld] Make ELFLinkingContext own LinkerScript buffers from to [lld] Make ELFLinkingContext own LinkerScript buffers.
Feb 1 2015, 2:08 PM · lld
rafaelauler retitled D7322: [lld] Make ELFLinkingContext own LinkerScript buffers from to [lld] Make ELFLinkingContext own LinkerScript buffers.
Feb 1 2015, 2:06 PM · lld

Jan 24 2015

rafaelauler added a comment to D7133: non-Unicode response file support on Windows.

Yes, but Clang assumes UTF-8 (Windows or Linux) when no BOM is present. So, even though the system code page is Japanese, when Clang opens input files, it will use a function that interprets the file name strings as UTF8.

Jan 24 2015, 8:44 AM

Nov 12 2014

rafaelauler added a comment to D6235: Implement some missing relocs for X86_64.

Does LLVM generate these "non-ABI-conformant" relocations? Do they need to
be supported by LLD? The relocations are R_X86_64_8, R_X86_64_16,
R_X86_64_PC16 and R_X86_64_PC8.

Nov 12 2014, 3:56 PM
rafaelauler added a comment to D6235: Implement some missing relocs for X86_64.

Another thing, when submitting patches to Phabricator, it is interesting to provide patches with full context (see http://llvm.org/docs/Phabricator.html ). To do this, use

Nov 12 2014, 2:37 PM
rafaelauler added a comment to D6235: Implement some missing relocs for X86_64.

Hi Davide,

Nov 12 2014, 2:26 PM

Nov 2 2014

rafaelauler abandoned D5852: [lld] Teach LLD how to parse complete linker scripts.
Nov 2 2014, 8:21 PM
rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

Committed revision 221126.

Nov 2 2014, 8:20 PM

Oct 27 2014

rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

Thanks Sean and Rui for your code review.

Oct 27 2014, 6:58 PM

Oct 25 2014

rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

Hi Shankar,
Glad you made a second round of suggestions, thanks. I answered some of your concerns below, but will also work on your suggestions and update the patch soon.

Oct 25 2014, 8:26 PM
rafaelauler updated the diff for D5852: [lld] Teach LLD how to parse complete linker scripts.

Addressed Sean's concerns and tested the dump'ed scripts. This required adjusting some cosmetic issues to make dump'ed scripts 100% parseable by GNU ld. Also added other missing features to parse other kernel linker scripts: unary negation, fill expressions that can be indefinitely large ( =0x909090909090909090909090) and parsing symbol assignments outside SECTIONS.

Oct 25 2014, 1:50 AM

Oct 23 2014

rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

Hi Sean, thanks for your input, I didn't know your write-up about linker scripts, it's great!

Oct 23 2014, 8:33 PM
rafaelauler updated the diff for D5852: [lld] Teach LLD how to parse complete linker scripts.

Implemented Rui's suggestions.

Oct 23 2014, 7:00 PM
rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

Hi Rui,

Oct 23 2014, 6:59 PM

Oct 22 2014

rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

No problem, Rui, I was waiting for your feedback too. Thanks for putting in time to see this.

Oct 22 2014, 2:26 PM

Oct 21 2014

rafaelauler updated the diff for D5852: [lld] Teach LLD how to parse complete linker scripts.

I changed the AST nodes creation according to Rui's suggestion.
I converted some asserts to error messages, according to Shankar's suggestion. There are still some asserts left that are only to check code sanity and are not appropriate for error messages.
I added test cases that exercises parsing errors (incomplete linker scripts) according to Shankar's suggestion.
I also changed the expression parsing functions to eliminate duplicated code and make it simpler.

Oct 21 2014, 10:41 PM

Oct 17 2014

rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

Hi Shankar,

Oct 17 2014, 7:58 PM
rafaelauler added a comment to D5852: [lld] Teach LLD how to parse complete linker scripts.

I'll address a comment from Rui:

Oct 17 2014, 5:34 PM
rafaelauler added a comment to D5851: [lld] Teach LLD how to parse complete linker scripts.

Hi Ruiu, sorry, I messed up this revision because I forgot to add llvm-commits to subscribers. I opened a new one in D5852, I will answer will question there. Thanks for sharing your opinion.

Oct 17 2014, 5:30 PM
rafaelauler added a comment to D5851: [lld] Teach LLD how to parse complete linker scripts.

Forgot to add llvm-commits to subscribers. Opened a new revision and added it.

Oct 17 2014, 5:04 PM
rafaelauler retitled D5852: [lld] Teach LLD how to parse complete linker scripts from to [lld] Teach LLD how to parse complete linker scripts.
Oct 17 2014, 5:02 PM
rafaelauler abandoned D5851: [lld] Teach LLD how to parse complete linker scripts.
Oct 17 2014, 5:02 PM
rafaelauler retitled D5851: [lld] Teach LLD how to parse complete linker scripts from to [lld] Teach LLD how to parse complete linker scripts.
Oct 17 2014, 5:00 PM

Oct 9 2014

rafaelauler closed D5713: [lld] Reapply "[ELF] Only mark as DT_NEEDED libs that are strictly necessary".

Thanks Shankar. Committed r219449.

Oct 9 2014, 3:17 PM
rafaelauler retitled D5713: [lld] Reapply "[ELF] Only mark as DT_NEEDED libs that are strictly necessary" from to [lld] Reapply "[ELF] Only mark as DT_NEEDED libs that are strictly necessary".
Oct 9 2014, 2:53 PM

Oct 8 2014

rafaelauler closed D5574: [lld] [ELF] Only mark as DT_NEEDED libs that are strictly necessary.

Committed r219353.

Oct 8 2014, 4:04 PM
rafaelauler closed D5673: [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633.

Committed r219350.

Oct 8 2014, 3:51 PM
rafaelauler closed D5571: [lld] [ELF] Fix inclusion of weak symbols in the dynamic symbol table.

Committed r219349.

Oct 8 2014, 3:48 PM
rafaelauler updated the diff for D5571: [lld] [ELF] Fix inclusion of weak symbols in the dynamic symbol table.

Ping and rebase.

Oct 8 2014, 1:16 PM
rafaelauler closed D5585: [lld] [ELF] Implement --export-dynamic/-E.

Committed r219334.

Oct 8 2014, 12:05 PM
rafaelauler updated the diff for D5673: [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633.

You're right, thanks. Changed.

Oct 8 2014, 11:48 AM
rafaelauler retitled D5673: [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633 from to [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633.
Oct 8 2014, 6:58 AM
rafaelauler abandoned D5565: [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633.
Oct 8 2014, 6:57 AM
rafaelauler updated the diff for D5585: [lld] [ELF] Implement --export-dynamic/-E.

I updated this patch according to suggestions. While this patch doesn't implement the effect of --export-dynamic when building shared libraries (currently, DynamicLibraryWriter already exports all symbols), it doesn't restrict the flag only to executables. I also moved the logic that exports symbols in the dynamic symbol table from OutputELFWriter to the ExecutableWriter class. I think it is not correct to leave this at OutputELFWriter because DynamicLibraryWriter, another subclass of OutputELFWriter, already exports all symbols, meaning we can potentially end up with duplicated symbols in the dynamic symbol table when creating shared libs.

Oct 8 2014, 6:52 AM

Oct 3 2014

rafaelauler closed D5606: [lld] [ELF] Fix bug in ELFFile::createAtoms() that caused lld to mislink musl.
Oct 3 2014, 4:01 PM
rafaelauler added a comment to D5606: [lld] [ELF] Fix bug in ELFFile::createAtoms() that caused lld to mislink musl.

I added a test and committed r219034.

Oct 3 2014, 4:01 PM
rafaelauler retitled D5606: [lld] [ELF] Fix bug in ELFFile::createAtoms() that caused lld to mislink musl from to [lld] [ELF] Fix bug in ELFFile::createAtoms() that caused lld to mislink musl.
Oct 3 2014, 1:18 PM

Oct 2 2014

rafaelauler added a comment to D5571: [lld] [ELF] Fix inclusion of weak symbols in the dynamic symbol table.

Hi Shankar,

Oct 2 2014, 4:43 PM
rafaelauler added a comment to D5585: [lld] [ELF] Implement --export-dynamic/-E.

Hi Shankar,

Oct 2 2014, 1:08 PM
rafaelauler retitled D5585: [lld] [ELF] Implement --export-dynamic/-E from to [lld] [ELF] Implement --export-dynamic/-E.
Oct 2 2014, 12:22 PM
rafaelauler abandoned D5405: [lld] Fixes wrong Twine uses in FileNode::errStr() and in LayoutPass.cpp .
Oct 2 2014, 10:53 AM · lld

Oct 1 2014

rafaelauler retitled D5574: [lld] [ELF] Only mark as DT_NEEDED libs that are strictly necessary from to [lld] [ELF] Only mark as DT_NEEDED libs that are strictly necessary.
Oct 1 2014, 9:53 PM
rafaelauler closed D5573: [lld] [ELF] Never mark the dynamic linker as DT_NEEDED.
Oct 1 2014, 9:04 PM
rafaelauler added a comment to D5573: [lld] [ELF] Never mark the dynamic linker as DT_NEEDED.

Committed r218847.

Oct 1 2014, 9:04 PM
rafaelauler updated the diff for D5573: [lld] [ELF] Never mark the dynamic linker as DT_NEEDED.

Makes sense, since soneeded is a stringmap. Thanks! I updated the patch.

Oct 1 2014, 8:26 PM
rafaelauler retitled D5573: [lld] [ELF] Never mark the dynamic linker as DT_NEEDED from to [lld] [ELF] Never mark the dynamic linker as DT_NEEDED.
Oct 1 2014, 8:01 PM
rafaelauler retitled D5571: [lld] [ELF] Fix inclusion of weak symbols in the dynamic symbol table from to [lld] [ELF] Fix inclusion of weak symbols in the dynamic symbol table.
Oct 1 2014, 7:00 PM
rafaelauler added a comment to D5564: [lld] [ELF] [MIPS] Remove duplicate logic.

Committed r218846.

Oct 1 2014, 6:41 PM
rafaelauler closed D5564: [lld] [ELF] [MIPS] Remove duplicate logic.
Oct 1 2014, 6:40 PM
rafaelauler retitled D5565: [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633 from to [lld] [ELF] [X86_64] Update TODO.rst list wrt r218633.
Oct 1 2014, 2:34 PM
rafaelauler retitled D5564: [lld] [ELF] [MIPS] Remove duplicate logic from to [lld] [ELF] [MIPS] Remove duplicate logic.
Oct 1 2014, 2:22 PM

Sep 29 2014

rafaelauler added a comment to D5505: [lld] [ELF] Support for general dynamic TLS relocations on X86_64.

Committed as r218633.

Sep 29 2014, 3:48 PM · lld
rafaelauler closed D5424: [lld] [ELF] Fix linking when a regular object defines a symbol that is used in a DSO.
Sep 29 2014, 3:48 PM · lld
rafaelauler closed D5403: [lld] Fix buggy Twine storage in ELFLinkingContext::searchLibrary().
Sep 29 2014, 3:38 PM
rafaelauler closed D5505: [lld] [ELF] Support for general dynamic TLS relocations on X86_64.
Sep 29 2014, 3:15 PM · lld
rafaelauler updated the diff for D5505: [lld] [ELF] Support for general dynamic TLS relocations on X86_64.

I have a few minor updates to this patch.

Sep 29 2014, 12:50 PM · lld

Sep 26 2014

rafaelauler updated the diff for D5505: [lld] [ELF] Support for general dynamic TLS relocations on X86_64.

This new version of the patch completely removes the special case for the "tls_get_addr" atom/symbol, since it will be provided by input libraries (usually ld.so). However, some tests depended on tls_get_addr being always defined, independent of inputs. To avoid breaking these tests, this patch adds "--defsym=tls_get_addr=0" to the linker command line in these tests. This patch also updates a "TODO" file that asked to remove tls_get_addr from the output.

Sep 26 2014, 8:03 PM · lld
rafaelauler added a comment to D5505: [lld] [ELF] Support for general dynamic TLS relocations on X86_64.

I'm sorry, I think I was influenced by the previous lld code that always defined _tls_get_addr to be a regular symbol, I'm checking here and I think we don't need to define an atom for __tls_get_addr at all.

Sep 26 2014, 7:36 PM · lld
rafaelauler added a comment to D5505: [lld] [ELF] Support for general dynamic TLS relocations on X86_64.

Sounds reasonable. Since the undefined references for __tls_get_addr are usually not weak by themselves, should we add a special case to the reader to convert them to weak undefines?

Sep 26 2014, 5:32 PM · lld