ld/arc: Fix linker for big-endian arc targets
This aims to bring the linker for big-endian arc targets into line with the linker for (the default) little endian arc targets. The bulk of the changes are to extend the target pattern in the test files from 'arc-*...' to 'arc*-*...' and so match both big and little endian arc targets. In the ld/emulparams/ directory the existing scripts checked for a variable ARC_ENDIAN to switch between big and little endian targets, however, this variable is never set up. So, a new script snippet is introduced which sets up ARC_ENDIAN based on the value of target, this snippet is then included from all of the existing arc scripts. The existing big-endian variants of all the scripts, which existed, but were never used, are deleted in this commit. ld/ChangeLog: * emulparams/arc-endianness.sh: New file. * emulparams/arcebelf.sh: Deleted. * emulparams/arcebelf_prof.sh: Deleted. * emulparams/arceblinux.sh: Deleted. * emulparams/arceblinux_prof.sh: Deleted. * emulparams/arcelf.sh: Include arc-endinness.sh. * emulparams/arcelf_prof.sh: Include arc-endinness.sh. * emulparams/arclinux.sh: Include arc-endinness.sh. * emulparams/arclinux_prof.sh: Include arc-endinness.sh. * emulparams/arcv2elf.sh: Include arc-endinness.sh. * emulparams/arcv2elfx.sh: Include arc-endinness.sh. * testsuite/ld-elf/compressed1d.d: Update pattern for big and little endian arc targets. * testsuite/ld-elf/eh-frame-hdr.d: Likewise. * testsuite/ld-elf/group1.d: Likewise. * testsuite/ld-elf/group3b.d: Likewise. * testsuite/ld-elf/group8a.d: Likewise. * testsuite/ld-elf/group8b.d: Likewise. * testsuite/ld-elf/group9a.d: Likewise. * testsuite/ld-elf/group9b.d: Likewise. * testsuite/ld-elf/linkonce2.d: Likewise. * testsuite/ld-elf/pr12851.d: Likewise. * testsuite/ld-elf/pr12975.d: Likewise. * testsuite/ld-elf/pr13177.d: Likewise. * testsuite/ld-elf/pr13195.d: Likewise. * testsuite/ld-elf/pr17615.d: Likewise. * testsuite/ld-elf/pr19162.d: Likewise. * testsuite/ld-elf/sec64k.exp: Likewise. * testsuite/lib/ld-lib.exp: Likewise.
This commit is contained in:
parent
820f03ffe0
commit
9a5f28ae28
28 changed files with 65 additions and 93 deletions
32
ld/ChangeLog
32
ld/ChangeLog
|
@ -1,3 +1,35 @@
|
|||
2016-04-05 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* emulparams/arc-endianness.sh: New file.
|
||||
* emulparams/arcebelf.sh: Deleted.
|
||||
* emulparams/arcebelf_prof.sh: Deleted.
|
||||
* emulparams/arceblinux.sh: Deleted.
|
||||
* emulparams/arceblinux_prof.sh: Deleted.
|
||||
* emulparams/arcelf.sh: Include arc-endinness.sh.
|
||||
* emulparams/arcelf_prof.sh: Include arc-endinness.sh.
|
||||
* emulparams/arclinux.sh: Include arc-endinness.sh.
|
||||
* emulparams/arclinux_prof.sh: Include arc-endinness.sh.
|
||||
* emulparams/arcv2elf.sh: Include arc-endinness.sh.
|
||||
* emulparams/arcv2elfx.sh: Include arc-endinness.sh.
|
||||
* testsuite/ld-elf/compressed1d.d: Update pattern for big and
|
||||
little endian arc targets.
|
||||
* testsuite/ld-elf/eh-frame-hdr.d: Likewise.
|
||||
* testsuite/ld-elf/group1.d: Likewise.
|
||||
* testsuite/ld-elf/group3b.d: Likewise.
|
||||
* testsuite/ld-elf/group8a.d: Likewise.
|
||||
* testsuite/ld-elf/group8b.d: Likewise.
|
||||
* testsuite/ld-elf/group9a.d: Likewise.
|
||||
* testsuite/ld-elf/group9b.d: Likewise.
|
||||
* testsuite/ld-elf/linkonce2.d: Likewise.
|
||||
* testsuite/ld-elf/pr12851.d: Likewise.
|
||||
* testsuite/ld-elf/pr12975.d: Likewise.
|
||||
* testsuite/ld-elf/pr13177.d: Likewise.
|
||||
* testsuite/ld-elf/pr13195.d: Likewise.
|
||||
* testsuite/ld-elf/pr17615.d: Likewise.
|
||||
* testsuite/ld-elf/pr19162.d: Likewise.
|
||||
* testsuite/ld-elf/sec64k.exp: Likewise.
|
||||
* testsuite/lib/ld-lib.exp: Likewise.
|
||||
|
||||
2016-04-05 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
PR ld/19908
|
||||
|
|
10
ld/emulparams/arc-endianness.sh
Normal file
10
ld/emulparams/arc-endianness.sh
Normal file
|
@ -0,0 +1,10 @@
|
|||
case ${target} in
|
||||
arceb-*)
|
||||
ARC_ENDIAN="big"
|
||||
;;
|
||||
arc-*)
|
||||
ARC_ENDIAN="little"
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
esac
|
|
@ -1,15 +0,0 @@
|
|||
SCRIPT_NAME=elfarc
|
||||
TEMPLATE_NAME=elf32
|
||||
OUTPUT_FORMAT="elf32-bigarc"
|
||||
LITTLE_OUTPUT_FORMAT="elf32-littlearc"
|
||||
BIG_OUTPUT_FORMAT="elf32-bigarc"
|
||||
# leave room for vector table, 32 vectors * 8 bytes
|
||||
TEXT_START_ADDR=0x100
|
||||
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
||||
#NONPAGED_TEXT_START_ADDR=0x0
|
||||
ARCH=arc
|
||||
MACHINE=
|
||||
ENTRY=__start
|
||||
SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
|
||||
OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
|
||||
EMBEDDED=yes
|
|
@ -1,21 +0,0 @@
|
|||
SCRIPT_NAME=elfarc
|
||||
TEMPLATE_NAME=elf32
|
||||
OUTPUT_FORMAT="elf32-bigarc"
|
||||
LITTLE_OUTPUT_FORMAT="elf32-littlearc"
|
||||
BIG_OUTPUT_FORMAT="elf32-bigarc"
|
||||
# leave room for vector table, 32 vectors * 8 bytes
|
||||
TEXT_START_ADDR=0x100
|
||||
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
||||
#NONPAGED_TEXT_START_ADDR=0x0
|
||||
ARCH=arc
|
||||
MACHINE=
|
||||
ENTRY=__start
|
||||
SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
|
||||
OTHER_READONLY_SECTIONS="
|
||||
.__arc_profile_desc ${RELOCATING-0} : { *(.__arc_profile_desc) }
|
||||
.__arc_profile_forward ${RELOCATING-0} : { *(.__arc_profile_forward) }
|
||||
"
|
||||
OTHER_BSS_SECTIONS="
|
||||
.__arc_profile_counters ${RELOCATING-0} : { *(.__arc_profile_counters) }
|
||||
"
|
||||
EMBEDDED=yes
|
|
@ -1,17 +0,0 @@
|
|||
SCRIPT_NAME=arclinux
|
||||
OUTPUT_FORMAT="elf32-bigarc"
|
||||
LITTLE_OUTPUT_FORMAT="elf32-littlearc"
|
||||
BIG_OUTPUT_FORMAT="elf32-bigarc"
|
||||
TEXT_START_ADDR=0x10000
|
||||
MAXPAGESIZE=0x2000
|
||||
COMMONPAGESIZE=0x2000
|
||||
NONPAGED_TEXT_START_ADDR=0x10000
|
||||
ARCH=arc
|
||||
MACHINE=
|
||||
ENTRY=__start
|
||||
TEMPLATE_NAME=arclinux
|
||||
TEMPLATE_NAME=elf32
|
||||
EXTRA_EM_FILE=arclinux
|
||||
GENERATE_SHLIB_SCRIPT=yes
|
||||
SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
|
||||
OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
|
|
@ -1,23 +0,0 @@
|
|||
SCRIPT_NAME=arclinux
|
||||
OUTPUT_FORMAT="elf32-bigarc"
|
||||
LITTLE_OUTPUT_FORMAT="elf32-littlearc"
|
||||
BIG_OUTPUT_FORMAT="elf32-bigarc"
|
||||
TEXT_START_ADDR=0x10000
|
||||
MAXPAGESIZE=0x2000
|
||||
COMMONPAGESIZE=0x2000
|
||||
NONPAGED_TEXT_START_ADDR=0x10000
|
||||
ARCH=arc
|
||||
MACHINE=
|
||||
ENTRY=__start
|
||||
TEMPLATE_NAME=arclinux
|
||||
TEMPLATE_NAME=elf32
|
||||
EXTRA_EM_FILE=arclinux
|
||||
GENERATE_SHLIB_SCRIPT=yes
|
||||
SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
|
||||
OTHER_READONLY_SECTIONS="
|
||||
.__arc_profile_desc ${RELOCATING-0} : { *(.__arc_profile_desc) }
|
||||
.__arc_profile_forward ${RELOCATING-0} : { *(.__arc_profile_forward) }
|
||||
"
|
||||
OTHER_BSS_SECTIONS="
|
||||
.__arc_profile_counters ${RELOCATING-0} : { *(.__arc_profile_counters) }
|
||||
"
|
|
@ -1,3 +1,4 @@
|
|||
. ${srcdir}/emulparams/arc-endianness.sh
|
||||
SCRIPT_NAME=elfarc
|
||||
TEMPLATE_NAME=elf32
|
||||
if [ "x${ARC_ENDIAN}" = "xbig" ]; then
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
. ${srcdir}/emulparams/arc-endianness.sh
|
||||
SCRIPT_NAME=elfarc
|
||||
TEMPLATE_NAME=elf32
|
||||
if [ "x${ARC_ENDIAN}" = "xbig" ]; then
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
. ${srcdir}/emulparams/arc-endianness.sh
|
||||
SCRIPT_NAME=arclinux
|
||||
if [ "x${ARC_ENDIAN}" = "xbig" ]; then
|
||||
OUTPUT_FORMAT="elf32-bigarc"
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
. ${srcdir}/emulparams/arc-endianness.sh
|
||||
SCRIPT_NAME=arclinux
|
||||
if [ "x${ARC_ENDIAN}" = "xbig" ]; then
|
||||
OUTPUT_FORMAT="elf32-bigarc"
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
. ${srcdir}/emulparams/arc-endianness.sh
|
||||
MACHINE=
|
||||
SCRIPT_NAME=elfarcv2
|
||||
if [ "x${ARC_ENDIAN}" = "xbig" ]; then
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
. ${srcdir}/emulparams/arc-endianness.sh
|
||||
MACHINE=
|
||||
SCRIPT_NAME=elfarcv2
|
||||
if [ "x${ARC_ENDIAN}" = "xbig" ]; then
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#as: --compress-debug-sections=none
|
||||
#ld: -r --compress-debug-sections=zlib-gnu
|
||||
#readelf: -SW
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-* i370-*-* i860-*-* iq2000-*-* mn10200-*-* moxie-*-* msp430-*-* mt-*-* or1k-*-* pj-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* fr30-*-* frv-*-* i370-*-* i860-*-* iq2000-*-* mn10200-*-* moxie-*-* msp430-*-* mt-*-* or1k-*-* pj-*-*
|
||||
# Not all ELF targets use the elf.em emulation...
|
||||
|
||||
#failif
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#ld: -e _start --eh-frame-hdr
|
||||
#objdump: -hw
|
||||
#target: cfi
|
||||
#xfail: arc-*-elf* avr*-*-* or1k*-*-elf or1k*-*-rtems* visium-*-*
|
||||
#xfail: arc*-*-elf* avr*-*-* or1k*-*-elf or1k*-*-rtems* visium-*-*
|
||||
# These targets support CFI generation but not shared libraries.
|
||||
#...
|
||||
[0-9] .eh_frame_hdr 0*[12][048c] .*
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#source: group3a.s
|
||||
#ld: -T group.ld
|
||||
#readelf: -s
|
||||
#xfail: d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#xfail: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
# generic linker targets don't comply with all symbol merging rules
|
||||
|
||||
Symbol table '.symtab' contains .* entries:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#source: group8.s
|
||||
#ld: -r --gc-sections --entry foo
|
||||
#readelf: -g --wide
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
#xfail: cr16-*-* crx-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#source: group8.s
|
||||
#ld: -r --gc-sections --entry bar
|
||||
#readelf: -g --wide
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
#xfail: cr16-*-* crx-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#source: group9.s
|
||||
#ld: -r --gc-sections --entry foo
|
||||
#readelf: -g --wide
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: alpha-*-* hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
#xfail: cr16-*-* crx-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#source: group9.s
|
||||
#ld: -r --gc-sections --entry bar
|
||||
#readelf: -g --wide
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: alpha-*-* hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
#xfail: cr16-*-* crx-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#source: linkonce1b.s
|
||||
#ld: -emit-relocs
|
||||
#objdump: -r
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
# generic elf targets don't emit relocs
|
||||
|
||||
.*: file format .*
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#source: start.s
|
||||
#ld: --gc-sections
|
||||
#readelf: -s --wide
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ld: --gc-sections -shared -version-script pr12975.t
|
||||
#readelf: -s --wide
|
||||
#target: *-*-linux* *-*-gnu*
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#ld: --gc-sections -shared
|
||||
#readelf: -s -D --wide
|
||||
#target: *-*-linux* *-*-gnu*
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ld: --gc-sections -shared -version-script pr13195.t
|
||||
#readelf: -s --wide -D
|
||||
#target: *-*-linux* *-*-gnu*
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ld: --gc-sections -shared
|
||||
#readelf: -S --wide --dyn-syms
|
||||
#target: *-*-linux* *-*-gnu*
|
||||
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: arc*-*-* d30v-*-* dlx-*-* i960-*-* pj*-*-*
|
||||
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
|
||||
# generic linker targets don't support --gc-sections, nor do a bunch of others
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#ld: -shared -z max-page-size=0x200000
|
||||
#readelf: -l --wide
|
||||
#target: *-*-linux* *-*-gnu* *-*-nacl*
|
||||
#notarget: arc-*-* hppa-*-*
|
||||
#notarget: arc*-*-* hppa-*-*
|
||||
# arc target has an extra 64K stack section.
|
||||
# hppa fails due to PR 12376.
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ if ![is_elf_format] {
|
|||
|
||||
# Targets using the generic linker backend don't sort section symbols
|
||||
# before local symbols, so don't bother testing them.
|
||||
if { [istarget "arc-*-*"]
|
||||
if { [istarget "arc*-*-*"]
|
||||
|| [istarget "d30v-*-*"]
|
||||
|| [istarget "dlx-*-*"]
|
||||
|| [istarget "i960-*-*"]
|
||||
|
|
|
@ -1664,7 +1664,7 @@ proc check_gc_sections_available { } {
|
|||
if {![info exists gc_sections_available_saved]} {
|
||||
# Some targets don't support gc-sections despite whatever's
|
||||
# advertised by ld's options.
|
||||
if { [istarget arc-*-*]
|
||||
if { [istarget arc*-*-*]
|
||||
|| [istarget d30v-*-*]
|
||||
|| [istarget dlx-*-*]
|
||||
|| [istarget i960-*-*]
|
||||
|
@ -1706,7 +1706,7 @@ proc check_gc_sections_available { } {
|
|||
|
||||
proc check_shared_lib_support { } {
|
||||
if {![istarget aarch64*-*-elf]
|
||||
&& ![istarget arc-*-*]
|
||||
&& ![istarget arc*-*-*]
|
||||
&& ![istarget arm*-*-elf]
|
||||
&& ![istarget avr-*-*]
|
||||
&& ![istarget cr16-*-*]
|
||||
|
|
Loading…
Reference in a new issue