aboutsummaryrefslogtreecommitdiff
path: root/ld/emultempl/ppc64elf.em
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2010-03-14 07:05:36 +0000
committerAlan Modra <amodra@gmail.com>2010-03-14 07:05:36 +0000
commit70cc837dbe07f3f50b43e04c24af0ccc75290383 (patch)
treef5e0ee77611f10bbcd0f4df1fe8e13dca36992d0 /ld/emultempl/ppc64elf.em
parent005c61b77b811080b8a4dd2f26b1278a099092f7 (diff)
downloadgdb-70cc837dbe07f3f50b43e04c24af0ccc75290383.zip
gdb-70cc837dbe07f3f50b43e04c24af0ccc75290383.tar.gz
gdb-70cc837dbe07f3f50b43e04c24af0ccc75290383.tar.bz2
bfd/
PR ld/11378 * elf64-ppc.h (ppc64_elf_check_init_fini): Declare. * elf64-ppc.c (call_check_done): Define. (ppc64_elf_add_symbol_hook): Substitute bfd_get_section_name macro. (ppc64_elf_check_relocs, ppc64_elf_size_dynamic_sections): Likewise. (ppc64_elf_finish_multitoc_partition): Remove unnecessary check. (toc_adjusting_stub_needed): Use call_check_done rather than toc_off. Simplify return logic. Iterate over all .init and .fini fragments by recursion. Set makes_toc_func_call here.. (ppc64_elf_next_input_section): ..rather than here. (check_pasted_section, ppc64_elf_check_init_fini): New functions. ld/ PR ld/11378 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_after_allocation): Call ppc64_elf_check_init_fini and warn if .init/.fini use different TOCs.
Diffstat (limited to 'ld/emultempl/ppc64elf.em')
-rw-r--r--ld/emultempl/ppc64elf.em3
1 files changed, 3 insertions, 0 deletions
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
index 2e6c805..0d9dba9 100644
--- a/ld/emultempl/ppc64elf.em
+++ b/ld/emultempl/ppc64elf.em
@@ -346,6 +346,9 @@ gld${EMULATION_NAME}_after_allocation (void)
lang_for_each_statement (build_section_lists);
+ if (!ppc64_elf_check_init_fini (&link_info))
+ einfo ("%P: .init/.fini fragments use differing TOC pointers\n");
+
/* Call into the BFD backend to do the real work. */
if (!ppc64_elf_size_stubs (&link_info, group_size))
einfo ("%X%P: can not size stub section: %E\n");