Undo a bad change. Applying part of upstream git e5034e59 isn't a good idea. diff -urp binutils-aldy/bfd/elf64-ppc.c binutils-alan1/bfd/elf64-ppc.c --- binutils-aldy/bfd/elf64-ppc.c 2014-07-31 12:21:34.755773236 +0930 +++ binutils-alan1/bfd/elf64-ppc.c 2014-07-31 13:59:20.083643016 +0930 @@ -97,7 +97,7 @@ static bfd_vma opd_entry_value #define elf_backend_copy_indirect_symbol ppc64_elf_copy_indirect_symbol #define elf_backend_add_symbol_hook ppc64_elf_add_symbol_hook #define elf_backend_check_directives ppc64_elf_process_dot_syms -#define elf_backend_notice_as_needed ppc64_elf_notice_as_needed +#define elf_backend_as_needed_cleanup ppc64_elf_as_needed_cleanup #define elf_backend_archive_symbol_lookup ppc64_elf_archive_symbol_lookup #define elf_backend_check_relocs ppc64_elf_check_relocs #define elf_backend_gc_keep ppc64_elf_gc_keep @@ -4974,22 +4974,17 @@ ppc64_elf_process_dot_syms (bfd *ibfd, s /* Undo hash table changes when an --as-needed input file is determined not to be needed. */ -__attribute__((unused)) static bfd_boolean -ppc64_elf_notice_as_needed (bfd *ibfd, - struct bfd_link_info *info, - enum notice_asneeded_action act) +ppc64_elf_as_needed_cleanup (bfd *ibfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info) { - if (act == notice_not_needed) - { - struct ppc_link_hash_table *htab = ppc_hash_table (info); + struct ppc_link_hash_table *htab = ppc_hash_table (info); - if (htab == NULL) - return FALSE; + if (htab == NULL) + return FALSE; - htab->dot_syms = NULL; - } - return _bfd_elf_notice_as_needed (ibfd, info, act); + htab->dot_syms = NULL; + return TRUE; } /* If --just-symbols against a final linked binary, then assume we need diff -urp binutils-aldy/bfd/elf-bfd.h binutils-alan1/bfd/elf-bfd.h --- binutils-aldy/bfd/elf-bfd.h 2014-07-31 10:57:17.934601544 +0930 +++ binutils-alan1/bfd/elf-bfd.h 2014-07-31 13:58:00.966838188 +0930 @@ -2158,8 +2158,6 @@ extern bfd_boolean _bfd_elf_default_relo extern bfd_boolean _bfd_elf_relocs_compatible (const bfd_target *, const bfd_target *); -extern bfd_boolean _bfd_elf_notice_as_needed -(bfd *, struct bfd_link_info *, enum notice_asneeded_action); extern struct elf_link_hash_entry *_bfd_elf_archive_symbol_lookup (bfd *, struct bfd_link_info *, const char *); diff -urp binutils-aldy/bfd/elfxx-target.h binutils-alan1/bfd/elfxx-target.h --- binutils-aldy/bfd/elfxx-target.h 2014-07-31 10:57:23.822364217 +0930 +++ binutils-alan1/bfd/elfxx-target.h 2014-07-31 13:57:41.651618265 +0930 @@ -424,9 +424,6 @@ #ifndef elf_backend_check_directives #define elf_backend_check_directives 0 #endif -#ifndef elf_backend_notice_as_needed -#define elf_backend_notice_as_needed _bfd_elf_notice_as_needed -#endif #ifndef elf_backend_as_needed_cleanup #define elf_backend_as_needed_cleanup 0 #endif