ld/arc: Fix linker for big-endian arc targets
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 29 Mar 2016 14:57:40 +0000 (15:57 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 5 Apr 2016 22:08:28 +0000 (23:08 +0100)
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.

28 files changed:
ld/ChangeLog
ld/emulparams/arc-endianness.sh [new file with mode: 0644]
ld/emulparams/arcebelf.sh [deleted file]
ld/emulparams/arcebelf_prof.sh [deleted file]
ld/emulparams/arceblinux.sh [deleted file]
ld/emulparams/arceblinux_prof.sh [deleted file]
ld/emulparams/arcelf.sh
ld/emulparams/arcelf_prof.sh
ld/emulparams/arclinux.sh
ld/emulparams/arclinux_prof.sh
ld/emulparams/arcv2elf.sh
ld/emulparams/arcv2elfx.sh
ld/testsuite/ld-elf/compressed1d.d
ld/testsuite/ld-elf/eh-frame-hdr.d
ld/testsuite/ld-elf/group3b.d
ld/testsuite/ld-elf/group8a.d
ld/testsuite/ld-elf/group8b.d
ld/testsuite/ld-elf/group9a.d
ld/testsuite/ld-elf/group9b.d
ld/testsuite/ld-elf/linkonce2.d
ld/testsuite/ld-elf/pr12851.d
ld/testsuite/ld-elf/pr12975.d
ld/testsuite/ld-elf/pr13177.d
ld/testsuite/ld-elf/pr13195.d
ld/testsuite/ld-elf/pr17615.d
ld/testsuite/ld-elf/pr19162.d
ld/testsuite/ld-elf/sec64k.exp
ld/testsuite/lib/ld-lib.exp

index 1e1aae7..d2580bd 100644 (file)
@@ -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
diff --git a/ld/emulparams/arc-endianness.sh b/ld/emulparams/arc-endianness.sh
new file mode 100644 (file)
index 0000000..4d6158b
--- /dev/null
@@ -0,0 +1,10 @@
+case ${target} in
+    arceb-*)
+        ARC_ENDIAN="big"
+        ;;
+    arc-*)
+        ARC_ENDIAN="little"
+        ;;
+    *)
+        exit 1
+esac
diff --git a/ld/emulparams/arcebelf.sh b/ld/emulparams/arcebelf.sh
deleted file mode 100644 (file)
index 994605e..0000000
+++ /dev/null
@@ -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
diff --git a/ld/emulparams/arcebelf_prof.sh b/ld/emulparams/arcebelf_prof.sh
deleted file mode 100644 (file)
index 1bd0531..0000000
+++ /dev/null
@@ -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
diff --git a/ld/emulparams/arceblinux.sh b/ld/emulparams/arceblinux.sh
deleted file mode 100644 (file)
index 54fd7a9..0000000
+++ /dev/null
@@ -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_*) }"
diff --git a/ld/emulparams/arceblinux_prof.sh b/ld/emulparams/arceblinux_prof.sh
deleted file mode 100644 (file)
index 3b1ccdd..0000000
+++ /dev/null
@@ -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) }
-"
index 14a3033..a0b9c8f 100644 (file)
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/arc-endianness.sh
 SCRIPT_NAME=elfarc
 TEMPLATE_NAME=elf32
 if [ "x${ARC_ENDIAN}" = "xbig" ]; then
index 0202002..c94e3cb 100644 (file)
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/arc-endianness.sh
 SCRIPT_NAME=elfarc
 TEMPLATE_NAME=elf32
 if [ "x${ARC_ENDIAN}" = "xbig" ]; then
index 452a272..9d17bfe 100644 (file)
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/arc-endianness.sh
 SCRIPT_NAME=arclinux
 if [ "x${ARC_ENDIAN}" = "xbig" ]; then
   OUTPUT_FORMAT="elf32-bigarc"
index fed098b..495f628 100644 (file)
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/arc-endianness.sh
 SCRIPT_NAME=arclinux
 if [ "x${ARC_ENDIAN}" = "xbig" ]; then
   OUTPUT_FORMAT="elf32-bigarc"
index 2793ea3..e21882b 100644 (file)
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/arc-endianness.sh
 MACHINE=
 SCRIPT_NAME=elfarcv2
 if [ "x${ARC_ENDIAN}" = "xbig" ]; then
index 9999d8d..7a4f284 100644 (file)
@@ -1,3 +1,4 @@
+. ${srcdir}/emulparams/arc-endianness.sh
 MACHINE=
 SCRIPT_NAME=elfarcv2
 if [ "x${ARC_ENDIAN}" = "xbig" ]; then
index 5c07046..496557d 100644 (file)
@@ -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
index 7e466c3..b4ea7fb 100644 (file)
@@ -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] .*
index a242c40..0da9540 100644 (file)
@@ -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:
index f645256..3613044 100644 (file)
@@ -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
index 2ce6b1a..3859cb6 100644 (file)
@@ -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
index 62215a5..4e8341d 100644 (file)
@@ -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
index c4600d8..ce5931c 100644 (file)
@@ -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
index edc135f..7668b32 100644 (file)
@@ -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 .*
index 8aa48e9..f02e3d2 100644 (file)
@@ -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
 
index 11ace1f..97326a7 100644 (file)
@@ -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
 
index a009988..d47aadf 100644 (file)
@@ -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
 
index 6b39f2d..c806c11 100644 (file)
@@ -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
 
index 1b7a59b..0b11823 100644 (file)
@@ -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
 
index c08bbed..1a54546 100644 (file)
@@ -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.
 
index 7d079ce..f168cff 100644 (file)
@@ -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-*-*"]
index 320ed82..ce446fd 100644 (file)
@@ -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-*-*]