Fix ld/418
Richard Sandiford
rsandifo@redhat.com
Fri Oct 8 12:58:00 GMT 2004
More information about the Binutils mailing list
Fri Oct 8 12:58:00 GMT 2004
- Previous message (by thread): MinGW PECOFF dlltool: Revert internal_name patches.
- Next message (by thread): Fix ld/418
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Alan, Alan Modra <amodra@bigpond.net.au> writes: > * elf-bfd.h (struct eh_cie_fde): Add need_relative and > need_lsda_relative. > * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Set > need_relative or need_lsda_relative if we are processing an > offset for a reloc on a FDE initial loc or LSDA field > respectively. > (_bfd_elf_write_section_eh_frame): Test need_relative and > need_lsda_relative in place of corresponding make_* field > when deciding to use pc-relative encodings. > > BTW, I haven't tested this very well yet, just binutils testsuite runs > and checking that this cures the testcase. I intend to build gcc and > glibc overnight, and verify that it doesn't cause regressions before > committing. Sorry if I'm duplicating another report, but this patch breaks the frame info on MIPS targets such as mips-sgi-irix6.5. need_lsda_relative is only set for FDEs: /* If converting LSDA pointers to DW_EH_PE_pcrel, there will be no need for run-time relocation against LSDA field. */ if (sec_info->entry[mid].make_lsda_relative && ! sec_info->entry[mid].cie && (offset == (sec_info->entry[mid].offset + 8 + sec_info->entry[mid].lsda_offset))) { sec_info->entry[mid].need_lsda_relative = 1; return (bfd_vma) -2; } and never for CIEs. We'll therefore not update the CIE LSDA encoding to match the new pc-relative LSDA fields. You can duplicate this by configuring for mips-sgi-irix6.5 and doing: ./gas/as-new foo.s -o foo.o ./ld/ld-new foo.o -o foo.so -shared ./binutils/readelf -wf foo.so 00000000 00000018 00000000 CIE Version: 1 Augmentation: "zPL" Code alignment factor: 1 Data alignment factor: 4 Return address column: 31 Augmentation data: 00 00 00 00 00 00 ^^ DW_EH_absptr, should be DW_EH_pcrel DW_CFA_def_cfa: r29 ofs 0 DW_CFA_nop DW_CFA_nop 0000001c 00000028 00000020 FDE cie=00000000 pc=5ffe04f0..5ffe05cc Augmentation data: 00 00 00 1b ^^^^^^^^^^^ now PC-relative DW_CFA_advance_loc: 4 to 5ffe04f4 DW_CFA_def_cfa_offset: 64 DW_CFA_advance_loc: 16 to 5ffe0504 DW_CFA_offset_extended_sf: r16 at cfa-32 DW_CFA_offset_extended_sf: r28 at cfa-24 DW_CFA_offset_extended_sf: r30 at cfa-16 DW_CFA_offset_extended_sf: r31 at cfa-8 DW_CFA_advance_loc: 4 to 5ffe0508 DW_CFA_def_cfa: r30 ofs 64 DW_CFA_nop DW_CFA_nop DW_CFA_nop Richard -------------- next part -------------- A non-text attachment was scrubbed... Name: foo.s Type: application/octet-stream Size: 2646 bytes Desc: not available URL: <https://sourceware.org/pipermail/binutils/attachments/20041008/30a81acc/attachment.obj>
- Previous message (by thread): MinGW PECOFF dlltool: Revert internal_name patches.
- Next message (by thread): Fix ld/418
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list