From 57a7219709707bdaba1d8a47046c0f28cf6e064e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 31 Dec 2001 11:49:10 +0000 Subject: [PATCH] * 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. --- bfd/ChangeLog | 8 ++++++++ bfd/elf-eh-frame.c | 3 +++ bfd/elflink.h | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a48ac88f652..9b54028150d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2001-12-31 Jakub Jelinek + + * 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 * 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 d39e549369b..cc653f7c81e 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 00872600f1b..9a3bfd3885b 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"); -- 2.30.2