Re: Add section caches to coff_data_type
authorAlan Modra <amodra@gmail.com>
Thu, 18 May 2023 01:40:38 +0000 (11:10 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 18 May 2023 02:51:40 +0000 (12:21 +0930)
commit0cc8cc5e6f82b8d3d8e3803c6f7f5e63f0c866ad
tree804b289fe94a7a6f0653dd898b03069f6fec47ee
parent4cb88cfae84363cef6ed59d9d458a20ff2e1e893
Re: Add section caches to coff_data_type

Commit 0e759f232b6d regressed these tests:
rs6000-aix7.2  +FAIL: Garbage collection test 1 (32-bit)
rs6000-aix7.2  +FAIL: Garbage collection test 1 (64-bit)
rs6000-aix7.2  +FAIL: Glink test 1 (32-bit)
rs6000-aix7.2  +FAIL: Glink test 1 (64-bit)

Investigation showed segfaults in coff_section_from_bfd_index called
by xcoff_write_global_symbol due to the hash table pointer being
NULL.  Well, yes, the hash table isn't initialised for the output bfd.
mkobject_hook is the wrong place to do that.

* coffcode.h: Revert 0e759f232b6d changes.
* peicode.h: Likewise.
* coff-x86_64.c (htab_hash_section_index, htab_eq_section_index):
Moved here from coffcode.h.
(coff_amd64_rtype_to_howto): Create section_by_index htab.
* coffgen.c (htab_hash_section_target_index),
(htab_eq_section_target_index): Moved here from coffcode.h.
(coff_section_from_bfd_index): Create section_by_target_index
htab.  Stash newly created sections in htab.
bfd/coff-x86_64.c
bfd/coffcode.h
bfd/coffgen.c
bfd/peicode.h