diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/elf-eh-frame.c | 3 | ||||
-rw-r--r-- | bfd/elflink.h | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a48ac88..9b54028 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2001-12-31 Jakub Jelinek <jakub@redhat.com> + + * elflink.h (elf_bfd_final_link): Check if dynobj is not NULL + before looking for .eh_frame_hdr section. + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame_hdr): If + .eh_frame_hdr section is being stripped from output, don't do + anything. + 2001-12-27 Tom Rix <trix@redhat.com> * coff-rs6000.c (xcoff_generate_rtinit): Clean data_buffer alloc/free. diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index d39e549..cc653f7 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -1149,6 +1149,9 @@ _bfd_elf_write_section_eh_frame_hdr (abfd, sec) == ELF_INFO_TYPE_EH_FRAME_HDR); hdr_info = (struct eh_frame_hdr_info *) elf_section_data (sec)->sec_info; + if (hdr_info->strip) + return true; + size = EH_FRAME_HDR_SIZE; if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count) size += 4 + hdr_info->fde_count * 8; diff --git a/bfd/elflink.h b/bfd/elflink.h index 0087260..9a3bfd3 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -5670,7 +5670,7 @@ elf_bfd_final_link (abfd, info) goto error_return; } - if (info->eh_frame_hdr) + if (info->eh_frame_hdr && elf_hash_table (info)->dynobj) { o = bfd_get_section_by_name (elf_hash_table (info)->dynobj, ".eh_frame_hdr"); |