http://sourceware.org/bugzilla/show_bug.cgi?id=14727
Bug #: 14727 Summary: --gc-sections deletes section referenced from .eh_frame Product: binutils Version: 2.24 (HEAD) Status: NEW Severity: normal Priority: P2 Component: gold AssignedTo: i...@airs.com ReportedBy: amo...@gmail.com CC: ccout...@google.com Classification: Unclassified I see large numbers of failures in the gcc testsuite when ppc32 libstdc++ is linked with gold. These are all due to the unwinder getting a segfault when trying to execute a personality function at address 0x7f454c46. ppc32 uses an eh_frame encoding of 0x9b, DW_EH_PE_indirect | DW_EH_PE_pcrel | DW_EH_PE_sdata4 for the 'P' augmentation, ie. the personality function. So the word (four bytes) following the encoding has the relative address of a word containing the personality function address. In relocatable object files we have a section in a comdat group .sdata.DW.ref.__gxx_personality_v0 containing a word with a relocation against __gxx_personality_v0, the actual personality function. A weak hidden symbol, DW.ref.__gxx_personality_v0 is defined on this word. The .eh_frame 'P' augmentation value mentioned above references DW.ref.__gxx_personality_v0. However, when --gc-sections is enabled *all* .sdata.DW.ref.__gxx_personality_v0 sections are deleted, resulting in DW.ref.__gxx_personality_v0 getting a value of zero, and the personality function address being loaded from relative address zero. In a shared object this is the ELF magic number or 0x7f454c46. -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils