aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-07-26 01:57:18 +0000
committerAlan Modra <amodra@gmail.com>2011-07-26 01:57:18 +0000
commit58d180e827fcc256ae661c02d14ff0acae362efa (patch)
tree3dcab39f4811f6faa2344f9c0c2323e23601786c /ld
parent4f726958388d3ca7abe5b6409ceed4b1d6527b86 (diff)
downloadfsf-binutils-gdb-58d180e827fcc256ae661c02d14ff0acae362efa.zip
fsf-binutils-gdb-58d180e827fcc256ae661c02d14ff0acae362efa.tar.gz
fsf-binutils-gdb-58d180e827fcc256ae661c02d14ff0acae362efa.tar.bz2
bfd/
* elf32-ppc.c: Include dwarf2.h. (struct ppc_elf_link_hash_table): Add glink_eh_frame. (ppc_elf_create_glink): Create .eh_frame section. (glink_eh_frame_cie): New array. (ppc_elf_size_dynamic_sections): Size glink_eh_frame. (ppc_elf_finish_dynamic_sections): Write glink_eh_frame. * elf64-ppc.c: Include dwarg2.h. (struct ppc_link_hash_table): Add glink_eh_frame. (create_linkage_sections): Create .eh_frame section. (ppc64_elf_size_dynamic_sections): Arrange to drop unneeded glink_eh_frame. (glink_eh_frame_cie): New array. (ppc64_elf_size_stubs): Size glink_eh_frame. (ppc64_elf_build_stubs): Init glink_eh_frame contents. (ppc64_elf_finish_dynamic_sections): Write glink_eh_frame. ld/ * emulparams/elf32ppc.sh: Source plt_unwind.sh. * emulparams/elf64ppc.sh: Likewise. * emultempl/ppc32elf.em (OPTION_NO_TLS_OPT): Adjust. (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Append to existing values. * emultempl/ppc64elf.em (OPTION_STUBGROUP_SIZE): Adjust. (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Append to existing values. ld/testsuite/ * ld-powerpc/powerpc.exp: Use --no-ld-generated-unwind-info with some tests. * ld-powerpc/relbrlt.d: Likewise.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog13
-rw-r--r--ld/emulparams/elf32ppc.sh1
-rw-r--r--ld/emulparams/elf64ppc.sh1
-rw-r--r--ld/emultempl/ppc32elf.em13
-rw-r--r--ld/emultempl/ppc64elf.em10
-rw-r--r--ld/testsuite/ChangeLog14
-rw-r--r--ld/testsuite/ld-powerpc/powerpc.exp16
-rw-r--r--ld/testsuite/ld-powerpc/relbrlt.d2
8 files changed, 46 insertions, 24 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 951c8a2..b51bf9b 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,16 @@
+2011-07-26 Alan Modra <amodra@gmail.com>
+
+ * emulparams/elf32ppc.sh: Source plt_unwind.sh.
+ * emulparams/elf64ppc.sh: Likewise.
+ * emultempl/ppc32elf.em (OPTION_NO_TLS_OPT): Adjust.
+ (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_LONGOPTS,
+ PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Append to
+ existing values.
+ * emultempl/ppc64elf.em (OPTION_STUBGROUP_SIZE): Adjust.
+ (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_LONGOPTS,
+ PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Append to
+ existing values.
+
2011-07-22 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (ALL_64_EMULATIONS): Add eelf_k1om.o and
diff --git a/ld/emulparams/elf32ppc.sh b/ld/emulparams/elf32ppc.sh
index e638815..8e1a9f3 100644
--- a/ld/emulparams/elf32ppc.sh
+++ b/ld/emulparams/elf32ppc.sh
@@ -3,6 +3,7 @@
# elf32ppcsim.sh
. ${srcdir}/emulparams/elf32ppccommon.sh
+. ${srcdir}/emulparams/plt_unwind.sh
# Yes, we want duplicate .got and .plt sections. The linker chooses the
# appropriate one magically in ppc_after_open
DATA_GOT=
diff --git a/ld/emulparams/elf64ppc.sh b/ld/emulparams/elf64ppc.sh
index c9337ea..8611686 100644
--- a/ld/emulparams/elf64ppc.sh
+++ b/ld/emulparams/elf64ppc.sh
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/plt_unwind.sh
TEMPLATE_NAME=elf32
EXTRA_EM_FILE=ppc64elf
ELFSIZE=64
diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
index 36f9df2..d9d7c03 100644
--- a/ld/emultempl/ppc32elf.em
+++ b/ld/emultempl/ppc32elf.em
@@ -1,5 +1,6 @@
# This shell script emits a C file. -*- C -*-
-# Copyright 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Copyright 2003, 2005, 2007, 2008, 2009, 2010, 2011
+# Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
@@ -176,8 +177,8 @@ fi
# Define some shell vars to insert bits of code into the standard elf
# parse_args and list_options functions.
#
-PARSE_AND_LIST_PROLOGUE='
-#define OPTION_NO_TLS_OPT 301
+PARSE_AND_LIST_PROLOGUE=${PARSE_AND_LIST_PROLOGUE}'
+#define OPTION_NO_TLS_OPT 321
#define OPTION_NO_TLS_GET_ADDR_OPT (OPTION_NO_TLS_OPT + 1)
#define OPTION_NEW_PLT (OPTION_NO_TLS_GET_ADDR_OPT + 1)
#define OPTION_OLD_PLT (OPTION_NEW_PLT + 1)
@@ -186,7 +187,7 @@ PARSE_AND_LIST_PROLOGUE='
#define OPTION_NO_STUBSYMS (OPTION_STUBSYMS + 1)
'
-PARSE_AND_LIST_LONGOPTS='
+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 },
@@ -196,7 +197,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "sdata-got", no_argument, NULL, OPTION_OLD_GOT },
'
-PARSE_AND_LIST_OPTIONS='
+PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
fprintf (file, _("\
--emit-stub-syms Label linker stubs with a symbol.\n\
--no-emit-stub-syms Don'\''t label linker stubs with a symbol.\n\
@@ -208,7 +209,7 @@ PARSE_AND_LIST_OPTIONS='
));
'
-PARSE_AND_LIST_ARGS_CASES='
+PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
case OPTION_STUBSYMS:
emit_stub_syms = 1;
break;
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
index a57861b..8a81beb 100644
--- a/ld/emultempl/ppc64elf.em
+++ b/ld/emultempl/ppc64elf.em
@@ -652,8 +652,8 @@ fi
# Define some shell vars to insert bits of code into the standard elf
# parse_args and list_options functions.
#
-PARSE_AND_LIST_PROLOGUE='
-#define OPTION_STUBGROUP_SIZE 301
+PARSE_AND_LIST_PROLOGUE=${PARSE_AND_LIST_PROLOGUE}'
+#define OPTION_STUBGROUP_SIZE 321
#define OPTION_PLT_STATIC_CHAIN (OPTION_STUBGROUP_SIZE + 1)
#define OPTION_NO_PLT_STATIC_CHAIN (OPTION_PLT_STATIC_CHAIN + 1)
#define OPTION_STUBSYMS (OPTION_NO_PLT_STATIC_CHAIN + 1)
@@ -669,7 +669,7 @@ PARSE_AND_LIST_PROLOGUE='
#define OPTION_NON_OVERLAPPING_OPD (OPTION_NO_TOC_SORT + 1)
'
-PARSE_AND_LIST_LONGOPTS='
+PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
{ "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
{ "plt-static-chain", no_argument, NULL, OPTION_PLT_STATIC_CHAIN },
{ "no-plt-static-chain", no_argument, NULL, OPTION_NO_PLT_STATIC_CHAIN },
@@ -686,7 +686,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "non-overlapping-opd", no_argument, NULL, OPTION_NON_OVERLAPPING_OPD },
'
-PARSE_AND_LIST_OPTIONS='
+PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
fprintf (file, _("\
--stub-group-size=N Maximum size of a group of input sections that\n\
can be handled by one stub section. A negative\n\
@@ -742,7 +742,7 @@ PARSE_AND_LIST_OPTIONS='
));
'
-PARSE_AND_LIST_ARGS_CASES='
+PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
case OPTION_STUBGROUP_SIZE:
{
const char *end;
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 8400fd1..a87fbe4 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,12 +1,18 @@
+2011-07-26 Alan Modra <amodra@gmail.com>
+
+ * ld-powerpc/powerpc.exp: Use --no-ld-generated-unwind-info
+ with some tests.
+ * ld-powerpc/relbrlt.d: Likewise.
+
2011-07-25 Hans-Peter Nilsson <hp@bitrange.com>
PR ld/12815
* ld-mmix/pr12815-1.d, ld-mmix/pr12815-1.s, ld-mmix/pr12815-1.ld,
- ld-mmix/pr12815-2.d, ld-mmix/pr12815-2.s: New tests.
-
+ ld-mmix/pr12815-2.d, ld-mmix/pr12815-2.s: New tests.
+
2011-07-24 Catherine Moore <clm@codesourcery.com>
- Chao-ying Fu <fu@mips.com>
- Maciej W. Rozycki <macro@codesourcery.com>
+ Chao-ying Fu <fu@mips.com>
+ Maciej W. Rozycki <macro@codesourcery.com>
* lib/ld-lib.exp (run_dump_test): Support distinct assembler
flags for the same source named multiple times.
diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
index bfffb42..d48b148 100644
--- a/ld/testsuite/ld-powerpc/powerpc.exp
+++ b/ld/testsuite/ld-powerpc/powerpc.exp
@@ -113,11 +113,11 @@ set ppcelftests {
"tls32"}
{"TLS32 helper shared library" "-shared -melf32ppc tmpdir/tlslib32.o" "" {}
{} "libtlslib32.so"}
- {"TLS32 dynamic exec" "-melf32ppc tmpdir/tls32.o tmpdir/libtlslib32.so" "" {}
+ {"TLS32 dynamic exec" "-melf32ppc --no-ld-generated-unwind-info tmpdir/tls32.o tmpdir/libtlslib32.so" "" {}
{{readelf -WSsrl tlsexe32.r} {objdump -dr tlsexe32.d}
{objdump -sj.got tlsexe32.g} {objdump -sj.tdata tlsexe32.t}}
"tlsexe32"}
- {"TLS32 shared" "-shared -melf32ppc tmpdir/tls32.o" "" {}
+ {"TLS32 shared" "-shared -melf32ppc --no-ld-generated-unwind-info tmpdir/tls32.o" "" {}
{{readelf -WSsrl tlsso32.r} {objdump -dr tlsso32.d}
{objdump -sj.got tlsso32.g} {objdump -sj.tdata tlsso32.t}}
"tls32.so"}
@@ -156,15 +156,15 @@ set ppc64elftests {
{} "libtlslib.so"}
{"TLS helper old shared lib" "-shared -melf64ppc" "-a64" {oldtlslib.s}
{} "liboldlib.so"}
- {"TLS dynamic exec" "-melf64ppc tmpdir/tls.o tmpdir/libtlslib.so" "" {}
+ {"TLS dynamic exec" "-melf64ppc --no-ld-generated-unwind-info tmpdir/tls.o tmpdir/libtlslib.so" "" {}
{{readelf -WSsrl tlsexe.r} {objdump -dr tlsexe.d}
{objdump -sj.got tlsexe.g} {objdump -sj.tdata tlsexe.t}}
"tlsexe"}
- {"TLS dynamic old" "-melf64ppc tmpdir/tls.o tmpdir/liboldlib.so" "" {}
+ {"TLS dynamic old" "-melf64ppc --no-ld-generated-unwind-info tmpdir/tls.o tmpdir/liboldlib.so" "" {}
{{readelf -WSsrl tlsexe.r} {objdump -dr tlsexe.d}
{objdump -sj.got tlsexe.g} {objdump -sj.tdata tlsexe.t}}
"tlsexeold"}
- {"TLS shared" "-shared -melf64ppc tmpdir/tls.o" "" {}
+ {"TLS shared" "-shared -melf64ppc --no-ld-generated-unwind-info tmpdir/tls.o" "" {}
{{readelf -WSsrl tlsso.r} {objdump -dr tlsso.d}
{objdump -sj.got tlsso.g} {objdump -sj.tdata tlsso.t}}
"tls.so"}
@@ -172,17 +172,17 @@ set ppc64elftests {
{{objdump -dr tlstoc.d} {objdump -sj.got tlstoc.g}
{objdump -sj.tdata tlstoc.t}}
"tlstoc"}
- {"TLSTOC dynamic exec" "-melf64ppc tmpdir/tlstoc.o tmpdir/libtlslib.so"
+ {"TLSTOC dynamic exec" "-melf64ppc --no-ld-generated-unwind-info tmpdir/tlstoc.o tmpdir/libtlslib.so"
"" {}
{{readelf -WSsrl tlsexetoc.r} {objdump -dr tlsexetoc.d}
{objdump -sj.got tlsexetoc.g} {objdump -sj.tdata tlsexetoc.t}}
"tlsexetoc"}
- {"TLSTOC dynamic old" "-melf64ppc tmpdir/tlstoc.o tmpdir/liboldlib.so"
+ {"TLSTOC dynamic old" "-melf64ppc --no-ld-generated-unwind-info tmpdir/tlstoc.o tmpdir/liboldlib.so"
"" {}
{{readelf -WSsrl tlsexetoc.r} {objdump -dr tlsexetoc.d}
{objdump -sj.got tlsexetoc.g} {objdump -sj.tdata tlsexetoc.t}}
"tlsexetocold"}
- {"TLSTOC shared" "-shared -melf64ppc tmpdir/tlstoc.o" "" {}
+ {"TLSTOC shared" "-shared -melf64ppc --no-ld-generated-unwind-info tmpdir/tlstoc.o" "" {}
{{readelf -WSsrl tlstocso.r} {objdump -dr tlstocso.d}
{objdump -sj.got tlstocso.g} {objdump -sj.tdata tlstocso.t}}
"tlstoc.so"}
diff --git a/ld/testsuite/ld-powerpc/relbrlt.d b/ld/testsuite/ld-powerpc/relbrlt.d
index 69321eb..c12017d 100644
--- a/ld/testsuite/ld-powerpc/relbrlt.d
+++ b/ld/testsuite/ld-powerpc/relbrlt.d
@@ -1,6 +1,6 @@
#source: relbrlt.s
#as: -a64
-#ld: -melf64ppc --emit-relocs
+#ld: -melf64ppc --no-ld-generated-unwind-info --emit-relocs
#objdump: -Dr
.*: file format elf64-powerpc