From c94053440e29421dd8846530da73f09c9ede2e0f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 23 Sep 2020 14:55:39 +0930 Subject: PR26655, Power10 libstdc++.so R_PPC64_NONE dynamic relocs Some of the powerpc64 code editing functions are better run after dynamic symbols have stabilised in order to make proper decisions based on SYMBOL_REFERENCES_LOCAL. The dynamic symbols are processed early in bfd_elf_size_dynamic_sections, before the backend always_size_sections function is called. One function, ppc64_elf_tls_setup must run before bfd_elf_size_dynamic_sections because it changes dynamic symbols. ppc64_elf_edit_opd and ppc64_elf_inline_plt can run early or late, I think. ppc64_elf_tls_optimize and ppc64_elf_edit_toc are better run later. So this patch arranges to call some edit functions later via always_size_sections. PR 26655 bfd/ * elf64-ppc.c (ppc64_elf_func_desc_adjust): Rename to.. (ppc64_elf_edit): Call params->edit. (ppc64_elf_tls_setup): Don't call _bfd_elf_tls_setup. Return a bfd_boolean. * elf64-ppc.h (struct ppc64_elf_params): Add "edit". (ppc64_elf_tls_setup): Update declaration. ld/ * emultempl/ppc64elf.em (params): Add ppc_edit. (ppc_before_allocation): Split off some edit functions to.. (ppc_edit): ..this, new function. --- ld/emultempl/ppc64elf.em | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'ld/emultempl') diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em index 42b9bd4..2df5a21 100644 --- a/ld/emultempl/ppc64elf.em +++ b/ld/emultempl/ppc64elf.em @@ -32,10 +32,12 @@ fragment <tls_sec != NULL && !no_tls_opt) { /* Size the sections. This is premature, but we want to know the @@ -323,8 +337,6 @@ ppc_before_allocation (void) sort_toc_sections (&toc_os->children, NULL, NULL); } } - - gld${EMULATION_NAME}_before_allocation (); } struct hook_stub_info -- cgit v1.1