Fix ELF ppc32 targets that don't use ppc32elf.em
5446cbdf82
broke powerpc-lynxos,
powerpc-netware, powerpc-windiss and powerpc-vxworks.
bfd/
* elf32-ppc.c (ppc_elf_link_hash_table_create): Provide default
params for targets that don't use ppc32elf.em.
ld/
* emulparams/elf32ppcvxworks.sh: Source plt_unwind.sh and
use ppc32elf.em.
* emultempl/ppc32elf.em (ppc_after_open): Don't compile for
vxworks.
(LDEMUL_AFTER_OPEN): Don't set for vxworks.
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Exclude
-secure-plt, -bss-plt and -sdata-got when vxworks.
This commit is contained in:
parent
3cdd631f17
commit
db434ba03e
5 changed files with 45 additions and 10 deletions
|
@ -1,3 +1,8 @@
|
|||
2014-02-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf32-ppc.c (ppc_elf_link_hash_table_create): Provide default
|
||||
params for targets that don't use ppc32elf.em.
|
||||
|
||||
2014-02-20 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
* elf32-nios2.c (nios2_elf32_relocate_section): Fix calculation
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
/* PowerPC-specific support for 32-bit ELF
|
||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||
2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
Written by Ian Lance Taylor, Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
@ -3252,6 +3250,7 @@ static struct bfd_link_hash_table *
|
|||
ppc_elf_link_hash_table_create (bfd *abfd)
|
||||
{
|
||||
struct ppc_elf_link_hash_table *ret;
|
||||
static struct ppc_elf_params default_params = { PLT_OLD, 0, 1, 0, 0, 4096 };
|
||||
|
||||
ret = bfd_zmalloc (sizeof (struct ppc_elf_link_hash_table));
|
||||
if (ret == NULL)
|
||||
|
@ -3271,6 +3270,8 @@ ppc_elf_link_hash_table_create (bfd *abfd)
|
|||
ret->elf.init_plt_offset.offset = 0;
|
||||
ret->elf.init_plt_offset.glist = NULL;
|
||||
|
||||
ret->params = &default_params;
|
||||
|
||||
ret->sdata[0].name = ".sdata";
|
||||
ret->sdata[0].sym_name = "_SDA_BASE_";
|
||||
ret->sdata[0].bss_name = ".sbss";
|
||||
|
|
10
ld/ChangeLog
10
ld/ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2014-02-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* emulparams/elf32ppcvxworks.sh: Source plt_unwind.sh and
|
||||
use ppc32elf.em.
|
||||
* emultempl/ppc32elf.em (ppc_after_open): Don't compile for
|
||||
vxworks.
|
||||
(LDEMUL_AFTER_OPEN): Don't set for vxworks.
|
||||
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Exclude
|
||||
-secure-plt, -bss-plt and -sdata-got when vxworks.
|
||||
|
||||
2014-02-26 Dan Mick <dan.mick@inktank.com>
|
||||
|
||||
PR ld/16569
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
. ${srcdir}/emulparams/elf32ppccommon.sh
|
||||
. ${srcdir}/emulparams/plt_unwind.sh
|
||||
EXTRA_EM_FILE=ppc32elf
|
||||
OUTPUT_FORMAT="elf32-powerpc-vxworks"
|
||||
. ${srcdir}/emulparams/vxworks.sh
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# This shell script emits a C file. -*- C -*-
|
||||
# Copyright 2003, 2005, 2007, 2008, 2009, 2010, 2011, 2012
|
||||
# Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU Binutils.
|
||||
#
|
||||
|
@ -54,6 +53,11 @@ ppc_after_open_output (void)
|
|||
ppc_elf_link_params (&link_info, ¶ms);
|
||||
}
|
||||
|
||||
EOF
|
||||
|
||||
# No --secure-plt, --bss-plt, or --sdata-got for vxworks.
|
||||
if test -z "$VXWORKS_BASE_EM_FILE" ; then
|
||||
fragment <<EOF
|
||||
static void
|
||||
ppc_after_open (void)
|
||||
{
|
||||
|
@ -109,6 +113,9 @@ ppc_after_open (void)
|
|||
gld${EMULATION_NAME}_after_open ();
|
||||
}
|
||||
|
||||
EOF
|
||||
fi
|
||||
fragment <<EOF
|
||||
static void
|
||||
ppc_before_allocation (void)
|
||||
{
|
||||
|
@ -206,10 +213,14 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
|
|||
{ "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
|
||||
{ "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
|
||||
{ "no-tls-optimize", no_argument, NULL, OPTION_NO_TLS_OPT },
|
||||
{ "no-tls-get-addr-optimize", no_argument, NULL, OPTION_NO_TLS_GET_ADDR_OPT },
|
||||
{ "no-tls-get-addr-optimize", no_argument, NULL, OPTION_NO_TLS_GET_ADDR_OPT },'
|
||||
if test -z "$VXWORKS_BASE_EM_FILE" ; then
|
||||
PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
|
||||
{ "secure-plt", no_argument, NULL, OPTION_NEW_PLT },
|
||||
{ "bss-plt", no_argument, NULL, OPTION_OLD_PLT },
|
||||
{ "sdata-got", no_argument, NULL, OPTION_OLD_GOT },
|
||||
{ "sdata-got", no_argument, NULL, OPTION_OLD_GOT },'
|
||||
fi
|
||||
PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
|
||||
{ "ppc476-workaround", optional_argument, NULL, OPTION_PPC476_WORKAROUND },
|
||||
{ "no-ppc476-workaround", no_argument, NULL, OPTION_NO_PPC476_WORKAROUND },
|
||||
'
|
||||
|
@ -219,10 +230,14 @@ PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
|
|||
--emit-stub-syms Label linker stubs with a symbol.\n\
|
||||
--no-emit-stub-syms Don'\''t label linker stubs with a symbol.\n\
|
||||
--no-tls-optimize Don'\''t try to optimize TLS accesses.\n\
|
||||
--no-tls-get-addr-optimize Don'\''t use a special __tls_get_addr call.\n\
|
||||
--no-tls-get-addr-optimize Don'\''t use a special __tls_get_addr call.\n'
|
||||
if test -z "$VXWORKS_BASE_EM_FILE" ; then
|
||||
PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'\
|
||||
--secure-plt Use new-style PLT if possible.\n\
|
||||
--bss-plt Force old-style BSS PLT.\n\
|
||||
--sdata-got Force GOT location just before .sdata.\n\
|
||||
--sdata-got Force GOT location just before .sdata.\n'
|
||||
fi
|
||||
PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'\
|
||||
--ppc476-workaround [=pagesize]\n\
|
||||
Avoid a cache bug on ppc476.\n\
|
||||
--no-ppc476-workaround Disable workaround.\n"
|
||||
|
@ -284,5 +299,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
|
|||
# Put these extra ppc32elf routines in ld_${EMULATION_NAME}_emulation
|
||||
#
|
||||
LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=ppc_after_open_output
|
||||
LDEMUL_AFTER_OPEN=ppc_after_open
|
||||
if test -z "$VXWORKS_BASE_EM_FILE" ; then
|
||||
LDEMUL_AFTER_OPEN=ppc_after_open
|
||||
fi
|
||||
LDEMUL_BEFORE_ALLOCATION=ppc_before_allocation
|
||||
|
|
Loading…
Reference in a new issue