X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf-eh-frame.c;h=7783b087e4d947b12d91c469fdd36bcf4fb2347f;hb=da44f4e5464f82dec79eb5885961c6466dd3bf6a;hp=0f0a5635253e41aafe0b6930b7ec73dc6dc94c92;hpb=7f85237141c02e3989311cbaca19038c7c3d5b2c;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index 0f0a563525..7783b087e4 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -452,18 +452,6 @@ make_pc_relative (unsigned char encoding, unsigned int ptr_size) return encoding | DW_EH_PE_pcrel; } -/* Called before calling _bfd_elf_parse_eh_frame on every input bfd's - .eh_frame section. */ - -void -_bfd_elf_begin_eh_frame_parsing (struct bfd_link_info *info) -{ - struct eh_frame_hdr_info *hdr_info; - - hdr_info = &elf_hash_table (info)->eh_info; - hdr_info->merge_cies = !info->relocatable; -} - /* Try to parse .eh_frame section SEC, which belongs to ABFD. Store the information in the section's sec_info field on success. COOKIE describes the relocations in SEC. */ @@ -494,8 +482,6 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, htab = elf_hash_table (info); hdr_info = &htab->eh_info; - if (hdr_info->parsed_eh_frames) - return; if (sec->size == 0 || sec->sec_info_type != SEC_INFO_TYPE_NONE) @@ -777,7 +763,8 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, buf += initial_insn_length; ENSURE_NO_RELOCS (buf); - if (hdr_info->merge_cies) + if (!info->relocatable) + /* Keep info for merging cies. */ this_inf->u.cie.u.full_cie = cie; this_inf->u.cie.per_encoding_relative = (cie->per_encoding & 0x70) == DW_EH_PE_pcrel; @@ -911,8 +898,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, elf_section_data (sec)->sec_info = sec_info; sec->sec_info_type = SEC_INFO_TYPE_EH_FRAME; - if (hdr_info->merge_cies) + if (!info->relocatable) { + /* Keep info for merging cies. */ sec_info->cies = local_cies; local_cies = NULL; } @@ -933,17 +921,6 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, #undef REQUIRE } -/* Finish a pass over all .eh_frame sections. */ - -void -_bfd_elf_end_eh_frame_parsing (struct bfd_link_info *info) -{ - struct eh_frame_hdr_info *hdr_info; - - hdr_info = &elf_hash_table (info)->eh_info; - hdr_info->parsed_eh_frames = TRUE; -} - /* Mark all relocations against CIE or FDE ENT, which occurs in .eh_frame section SEC. COOKIE describes the relocations in SEC; its "rel" field can be changed freely. */