diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 13 | ||||
-rw-r--r-- | ld/Makefile.am | 6 | ||||
-rw-r--r-- | ld/Makefile.in | 7 | ||||
-rw-r--r-- | ld/configure.tgt | 4 | ||||
-rw-r--r-- | ld/emulparams/arc-nps.sh | 78 | ||||
-rw-r--r-- | ld/emulparams/arclinux_nps.sh | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-arc/arclinux-nps.d | 50 | ||||
-rw-r--r-- | ld/testsuite/ld-arc/arclinux-nps.s | 46 |
8 files changed, 205 insertions, 2 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 1ea2cb0..b1c6993 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,16 @@ +2016-12-09 Graham Markall <graham.markall@embecosm.com> + Andrew Burgess <andrew.burgess@embecosm.com> + + * Makefile.am: Add earclinux_nps.c target and add to + ALL_EMULATION_SOURCES. + * Makefile.in: Likewise, regenerated. + * configure.tgt: Add arclinux_nps as an extra emulation for + arc*-*-elf* and arc*-*-linux*. + * emulparams/arc-nps.sh: New file. + * emulparams/arclinux_nps.sh: New file. + * testsuite/ld-arc/arclinux-nps.d, + * testsuite/ld-arc/arclinux-nps.s: New test. + 2017-01-04 Dilan Palauzov <dilyan.palauzov@aegee.org> PR 20958 diff --git a/ld/Makefile.am b/ld/Makefile.am index 5bd0016..9dd31ff 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -164,6 +164,7 @@ ALL_EMULATION_SOURCES = \ earcelf.c \ earcelf_prof.c \ earclinux.c \ + earclinux_nps.c \ earclinux_prof.c \ earm_epoc_pe.c \ earm_wince_pe.c \ @@ -731,6 +732,11 @@ earclinux.c: $(srcdir)/emulparams/arclinux.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} +earclinux_nps.c: $(srcdir)/emulparams/arclinux_nps.sh \ + $(srcdir)/emulparams/arc-nps.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ + $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} + earclinux_prof.c: $(srcdir)/emulparams/arclinux_prof.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index 9364402..c464302 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -533,6 +533,7 @@ ALL_EMULATION_SOURCES = \ earcelf.c \ earcelf_prof.c \ earclinux.c \ + earclinux_nps.c \ earclinux_prof.c \ earm_epoc_pe.c \ earm_wince_pe.c \ @@ -1142,6 +1143,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf_prof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_prof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elfx.Po@am__quote@ @@ -2294,6 +2296,11 @@ earclinux.c: $(srcdir)/emulparams/arclinux.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} +earclinux_nps.c: $(srcdir)/emulparams/arclinux_nps.sh \ + $(srcdir)/emulparams/arc-nps.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ + $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} + earclinux_prof.c: $(srcdir)/emulparams/arclinux_prof.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} diff --git a/ld/configure.tgt b/ld/configure.tgt index 8f01b51..7eb53ce 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -78,10 +78,10 @@ alpha*-*-openbsd*) targ_emul=elf64alpha ;; alpha*-*-*vms*) targ_emul=alphavms ;; arc*-*-elf*) targ_emul=arcelf - targ_extra_emuls="arcelf_prof arclinux arclinux_prof arcv2elf arcv2elfx" + targ_extra_emuls="arcelf_prof arclinux arclinux_nps arclinux_prof arcv2elf arcv2elfx" ;; arc*-*-linux*) targ_emul=arclinux - targ_extra_emuls="arclinux_prof arcelf arcelf_prof arcv2elf arcv2elfx" + targ_extra_emuls="arclinux_nps arclinux_prof arcelf arcelf_prof arcv2elf arcv2elfx" ;; arm-epoc-pe) targ_emul=arm_epoc_pe ; targ_extra_ofiles="deffilep.o pe-dll.o" ;; arm*-*-cegcc*) targ_emul=arm_wince_pe ; targ_extra_ofiles="deffilep.o pe-dll.o" diff --git a/ld/emulparams/arc-nps.sh b/ld/emulparams/arc-nps.sh new file mode 100644 index 0000000..615e6d5 --- /dev/null +++ b/ld/emulparams/arc-nps.sh @@ -0,0 +1,78 @@ +OTHER_SECTIONS=" + /* Start of symbols and sections required to support CMEM instructions + on NPS targets. */ + + PROVIDE (_cmem_start = ADDR (.cmem) ); + PROVIDE (_cmem_alter_start = ADDR (.cmem_alter) ); + PROVIDE (_cmem_shared_start = ADDR (.cmem_shared) ); + PROVIDE (_cmem_shared_alter_start = ADDR (.cmem_shared_alter) ); + PROVIDE (_fmt_slot0_start = ADDR (.fmt_slot0) ); + PROVIDE (_fmt_slot1_start = ADDR (.fmt_slot1) ); + PROVIDE (_fmt_slot2_start = ADDR (.fmt_slot2) ); + PROVIDE (_fmt_slot3_start = ADDR (.fmt_slot3) ); + PROVIDE (_fmt_slot4_start = ADDR (.fmt_slot4) ); + PROVIDE (_fmt_slot5_start = ADDR (.fmt_slot5) ); + PROVIDE (_fmt_slot6_start = ADDR (.fmt_slot6) ); + PROVIDE (_fmt_slot7_start = ADDR (.fmt_slot7) ); + PROVIDE (_fmt_slot8_start = ADDR (.fmt_slot8) ); + PROVIDE (_fmt_slot9_start = ADDR (.fmt_slot9) ); + PROVIDE (_fmt_slot10_start = ADDR (.fmt_slot10) ); + PROVIDE (_fmt_slot11_start = ADDR (.fmt_slot11) ); + PROVIDE (_fmt_slot12_start = ADDR (.fmt_slot12) ); + PROVIDE (_fmt_slot13_start = ADDR (.fmt_slot13) ); + PROVIDE (_fmt_slot14_start = ADDR (.fmt_slot14) ); + PROVIDE (_fmt_slot15_start = ADDR (.fmt_slot15) ); + + PROVIDE (_cmem_end = ADDR (.cmem) + SIZEOF (.cmem) ); + PROVIDE (_cmem_alter_end = ADDR (.cmem_alter) + SIZEOF (.cmem_alter) ); + PROVIDE (_cmem_shared_end = ADDR (.cmem_shared) + SIZEOF (.cmem_shared) ); + PROVIDE (_cmem_shared_alter_end = ADDR (.cmem_shared_alter) + SIZEOF (.cmem_shared_alter) ); + PROVIDE (_fmt_slot0_end = ADDR (.fmt_slot0) + SIZEOF (.fmt_slot0) ); + PROVIDE (_fmt_slot1_end = ADDR (.fmt_slot1) + SIZEOF (.fmt_slot1) ); + PROVIDE (_fmt_slot2_end = ADDR (.fmt_slot2) + SIZEOF (.fmt_slot2) ); + PROVIDE (_fmt_slot3_end = ADDR (.fmt_slot3) + SIZEOF (.fmt_slot3) ); + PROVIDE (_fmt_slot4_end = ADDR (.fmt_slot4) + SIZEOF (.fmt_slot4) ); + PROVIDE (_fmt_slot5_end = ADDR (.fmt_slot5) + SIZEOF (.fmt_slot5) ); + PROVIDE (_fmt_slot6_end = ADDR (.fmt_slot6) + SIZEOF (.fmt_slot6) ); + PROVIDE (_fmt_slot7_end = ADDR (.fmt_slot7) + SIZEOF (.fmt_slot7) ); + PROVIDE (_fmt_slot8_end = ADDR (.fmt_slot8) + SIZEOF (.fmt_slot8) ); + PROVIDE (_fmt_slot9_end = ADDR (.fmt_slot9) + SIZEOF (.fmt_slot9) ); + PROVIDE (_fmt_slot10_end = ADDR (.fmt_slot10) + SIZEOF (.fmt_slot10) ); + PROVIDE (_fmt_slot11_end = ADDR (.fmt_slot11) + SIZEOF (.fmt_slot11) ); + PROVIDE (_fmt_slot12_end = ADDR (.fmt_slot12) + SIZEOF (.fmt_slot12) ); + PROVIDE (_fmt_slot13_end = ADDR (.fmt_slot13) + SIZEOF (.fmt_slot13) ); + PROVIDE (_fmt_slot14_end = ADDR (.fmt_slot14) + SIZEOF (.fmt_slot14) ); + PROVIDE (_fmt_slot15_end = ADDR (.fmt_slot15) + SIZEOF (.fmt_slot15) ); + + OVERLAY 0x57f00000 : + { + .cmem { *(.cmem) } + .cmem_alter { *(.cmem_alter) } + } + + OVERLAY 0x57f08000 : + { + .cmem_shared { *(.cmem_shared) } + .cmem_shared_alter { *(.cmem_shared_alter) } + } + + .fmt_slot0 0x58000000 : { *(.fmt_slot0) } + .fmt_slot1 0x58800000 : { *(.fmt_slot1) } + .fmt_slot2 0x59000000 : { *(.fmt_slot2) } + .fmt_slot3 0x59800000 : { *(.fmt_slot3) } + .fmt_slot4 0x5a000000 : { *(.fmt_slot4) } + .fmt_slot5 0x5a800000 : { *(.fmt_slot5) } + .fmt_slot6 0x5b000000 : { *(.fmt_slot6) } + .fmt_slot7 0x5b800000 : { *(.fmt_slot7) } + .fmt_slot8 0x5c000000 : { *(.fmt_slot8) } + .fmt_slot9 0x5c800000 : { *(.fmt_slot9) } + .fmt_slot10 0x5d000000 : { *(.fmt_slot10) } + .fmt_slot11 0x5d800000 : { *(.fmt_slot11) } + .fmt_slot12 0x5e000000 : { *(.fmt_slot12) } + .fmt_slot13 0x5e800000 : { *(.fmt_slot13) } + .fmt_slot14 0x5f000000 : { *(.fmt_slot14) } + .fmt_slot15 0x5f800000 : { *(.fmt_slot15) } + + /* End of nps specific sections and symbols. */ + + ${OTHER_SECTIONS}" diff --git a/ld/emulparams/arclinux_nps.sh b/ld/emulparams/arclinux_nps.sh new file mode 100644 index 0000000..b1c6a7d --- /dev/null +++ b/ld/emulparams/arclinux_nps.sh @@ -0,0 +1,3 @@ +. ${srcdir}/emulparams/arclinux.sh +# Extend the OTHER_SECTIONS for nps. +. ${srcdir}/emulparams/arc-nps.sh diff --git a/ld/testsuite/ld-arc/arclinux-nps.d b/ld/testsuite/ld-arc/arclinux-nps.d new file mode 100644 index 0000000..5ccd7fc --- /dev/null +++ b/ld/testsuite/ld-arc/arclinux-nps.d @@ -0,0 +1,50 @@ +#source: arclinux-nps.s +#as: -mnps400 +#ld: -marclinux_nps +#objdump: -dr + +.*: +file format .*arc.* + +Disassembly of section .text: + +[0-9a-f]+ <.*>: + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 5800 0000 mov r0,0x58000000 + [0-9a-f]+: 200a 0f80 5880 0000 mov r0,0x58800000 + [0-9a-f]+: 200a 0f80 5900 0000 mov r0,0x59000000 + [0-9a-f]+: 200a 0f80 5980 0000 mov r0,0x59800000 + [0-9a-f]+: 200a 0f80 5a00 0000 mov r0,0x5a000000 + [0-9a-f]+: 200a 0f80 5a80 0000 mov r0,0x5a800000 + [0-9a-f]+: 200a 0f80 5b00 0000 mov r0,0x5b000000 + [0-9a-f]+: 200a 0f80 5b80 0000 mov r0,0x5b800000 + [0-9a-f]+: 200a 0f80 5c00 0000 mov r0,0x5c000000 + [0-9a-f]+: 200a 0f80 5c80 0000 mov r0,0x5c800000 + [0-9a-f]+: 200a 0f80 5d00 0000 mov r0,0x5d000000 + [0-9a-f]+: 200a 0f80 5d80 0000 mov r0,0x5d800000 + [0-9a-f]+: 200a 0f80 5e00 0000 mov r0,0x5e000000 + [0-9a-f]+: 200a 0f80 5e80 0000 mov r0,0x5e800000 + [0-9a-f]+: 200a 0f80 5f00 0000 mov r0,0x5f000000 + [0-9a-f]+: 200a 0f80 5f80 0000 mov r0,0x5f800000 + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 5800 0000 mov r0,0x58000000 + [0-9a-f]+: 200a 0f80 5880 0000 mov r0,0x58800000 + [0-9a-f]+: 200a 0f80 5900 0000 mov r0,0x59000000 + [0-9a-f]+: 200a 0f80 5980 0000 mov r0,0x59800000 + [0-9a-f]+: 200a 0f80 5a00 0000 mov r0,0x5a000000 + [0-9a-f]+: 200a 0f80 5a80 0000 mov r0,0x5a800000 + [0-9a-f]+: 200a 0f80 5b00 0000 mov r0,0x5b000000 + [0-9a-f]+: 200a 0f80 5b80 0000 mov r0,0x5b800000 + [0-9a-f]+: 200a 0f80 5c00 0000 mov r0,0x5c000000 + [0-9a-f]+: 200a 0f80 5c80 0000 mov r0,0x5c800000 + [0-9a-f]+: 200a 0f80 5d00 0000 mov r0,0x5d000000 + [0-9a-f]+: 200a 0f80 5d80 0000 mov r0,0x5d800000 + [0-9a-f]+: 200a 0f80 5e00 0000 mov r0,0x5e000000 + [0-9a-f]+: 200a 0f80 5e80 0000 mov r0,0x5e800000 + [0-9a-f]+: 200a 0f80 5f00 0000 mov r0,0x5f000000 + [0-9a-f]+: 200a 0f80 5f80 0000 mov r0,0x5f800000 diff --git a/ld/testsuite/ld-arc/arclinux-nps.s b/ld/testsuite/ld-arc/arclinux-nps.s new file mode 100644 index 0000000..38bf897 --- /dev/null +++ b/ld/testsuite/ld-arc/arclinux-nps.s @@ -0,0 +1,46 @@ + .text + .global __start +__start: + mov r0, _cmem_start + mov r0, _cmem_alter_start + mov r0, _cmem_shared_start + mov r0, _cmem_shared_alter_start + + mov r0, _fmt_slot0_start + mov r0, _fmt_slot1_start + mov r0, _fmt_slot2_start + mov r0, _fmt_slot3_start + mov r0, _fmt_slot4_start + mov r0, _fmt_slot5_start + mov r0, _fmt_slot6_start + mov r0, _fmt_slot7_start + mov r0, _fmt_slot8_start + mov r0, _fmt_slot9_start + mov r0, _fmt_slot10_start + mov r0, _fmt_slot11_start + mov r0, _fmt_slot12_start + mov r0, _fmt_slot13_start + mov r0, _fmt_slot14_start + mov r0, _fmt_slot15_start + + mov r0, _cmem_end + mov r0, _cmem_alter_end + mov r0, _cmem_shared_end + mov r0, _cmem_shared_alter_end + + mov r0, _fmt_slot0_end + mov r0, _fmt_slot1_end + mov r0, _fmt_slot2_end + mov r0, _fmt_slot3_end + mov r0, _fmt_slot4_end + mov r0, _fmt_slot5_end + mov r0, _fmt_slot6_end + mov r0, _fmt_slot7_end + mov r0, _fmt_slot8_end + mov r0, _fmt_slot9_end + mov r0, _fmt_slot10_end + mov r0, _fmt_slot11_end + mov r0, _fmt_slot12_end + mov r0, _fmt_slot13_end + mov r0, _fmt_slot14_end + mov r0, _fmt_slot15_end |