aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2023-05-18 17:43:14 +0930
committerAlan Modra <amodra@gmail.com>2023-05-18 18:01:49 +0930
commit204d627e83f440dc62871139a688b58c42149f59 (patch)
tree917eb57ca0145236d2fe0c4cc286462243df68af /bfd
parent92240b19576f2b71719b952f150c8a781e6e5398 (diff)
downloadfsf-binutils-gdb-204d627e83f440dc62871139a688b58c42149f59.zip
fsf-binutils-gdb-204d627e83f440dc62871139a688b58c42149f59.tar.gz
fsf-binutils-gdb-204d627e83f440dc62871139a688b58c42149f59.tar.bz2
Re: Add section caches to coff_data_type
Another thing, section target_index is renumbered in coff_compute_section_file_positions and _bfd_xcoff_bfd_final_link. I don't know that there is currently any way that the output bfd section_by_target_index could be populated before this point but clear them out so no one need worry about it. * coffcode.h (coff_compute_section_file_positions): Clear section_by_target_index hash table when changing target_index. (_bfd_xcoff_bfd_final_link): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/coffcode.h3
-rw-r--r--bfd/xcofflink.c2
2 files changed, 5 insertions, 0 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 777515e..2d42982 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -3067,6 +3067,9 @@ coff_compute_section_file_positions (bfd * abfd)
sofar += bfd_coff_scnhsz (abfd);
#endif
+ if (coff_data (abfd)->section_by_target_index)
+ htab_empty (coff_data (abfd)->section_by_target_index);
+
#ifdef COFF_IMAGE_WITH_PE
{
/* PE requires the sections to be in memory order when listed in
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index b57ed21..a277213 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -7076,6 +7076,8 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
/* Reset the section indices after inserting the new
sections. */
+ if (xcoff_data (abfd)->coff.section_by_target_index)
+ htab_empty (xcoff_data (abfd)->coff.section_by_target_index);
indx = 0;
for (o = abfd->sections; o != NULL; o = o->next)
{