diff options
author | Alan Modra <amodra@gmail.com> | 2011-07-26 01:57:18 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-07-26 01:57:18 +0000 |
commit | 58d180e827fcc256ae661c02d14ff0acae362efa (patch) | |
tree | 3dcab39f4811f6faa2344f9c0c2323e23601786c /ld | |
parent | 4f726958388d3ca7abe5b6409ceed4b1d6527b86 (diff) | |
download | fsf-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/ChangeLog | 13 | ||||
-rw-r--r-- | ld/emulparams/elf32ppc.sh | 1 | ||||
-rw-r--r-- | ld/emulparams/elf64ppc.sh | 1 | ||||
-rw-r--r-- | ld/emultempl/ppc32elf.em | 13 | ||||
-rw-r--r-- | ld/emultempl/ppc64elf.em | 10 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-powerpc/powerpc.exp | 16 | ||||
-rw-r--r-- | ld/testsuite/ld-powerpc/relbrlt.d | 2 |
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 |