From: Alan Modra Date: Thu, 27 Feb 2014 13:01:35 +0000 (+1030) Subject: Fix ELF ppc32 targets that don't use ppc32elf.em X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=db434ba03edb5491d48415069d6116b5037e6fa1;p=binutils-gdb.git Fix ELF ppc32 targets that don't use ppc32elf.em 5446cbdf82892a800ed7eef563a795e75223ec52 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c5868efcaee..069a6ce53bf 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2014-02-27 Alan Modra + + * 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 * elf32-nios2.c (nios2_elf32_relocate_section): Fix calculation diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 1c8724fbf63..5bfa33b7b5f 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -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"; diff --git a/ld/ChangeLog b/ld/ChangeLog index 4a2fa1cef0b..cc814c9bc18 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,13 @@ +2014-02-27 Alan Modra + + * 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 PR ld/16569 diff --git a/ld/emulparams/elf32ppcvxworks.sh b/ld/emulparams/elf32ppcvxworks.sh index 1bc3f3093c9..88c1da0c226 100644 --- a/ld/emulparams/elf32ppcvxworks.sh +++ b/ld/emulparams/elf32ppcvxworks.sh @@ -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 diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em index f5a3a70e8f1..00a29e2f0aa 100644 --- a/ld/emultempl/ppc32elf.em +++ b/ld/emultempl/ppc32elf.em @@ -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 <