* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build
search table if some FDE is DW_EH_PE_aligned encoded either. (_bfd_elf_write_section_eh_frame): Handle terminating FDE specially.
This commit is contained in:
parent
52efde73b9
commit
af40ce3c79
@ -1,3 +1,9 @@
|
||||
2002-04-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build
|
||||
search table if some FDE is DW_EH_PE_aligned encoded either.
|
||||
(_bfd_elf_write_section_eh_frame): Handle terminating FDE specially.
|
||||
|
||||
2002-04-22 Richard Smith <richard@ex-parrot.com>
|
||||
Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -636,8 +636,9 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
else
|
||||
{
|
||||
if (info->shared
|
||||
&& (cie.fde_encoding & 0xf0) == DW_EH_PE_absptr
|
||||
&& cie.make_relative == 0)
|
||||
&& (((cie.fde_encoding & 0xf0) == DW_EH_PE_absptr
|
||||
&& cie.make_relative == 0)
|
||||
|| (cie.fde_encoding & 0xf0) == DW_EH_PE_aligned))
|
||||
{
|
||||
/* If shared library uses absolute pointers
|
||||
which we cannot turn into PC relative,
|
||||
@ -1026,7 +1027,7 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (sec_info->entry[i].size > 4)
|
||||
{
|
||||
/* FDE */
|
||||
bfd_vma value = 0, address;
|
||||
@ -1099,6 +1100,9 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
/* Terminating FDE must be at the end of .eh_frame section only. */
|
||||
BFD_ASSERT (i == sec_info->count - 1);
|
||||
|
||||
BFD_ASSERT (p == contents + sec_info->entry[i].new_offset);
|
||||
memmove (p, contents + sec_info->entry[i].offset,
|
||||
|
Loading…
Reference in New Issue
Block a user