[lld] r251068 - ELF2: Keep .eh_frame even if they are not live.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 23 09:08:28 PDT 2015


On Fri, Oct 23, 2015 at 8:32 AM, Saleem Abdulrasool <compnerd at compnerd.org>
wrote:

> On Thursday, October 22, 2015, Rui Ueyama via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: ruiu
>> Date: Thu Oct 22 16:42:05 2015
>> New Revision: 251068
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=251068&view=rev
>> Log:
>> ELF2: Keep .eh_frame even if they are not live.
>>
>> .eh_frame sections need to be preserved if they refer to live sections.
>> So the liveness relation is reverse for eh_frame sections. For now,
>> we simply preserve all .eh_frame sections. Thanks Rafael for pointing
>> this out. .jcr are kept for the same reason.
>>
>> Modified:
>>     lld/trunk/ELF/MarkLive.cpp
>>     lld/trunk/test/elf2/gc-sections.s
>>
>> Modified: lld/trunk/ELF/MarkLive.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/MarkLive.cpp?rev=251068&r1=251067&r2=251068&view=diff
>>
>> ==============================================================================
>> --- lld/trunk/ELF/MarkLive.cpp (original)
>> +++ lld/trunk/ELF/MarkLive.cpp Thu Oct 22 16:42:05 2015
>> @@ -85,7 +85,8 @@ template <class ELFT> static bool isRese
>>      return true;
>>    default:
>>      StringRef S = Sec->getSectionName();
>> -    return S.startswith(".init") || S.startswith(".fini");
>> +    return S.startswith(".init") || S.startswith(".fini") ||
>> +           S.startswith(".jcr") || S == ".eh_frame";
>>    }
>>  }
>>
>>
> The same should apply to .ARM.extab and .ARM.exidx for the unwind tables
> under EHABI for ARM (ELF).
>

Currently exception handler information is just copied to output, and it
wouldn't work because they lack the header and are not sorted. We need to
fix them. I will take care of ARM when I do that.


>
>
>>
>> Modified: lld/trunk/test/elf2/gc-sections.s
>> URL:
>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/gc-sections.s?rev=251068&r1=251067&r2=251068&view=diff
>>
>> ==============================================================================
>> --- lld/trunk/test/elf2/gc-sections.s (original)
>> +++ lld/trunk/test/elf2/gc-sections.s Thu Oct 22 16:42:05 2015
>> @@ -9,6 +9,7 @@
>>  # RUN: llvm-readobj -sections -symbols %t2 | FileCheck -check-prefix=GC2
>> %s
>>
>>  # NOGC: Name: .text
>> +# NOGC: Name: .eh_frame
>>  # NOGC: Name: .init
>>  # NOGC: Name: .fini
>>  # NOGC: Name: a
>> @@ -21,6 +22,7 @@
>>  # NOGC: Name: d
>>
>>  # GC1:     Name: .text
>> +# GC1:     Name: .eh_frame
>>  # GC1:     Name: .init
>>  # GC1:     Name: .fini
>>  # GC1:     Name: a
>> @@ -33,6 +35,7 @@
>>  # GC1-NOT: Name: d
>>
>>  # GC2:     Name: .text
>> +# GC2:     Name: .eh_frame
>>  # GC2:     Name: .init
>>  # GC2:     Name: .fini
>>  # GC2:     Name: a
>> @@ -82,3 +85,6 @@ y:
>>
>>  .section .preinit_array,"aw", at preinit_array
>>    .quad 0
>> +
>> +.section .eh_frame,"aw", at progbits
>> +  .quad 0
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
> --
> Saleem Abdulrasool
> compnerd (at) compnerd (dot) org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151023/e43f71b4/attachment.html>


More information about the llvm-commits mailing list