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

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 23 08:32:30 PDT 2015


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).


>
> 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 <javascript:;>
> 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/4266aea5/attachment.html>


More information about the llvm-commits mailing list