184d07da89
PR ld/5526 * elf-bfd.h (eh_cie_fde): Add u.cie.u.full_cie and u.cie.merged fields. Rename u.cie.u.merged to u.cie.u.merged_with. (eh_frame_sec_info): Add a cies field. (eh_frame_hdr_info): Add a merge_cies field. * elf-eh-frame.c (cie): Add a reloc_index member to the personality union. (_bfd_elf_begin_eh_frame_parsing): Set hdr_info->merge_cies instead of hdr_info->cies. (_bfd_elf_parse_eh_frame): Remove tmp_cie. Ccreate an array of cie structures in all cases and use it instead of extended_cies. If merging, store the cie array in sec_info->cies and point each CIE's eh_fde_cie at the associated element. Do not try to calculate the value of the personality routine here; record the offset of the relocation instead. Do not merge CIEs here. (_bfd_elf_end_eh_frame_parsing): Do not free hdr_info->cies here... (_bfd_elf_discard_section_eh_frame_hdr): ...do it here instead. (_bfd_elf_gc_mark_fdes): Mark the original (unmerged) CIE. (find_merged_cie): New function. (_bfd_elf_gc_mark_fdes): Use it. Free sec_info->cies. ld/testsuite/ PR ld/5526 * ld-elf/eh6.s, ld-elf/eh6.d: New test. |
||
---|---|---|
.. | ||
config | ||
ld-alpha | ||
ld-arm | ||
ld-auto-import | ||
ld-bootstrap | ||
ld-cdtest | ||
ld-checks | ||
ld-cris | ||
ld-crx | ||
ld-cygwin | ||
ld-d10v | ||
ld-discard | ||
ld-elf | ||
ld-elfcomm | ||
ld-elfvers | ||
ld-elfvsb | ||
ld-elfweak | ||
ld-fastcall | ||
ld-frv | ||
ld-h8300 | ||
ld-i386 | ||
ld-ia64 | ||
ld-libs | ||
ld-linkonce | ||
ld-m68hc11 | ||
ld-m68k | ||
ld-maxq | ||
ld-mep | ||
ld-mips-elf | ||
ld-mmix | ||
ld-mn10300 | ||
ld-pe | ||
ld-pie | ||
ld-powerpc | ||
ld-s390 | ||
ld-scripts | ||
ld-selective | ||
ld-sh | ||
ld-shared | ||
ld-sparc | ||
ld-spu | ||
ld-srec | ||
ld-undefined | ||
ld-v850 | ||
ld-versados | ||
ld-vxworks | ||
ld-x86-64 | ||
ld-xc16x | ||
ld-xstormy16 | ||
ld-xtensa | ||
lib | ||
ChangeLog | ||
ChangeLog-2004 | ||
ChangeLog-2005 | ||
ChangeLog-2006 | ||
ChangeLog-2007 | ||
ChangeLog-9303 |