diff options
author | Alan Modra <amodra@gmail.com> | 2010-03-14 07:05:36 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2010-03-14 07:05:36 +0000 |
commit | 70cc837dbe07f3f50b43e04c24af0ccc75290383 (patch) | |
tree | f5e0ee77611f10bbcd0f4df1fe8e13dca36992d0 /ld | |
parent | 005c61b77b811080b8a4dd2f26b1278a099092f7 (diff) | |
download | gdb-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')
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/emultempl/ppc64elf.em | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 9905b0a..61f5081 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2010-03-14 Alan Modra <amodra@gmail.com> + + 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. + 2010-03-11 George Gensure <werkt0@gmail.com> PR ld/11367 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"); |