fix frv eh_frame relaxation bug

Alexandre Oliva aoliva@redhat.com
Tue May 8 06:08:00 GMT 2007


elf-eh-frame.c removes CIEs that are redundant with previous CIEs, and
this requires the relocation for __gxx_personality_v0 to be dropped as
well.

However, the relocation code failed to take into account the
possibility of this kind of relaxation, and used the result of
_bfd_elf_section_offset() without testing whether it's -1, which
indicates that (re)location is to be dropped entirely because the
underlying construct was removed.

AFAICT we've already taken care of ensuring it would never be -2
(cross-segment relocations don't work), so this should be good enough.

I'm checking it in.  Tested by building a functional libstdc++.so.6
(EH wouldn't work at all before the patch.)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: bfd-frv-eh-frame-relax-relocs.patch
Type: text/x-patch
Size: 5593 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20070508/79082c6d/attachment.bin>
-------------- next part --------------

-- 
Alexandre Oliva         http://www.lsd.ic.unicamp.br/~oliva/
FSF Latin America Board Member         http://www.fsfla.org/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}


More information about the Binutils mailing list