public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] [ARC] Add new linker emulations for nps
@ 2016-12-09 17:59 Graham Markall
  2016-12-09 18:08 ` Claudiu Zissulescu
  2016-12-09 18:28 ` [PATCH v2] [ARC] Add new linker emulation " Graham Markall
  0 siblings, 2 replies; 6+ messages in thread
From: Graham Markall @ 2016-12-09 17:59 UTC (permalink / raw)
  To: binutils
  Cc: andrew.burgess, noamca, guybe, claudiu.zissulescu,
	cupertino.miranda, anton.kolesov, alexey.brodkin, vineet.gupta1,
	Graham Markall

Following responses to Andrew's RFC in
https://sourceware.org/ml/binutils/2016-11/msg00384.html, this patch
adds a new linker emulation for nps, which I believe addresses the
comments received. The emulation uses makes use of the scripts for the
arclinux emulation in order to avoid diverging from it, and adds the
additional sections by setting the OTHER_SECTIONS variable.

There was a suggestion from Anton Kolesov that the symbols could be
better-named, e.g. to use names such as "_nps400_cmem_start" rather than
"_cmem_start". Although this would be preferable, these names are
already in use by users of Mellanox's binutils fork. However, as there
is now a separate emulation, these symbols won't collide for any other
Synopsys customers who might want to have a symbol named, e.g.
"_cmem_start".

Tested with ARC big- and little-endian targets on an x86_64 host.
Proposed commit message follows:


The arc700 nps variant uses some specific named sections to
facilitate its CMEM based instructions, which operate on memory
regions fixed at specific addresses.

This commit adds the arclinux_nps and arclinux_nps_prof
emulations, which are based on the arclinux and arclinux_prof
emulations. The new emulations use the OTHER_SECTIONS variable in
the emulation parameters script to provide symbols mapping to
various locations in the CMEM space on nps.

The accompanying test ensures that all symbols are provided at the
correct address in the linker script.

ld/ChangeLog:

  * Makefile.am: Add earclinux_nps.c and earclinux_nps_prof
  targets and add to ALL_EMULATION_SOURCES.
  * Makefile.in: Likewise, regenerated.
  * configure.tgt: Add arclinux_nps and arclinux_nps_prof as
  extra emulations for arc*-*-elf* and arc*-*-linux*.
  * emulparams/arc-nps.sh: New file.
  * emulparams/arclinux_nps.sh: New file.
  * emulparams/arclinux_nps_prof.sh: New file.
  * testsuite/ld-arc/arclinux-nps.d,
  * testsuite/ld-arc/arclinux-nps.s: New test.
---
 ld/ChangeLog                       | 14 +++++++
 ld/Makefile.am                     | 12 ++++++
 ld/Makefile.in                     | 14 +++++++
 ld/configure.tgt                   |  4 +-
 ld/emulparams/arc-nps.sh           | 78 ++++++++++++++++++++++++++++++++++++++
 ld/emulparams/arclinux_nps.sh      |  3 ++
 ld/emulparams/arclinux_nps_prof.sh |  3 ++
 ld/testsuite/ld-arc/arclinux-nps.d | 50 ++++++++++++++++++++++++
 ld/testsuite/ld-arc/arclinux-nps.s | 46 ++++++++++++++++++++++
 9 files changed, 222 insertions(+), 2 deletions(-)
 create mode 100644 ld/emulparams/arc-nps.sh
 create mode 100644 ld/emulparams/arclinux_nps.sh
 create mode 100644 ld/emulparams/arclinux_nps_prof.sh
 create mode 100644 ld/testsuite/ld-arc/arclinux-nps.d
 create mode 100644 ld/testsuite/ld-arc/arclinux-nps.s

diff --git a/ld/Makefile.am b/ld/Makefile.am
index ac908bc..ff70761 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -171,6 +171,8 @@ ALL_EMULATION_SOURCES = \
 	earcelf.c \
 	earcelf_prof.c \
 	earclinux.c \
+	earclinux_nps.c \
+	earclinux_nps_prof.c \
 	earclinux_prof.c \
 	earm_epoc_pe.c \
 	earm_wince_pe.c \
@@ -737,10 +739,20 @@ 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}
 
+earclinux_nps_prof.c: $(srcdir)/emulparams/arclinux_nps_prof.sh \
+  $(srcdir)/emulparams/arc-nps.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \
+  $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS}
+
 earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \
   $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS}
 
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 46c0302..4f27edf 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -540,6 +540,8 @@ ALL_EMULATION_SOURCES = \
 	earcelf.c \
 	earcelf_prof.c \
 	earclinux.c \
+	earclinux_nps.c \
+	earclinux_nps_prof.c \
 	earclinux_prof.c \
 	earm_epoc_pe.c \
 	earm_wince_pe.c \
@@ -1179,6 +1181,8 @@ 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_nps_prof.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@
@@ -2330,10 +2334,20 @@ 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}
 
+earclinux_nps_prof.c: $(srcdir)/emulparams/arclinux_nps_prof.sh \
+  $(srcdir)/emulparams/arc-nps.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \
+  $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS}
+
 earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \
   $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS}
 
diff --git a/ld/configure.tgt b/ld/configure.tgt
index b9f4782..01969b3 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_nps_prof 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_nps_prof 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/emulparams/arclinux_nps_prof.sh b/ld/emulparams/arclinux_nps_prof.sh
new file mode 100644
index 0000000..80b9db8
--- /dev/null
+++ b/ld/emulparams/arclinux_nps_prof.sh
@@ -0,0 +1,3 @@
+. ${srcdir}/emulparams/arclinux_prof.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
-- 
2.7.4

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] [ARC] Add new linker emulations for nps
  2016-12-09 17:59 [PATCH] [ARC] Add new linker emulations for nps Graham Markall
@ 2016-12-09 18:08 ` Claudiu Zissulescu
  2016-12-09 18:31   ` Graham Markall
  2016-12-09 18:28 ` [PATCH v2] [ARC] Add new linker emulation " Graham Markall
  1 sibling, 1 reply; 6+ messages in thread
From: Claudiu Zissulescu @ 2016-12-09 18:08 UTC (permalink / raw)
  To: Graham Markall, binutils
  Cc: andrew.burgess, noamca, guybe, claudiu.zissulescu,
	cupertino.miranda, anton.kolesov, alexey.brodkin, vineet.gupta1

Hi,

Just a very quick feedback, you can drop the profiler related files, as the current tools cannot handle profiling for uClibc linux base systems. Moreover, I've proposed a gcc patch which will remove entirely the need for special linker emulation files.

Best,
Claudiu
________________________________________
From: Graham Markall [graham.markall@embecosm.com]
Sent: Friday, December 09, 2016 6:58 PM
To: binutils@sourceware.org
Cc: andrew.burgess@embecosm.com; noamca@mellanox.com; guybe@mellanox.com; claudiu.zissulescu@synopsys.com; cupertino.miranda@synopsys.com; anton.kolesov@synopsys.com; alexey.brodkin@synopsys.com; vineet.gupta1@synopsys.com; Graham Markall
Subject: [PATCH] [ARC] Add new linker emulations for nps

Following responses to Andrew's RFC in
https://sourceware.org/ml/binutils/2016-11/msg00384.html, this patch
adds a new linker emulation for nps, which I believe addresses the
comments received. The emulation uses makes use of the scripts for the
arclinux emulation in order to avoid diverging from it, and adds the
additional sections by setting the OTHER_SECTIONS variable.

There was a suggestion from Anton Kolesov that the symbols could be
better-named, e.g. to use names such as "_nps400_cmem_start" rather than
"_cmem_start". Although this would be preferable, these names are
already in use by users of Mellanox's binutils fork. However, as there
is now a separate emulation, these symbols won't collide for any other
Synopsys customers who might want to have a symbol named, e.g.
"_cmem_start".

Tested with ARC big- and little-endian targets on an x86_64 host.
Proposed commit message follows:


The arc700 nps variant uses some specific named sections to
facilitate its CMEM based instructions, which operate on memory
regions fixed at specific addresses.

This commit adds the arclinux_nps and arclinux_nps_prof
emulations, which are based on the arclinux and arclinux_prof
emulations. The new emulations use the OTHER_SECTIONS variable in
the emulation parameters script to provide symbols mapping to
various locations in the CMEM space on nps.

The accompanying test ensures that all symbols are provided at the
correct address in the linker script.

ld/ChangeLog:

  * Makefile.am: Add earclinux_nps.c and earclinux_nps_prof
  targets and add to ALL_EMULATION_SOURCES.
  * Makefile.in: Likewise, regenerated.
  * configure.tgt: Add arclinux_nps and arclinux_nps_prof as
  extra emulations for arc*-*-elf* and arc*-*-linux*.
  * emulparams/arc-nps.sh: New file.
  * emulparams/arclinux_nps.sh: New file.
  * emulparams/arclinux_nps_prof.sh: New file.
  * testsuite/ld-arc/arclinux-nps.d,
  * testsuite/ld-arc/arclinux-nps.s: New test.
---
 ld/ChangeLog                       | 14 +++++++
 ld/Makefile.am                     | 12 ++++++
 ld/Makefile.in                     | 14 +++++++
 ld/configure.tgt                   |  4 +-
 ld/emulparams/arc-nps.sh           | 78 ++++++++++++++++++++++++++++++++++++++
 ld/emulparams/arclinux_nps.sh      |  3 ++
 ld/emulparams/arclinux_nps_prof.sh |  3 ++
 ld/testsuite/ld-arc/arclinux-nps.d | 50 ++++++++++++++++++++++++
 ld/testsuite/ld-arc/arclinux-nps.s | 46 ++++++++++++++++++++++
 9 files changed, 222 insertions(+), 2 deletions(-)
 create mode 100644 ld/emulparams/arc-nps.sh
 create mode 100644 ld/emulparams/arclinux_nps.sh
 create mode 100644 ld/emulparams/arclinux_nps_prof.sh
 create mode 100644 ld/testsuite/ld-arc/arclinux-nps.d
 create mode 100644 ld/testsuite/ld-arc/arclinux-nps.s

diff --git a/ld/Makefile.am b/ld/Makefile.am
index ac908bc..ff70761 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -171,6 +171,8 @@ ALL_EMULATION_SOURCES = \
        earcelf.c \
        earcelf_prof.c \
        earclinux.c \
+       earclinux_nps.c \
+       earclinux_nps_prof.c \
        earclinux_prof.c \
        earm_epoc_pe.c \
        earm_wince_pe.c \
@@ -737,10 +739,20 @@ 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}

+earclinux_nps_prof.c: $(srcdir)/emulparams/arclinux_nps_prof.sh \
+  $(srcdir)/emulparams/arc-nps.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \
+  $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS}
+
 earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \
   $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS}

diff --git a/ld/Makefile.in b/ld/Makefile.in
index 46c0302..4f27edf 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -540,6 +540,8 @@ ALL_EMULATION_SOURCES = \
        earcelf.c \
        earcelf_prof.c \
        earclinux.c \
+       earclinux_nps.c \
+       earclinux_nps_prof.c \
        earclinux_prof.c \
        earm_epoc_pe.c \
        earm_wince_pe.c \
@@ -1179,6 +1181,8 @@ 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_nps_prof.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@
@@ -2330,10 +2334,20 @@ 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}

+earclinux_nps_prof.c: $(srcdir)/emulparams/arclinux_nps_prof.sh \
+  $(srcdir)/emulparams/arc-nps.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \
+  $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS}
+
 earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \
   $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS}

diff --git a/ld/configure.tgt b/ld/configure.tgt
index b9f4782..01969b3 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_nps_prof 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_nps_prof 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/emulparams/arclinux_nps_prof.sh b/ld/emulparams/arclinux_nps_prof.sh
new file mode 100644
index 0000000..80b9db8
--- /dev/null
+++ b/ld/emulparams/arclinux_nps_prof.sh
@@ -0,0 +1,3 @@
+. ${srcdir}/emulparams/arclinux_prof.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
--
2.7.4

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2] [ARC] Add new linker emulation for nps
  2016-12-09 17:59 [PATCH] [ARC] Add new linker emulations for nps Graham Markall
  2016-12-09 18:08 ` Claudiu Zissulescu
@ 2016-12-09 18:28 ` Graham Markall
  2017-01-03 17:25   ` Nick Clifton
  1 sibling, 1 reply; 6+ messages in thread
From: Graham Markall @ 2016-12-09 18:28 UTC (permalink / raw)
  To: binutils
  Cc: andrew.burgess, noamca, guybe, claudiu.zissulescu,
	cupertino.miranda, anton.kolesov, alexey.brodkin, vineet.gupta1,
	Graham Markall

This updated version of the patch removes the arclinux_nps_prof
emulation as suggested by Claudiu Zissulescu.


The arc700 nps variant uses some specific named sections to
facilitate its CMEM based instructions, which operate on memory
regions fixed at specific addresses.

This commit adds the arclinux_nps emulation, which is based on the
arclinux emulation. The new emulation uses the OTHER_SECTIONS
variable in the emulation parameters script to provide symbols
mapping to various locations in the CMEM space on nps.

The accompanying test ensures that all symbols are provided at the
correct address in the linker script.

ld/ChangeLog:

  * 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.
---
 ld/ChangeLog                       | 13 +++++++
 ld/Makefile.am                     |  6 +++
 ld/Makefile.in                     |  7 ++++
 ld/configure.tgt                   |  4 +-
 ld/emulparams/arc-nps.sh           | 78 ++++++++++++++++++++++++++++++++++++++
 ld/emulparams/arclinux_nps.sh      |  3 ++
 ld/testsuite/ld-arc/arclinux-nps.d | 50 ++++++++++++++++++++++++
 ld/testsuite/ld-arc/arclinux-nps.s | 46 ++++++++++++++++++++++
 8 files changed, 205 insertions(+), 2 deletions(-)
 create mode 100644 ld/emulparams/arc-nps.sh
 create mode 100644 ld/emulparams/arclinux_nps.sh
 create mode 100644 ld/testsuite/ld-arc/arclinux-nps.d
 create mode 100644 ld/testsuite/ld-arc/arclinux-nps.s

diff --git a/ld/Makefile.am b/ld/Makefile.am
index ac908bc..164d91e 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -171,6 +171,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 \
@@ -737,6 +738,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 46c0302..794db42 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -540,6 +540,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 \
@@ -1179,6 +1180,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@
@@ -2330,6 +2332,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 b9f4782..4cbb411 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
-- 
2.7.4

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] [ARC] Add new linker emulations for nps
  2016-12-09 18:08 ` Claudiu Zissulescu
@ 2016-12-09 18:31   ` Graham Markall
  0 siblings, 0 replies; 6+ messages in thread
From: Graham Markall @ 2016-12-09 18:31 UTC (permalink / raw)
  To: Claudiu Zissulescu, binutils
  Cc: andrew.burgess, noamca, guybe, cupertino.miranda, anton.kolesov,
	alexey.brodkin, vineet.gupta1


[-- Attachment #1.1: Type: text/plain, Size: 479 bytes --]

Hi Claudiu,

> Just a very quick feedback, you can drop the profiler related files, as
> the current tools cannot handle profiling for uClibc linux base systems.
> Moreover, I've proposed a gcc patch which will remove entirely the need
> for special linker emulation files.

Many thanks for the quick feedback - a revised patch without the
arclinux_nps_prof emulation is now posted:

https://sourceware.org/ml/binutils/2016-12/msg00172.html

Many thanks,
Graham.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] [ARC] Add new linker emulation for nps
  2016-12-09 18:28 ` [PATCH v2] [ARC] Add new linker emulation " Graham Markall
@ 2017-01-03 17:25   ` Nick Clifton
  2017-01-10 11:10     ` Andrew Burgess
  0 siblings, 1 reply; 6+ messages in thread
From: Nick Clifton @ 2017-01-03 17:25 UTC (permalink / raw)
  To: Graham Markall, binutils
  Cc: andrew.burgess, noamca, guybe, claudiu.zissulescu,
	cupertino.miranda, anton.kolesov, alexey.brodkin, vineet.gupta1

Hi Graham,

> ld/ChangeLog:
> 
>   * 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.
 
Approved - please apply.

Cheers
  Nick


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] [ARC] Add new linker emulation for nps
  2017-01-03 17:25   ` Nick Clifton
@ 2017-01-10 11:10     ` Andrew Burgess
  0 siblings, 0 replies; 6+ messages in thread
From: Andrew Burgess @ 2017-01-10 11:10 UTC (permalink / raw)
  To: Nick Clifton
  Cc: Graham Markall, binutils, noamca, guybe, claudiu.zissulescu,
	cupertino.miranda, anton.kolesov, alexey.brodkin, vineet.gupta1

* Nick Clifton <nickc@redhat.com> [2017-01-03 17:25:36 +0000]:

> Hi Graham,
> 
> > ld/ChangeLog:
> > 
> >   * 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.
>  
> Approved - please apply.

Thanks for the review.  I've pushed this patch on Grahams behalf.

Thanks,
Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-01-10 11:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-09 17:59 [PATCH] [ARC] Add new linker emulations for nps Graham Markall
2016-12-09 18:08 ` Claudiu Zissulescu
2016-12-09 18:31   ` Graham Markall
2016-12-09 18:28 ` [PATCH v2] [ARC] Add new linker emulation " Graham Markall
2017-01-03 17:25   ` Nick Clifton
2017-01-10 11:10     ` Andrew Burgess

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).