18e04883d0
* elf-bfd.h (eh_cie_fde): Add personality_offset and make_per_encoding_relative to the CIE structure. Add a padding field. * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Use 0x70 rather than 0xf0 when masking out the base address encoding Record the offset of personality data from the start of the CIE. Remove a repeated elf_backend_can_make_relative_eh_frame check. (find_merged_cie): Take an info argument. If the personality binds locally, try converting an absolute personality into a local one. (_bfd_elf_discard_section_eh_frame): Use 0x70 rather than 0xf0 when masking out the base address encoding. Update the call to find_merged_cie. (_bfd_elf_eh_frame_section_offset): Discard relocations against the personality data if we are converting into PC-relative form. (_bfd_elf_write_section_eh_frame): Use 0x70 rather than 0xf0 when masking out the base address encoding. Handle make_per_encoding_relative. ld/testsuite/ * ld-mips-elf/eh-frame5.s, ld-mips-elf/eh-frame5.ld, ld-mips-elf/eh-frame5.d: New test. * ld-mips-elf/mips-elf.exp: Run it.
19 lines
337 B
Plaintext
19 lines
337 B
Plaintext
SECTIONS
|
|
{
|
|
. = 0;
|
|
.reginfo : { *(.reginfo) }
|
|
.dynamic : { *(.dynamic) }
|
|
.dynsym : { *(.dynsym) }
|
|
.dynstr : { *(.dynstr) }
|
|
.rel.dyn : { *(.rel.dyn) }
|
|
. = 0x800;
|
|
.text : { *(.text) }
|
|
. = 0xc00;
|
|
.eh_frame : { *(.eh_frame) }
|
|
. = 0x10000;
|
|
.data : { *(.data) }
|
|
. = 0x10400;
|
|
_gp = . + 0x7ff0;
|
|
.got : { *(.got) }
|
|
}
|