[LLD][PATCH] Do not keep STT_FILE symbols in the symbol table
Simon Atanasyan via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 20 11:05:55 PST 2016
Committed at r258331.
Thanks for review.
On Wed, Jan 20, 2016 at 6:09 PM, Rafael EspĂndola
<rafael.espindola at gmail.com> wrote:
> LGTM, just trim the test a bit please. You don't need a body for
> _start and if the bug reproduced with -shared you don't even need
> _start.
>
>
> Thanks,
> Rafael
>
>
> On 20 January 2016 at 09:25, Simon Atanasyan <simon at atanasyan.com> wrote:
>> Hi,
>>
>> Now LLD keeps STT_FILE symbols in the symbol table because
>> `elf2::shouldKeepInSymtab` returns true for them. But if such symbol
>> has an empty name, the LLD crashes.
>>
>> % cat test.s
>> .file ""
>> .globl _start;
>> _start:
>> mov $60, %rax
>> mov $42, %rdi
>> syscall
>> % llvm-mc -filetype=obj -triple=x86_64-unknown-linux test.s -o test.o
>> % lld -flavor gnu test.o
>>
>> The problem is in the `elf2::shouldKeepInSymtab`. STT_FILE symbol has
>> no associated section so the `File.getSection(Sym)` returns null and
>> the LLD crashes on the `Sec->getSectionHdr()->sh_flags` call.
>>
>> The most simple fix is to ignore STT_FILE symbols at all. Attached
>> patch implements that.
>>
>> But maybe we want to keep them for some reasons?
>>
>> --
>> Simon Atanasyan
--
Simon Atanasyan
More information about the llvm-commits
mailing list