gdb and binutils branch master updated. c7e17e05b647f6233c2062d038e5421686217816

amodra@sourceware.org amodra@sourceware.org
Mon Jan 13 05:17:00 GMT 2014


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



More information about the Binutils-cvs mailing list