summaryrefslogtreecommitdiff
path: root/bfd/ChangeLog
diff options
context:
space:
mode:
authorCl?ment Chigot <clement.chigot@atos.net>2022-04-20 15:11:47 +0100
committerNick Clifton <nickc@redhat.com>2022-04-20 15:11:47 +0100
commit2d23f9656c3fd92335683188d26db198fe2ed3ec (patch)
treed3c564dca842f9bbd216e2e05c3f03ac86eadf95 /bfd/ChangeLog
parent1876a542175ef438d6aaafeccb479024994b938d (diff)
xcoff: implement linker relaxation
bfd/ChangeLog: * coff-rs6000.c (xcoff_reloc_type_noop): Add info argument. (xcoff_reloc_type_fail): Likewise. (xcoff_reloc_type_pos): Likewise. (xcoff_reloc_type_neg): Likewise. (xcoff_reloc_type_rel): Likewise. (xcoff_reloc_type_toc): Likewise. (xcoff_reloc_type_ba): Likewise. (xcoff_reloc_type_crel): Likewise. (xcoff_reloc_type_tls): Likewise. (xcoff_reloc_type_br): Add stub handler. (xcoff_ppc_relocate_section): Add info to xcoff_calculate_relocation. (xcoff_stub_indirect_call_code): New constant. (xcoff_stub_shared_call_code): Likewise. (bfd_xcoff_backend_data): Add stub code fields. (bfd_pmac_xcoff_backend_data): Likewise. * coff64-rs6000.c (xcoff64_reloc_type_br): Add stub handler. (xcoff64_ppc_relocate_section): Add info to xcoff64_calculate_relocation. (xcoff64_stub_indirect_call_code): New constant. (xcoff64_stub_shared_call_code): Likewise. (bfd_xcoff_backend_data): Add stub code fields. (bfd_xcoff_aix5_backend_data): Likewise. * libxcoff.h (struct xcoff_backend_data_rec): Add stub fields. (bfd_xcoff_stub_indirect_call_code): New define. (bfd_xcoff_stub_indirect_call_size): New define. (bfd_xcoff_stub_shared_call_code): New define. (bfd_xcoff_stub_shared_call_size): New define. (xcoff_reloc_function): Add info argument. (enum xcoff_stub_type): New enum. (struct xcoff_stub_hash_entry): New structure. * xcofflink.c (struct xcoff_link_hash_table): Add stub hash table and params fields. (xcoff_stub_hash_entry): New define. (xcoff_stub_hash_lookup): New define. (stub_hash_newfunc): New function. (_bfd_xcoff_bfd_link_hash_table_free): Free the new stub hash table. (_bfd_xcoff_bfd_link_hash_table_create): Create the new stub hash table. (xcoff_link_add_symbols): Save rawsize for XTY_SD. (bfd_xcoff_link_init): New function. (xcoff_stub_csect_name): New function. (xcoff_stub_get_csect_in_range): New function. (xcoff_stub_name): New function. (bfd_xcoff_get_stub_entry): New function. (bfd_xcoff_type_of_stub): New function. (xcoff_add_stub): New function. (xcoff_build_one_stub): New function. (bfd_xcoff_size_stubs): New function. (bfd_xcoff_build_stubs): New function. (xcoff_stub_create_relocations): New function. (xcoff_link_input_bfd): Adapt relocations to stub. (xcoff_write_global_symbol): Adapt to new TOC entries generated for stubs. (_bfd_xcoff_bfd_final_link): Handle stub file. * xcofflink.h (struct bfd_xcoff_link_params): New structure. ld/ChangeLog: * emultempl/aix.em (params): New variable. (stub_file): New variable. (xcoff_add_stub_section): New function. (xcoff_layout_sections_again): New function (hook_in_stub): New function. (_after_allocation): Add stub creation. (_create_output_section_statements): Allocate stub file and pass params to backend.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r--bfd/ChangeLog60
1 files changed, 60 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 06c44a3d15..957d8fd556 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,65 @@
2022-04-20 Clément Chigot <clement.chigot@atos.net>
+ * coff-rs6000.c (xcoff_reloc_type_noop): Add info argument.
+ (xcoff_reloc_type_fail): Likewise.
+ (xcoff_reloc_type_pos): Likewise.
+ (xcoff_reloc_type_neg): Likewise.
+ (xcoff_reloc_type_rel): Likewise.
+ (xcoff_reloc_type_toc): Likewise.
+ (xcoff_reloc_type_ba): Likewise.
+ (xcoff_reloc_type_crel): Likewise.
+ (xcoff_reloc_type_tls): Likewise.
+ (xcoff_reloc_type_br): Add stub handler.
+ (xcoff_ppc_relocate_section): Add info to
+ xcoff_calculate_relocation.
+ (xcoff_stub_indirect_call_code): New constant.
+ (xcoff_stub_shared_call_code): Likewise.
+ (bfd_xcoff_backend_data): Add stub code fields.
+ (bfd_pmac_xcoff_backend_data): Likewise.
+ * coff64-rs6000.c (xcoff64_reloc_type_br): Add stub handler.
+ (xcoff64_ppc_relocate_section): Add info to
+ xcoff64_calculate_relocation.
+ (xcoff64_stub_indirect_call_code): New constant.
+ (xcoff64_stub_shared_call_code): Likewise.
+ (bfd_xcoff_backend_data): Add stub code fields.
+ (bfd_xcoff_aix5_backend_data): Likewise.
+ * libxcoff.h (struct xcoff_backend_data_rec): Add stub fields.
+ (bfd_xcoff_stub_indirect_call_code): New define.
+ (bfd_xcoff_stub_indirect_call_size): New define.
+ (bfd_xcoff_stub_shared_call_code): New define.
+ (bfd_xcoff_stub_shared_call_size): New define.
+ (xcoff_reloc_function): Add info argument.
+ (enum xcoff_stub_type): New enum.
+ (struct xcoff_stub_hash_entry): New structure.
+ * xcofflink.c (struct xcoff_link_hash_table): Add stub hash
+ table and params fields.
+ (xcoff_stub_hash_entry): New define.
+ (xcoff_stub_hash_lookup): New define.
+ (stub_hash_newfunc): New function.
+ (_bfd_xcoff_bfd_link_hash_table_free): Free the new stub hash
+ table.
+ (_bfd_xcoff_bfd_link_hash_table_create): Create the new stub
+ hash table.
+ (xcoff_link_add_symbols): Save rawsize for XTY_SD.
+ (bfd_xcoff_link_init): New function.
+ (xcoff_stub_csect_name): New function.
+ (xcoff_stub_get_csect_in_range): New function.
+ (xcoff_stub_name): New function.
+ (bfd_xcoff_get_stub_entry): New function.
+ (bfd_xcoff_type_of_stub): New function.
+ (xcoff_add_stub): New function.
+ (xcoff_build_one_stub): New function.
+ (bfd_xcoff_size_stubs): New function.
+ (bfd_xcoff_build_stubs): New function.
+ (xcoff_stub_create_relocations): New function.
+ (xcoff_link_input_bfd): Adapt relocations to stub.
+ (xcoff_write_global_symbol): Adapt to new TOC entries generated
+ for stubs.
+ (_bfd_xcoff_bfd_final_link): Handle stub file.
+ * xcofflink.h (struct bfd_xcoff_link_params): New structure.
+
+2022-04-20 Clément Chigot <clement.chigot@atos.net>
+
* coff-rs6000.c (_bfd_xcoff_put_ldsymbol_name): Write len in
ldinfo->strings instead of directly in the output_bfd.
* coff64-rs6000.c (_bfd_xcoff64_put_ldsymbol_name): Likewise.