This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
gdb and binutils branch master updated. c7e17e05b647f6233c2062d038e5421686217816
- From: amodra at sourceware dot org
- To: binutils-cvs at sourceware dot org
- Date: 13 Jan 2014 05:17:17 -0000
- Subject: gdb and binutils branch master updated. c7e17e05b647f6233c2062d038e5421686217816
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".
The branch, master has been updated
via c7e17e05b647f6233c2062d038e5421686217816 (commit)
from 1a4416c4c7f02a73652429f4e8e8e966f55e3e8b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c7e17e05b647f6233c2062d038e5421686217816
commit c7e17e05b647f6233c2062d038e5421686217816
Author: Alan Modra <amodra@gmail.com>
Date: Mon Jan 13 13:51:16 2014 +1030
Error on shared lib call to @local ifunc
On powerpc32, making ifuncs have non-default visibility in shared
libraries or pies can result in runtime failures. The problem is that
if gcc is told that a given function has non-default visibility, then
calls to that function are assumed to be local (which is true) and
thus need not go via a plt call stub (which is false for ifunc). If
the caller has no other reason to set up the got pointer (r30), code
won't be emitted to do so. However, a pic plt call stub makes use of
r30 to load the plt entry. So a call to an ifunc, which always needs
a plt entry, will fail.
This patch makes ld emit an error for the problem case, and allows
calls to non-default visibility ifuncs to work in normal executables.
I also fix some cases where ifuncs fail when using the old bss-plt.
* elf32-ppc.c (ppc_elf_check_relocs): For @local call to ifunc,
error when shared and force a plt call otherwise.
(ppc_elf_size_dynamic_sections): Don't emit DT_PPC_GOT unless
plt_type == PLT_NEW.
(ppc_elf_relocate_section): Add missing test to resolve ifuncs to
the appropriate call stub.
-----------------------------------------------------------------------
Summary of changes:
bfd/elf32-ppc.c | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
hooks/post-receive
--
gdb and binutils