diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2023-09-25 10:55:51 +0300 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gmail.com> | 2023-09-25 10:55:51 +0300 |
commit | 4deb1ee57fdb711cac6f36fed75b3c8cb5112d99 (patch) | |
tree | 853488e823b1e58dfa4ada0d10672889e4dce589 /ld | |
parent | 06e8d9861d16c5b7e6920ad0e89889ccf45c575a (diff) | |
download | gdb-4deb1ee57fdb711cac6f36fed75b3c8cb5112d99.zip gdb-4deb1ee57fdb711cac6f36fed75b3c8cb5112d99.tar.gz gdb-4deb1ee57fdb711cac6f36fed75b3c8cb5112d99.tar.bz2 |
arc: Add new linker emulation and scripts for ARCv3 ISA.
Add ARCv3's linker bits. Remove obsolete tests.
ld/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* ld/Makefile.am: Add ARC64 targets.
* ld/configure.tgt: Likewise.
* ld/Makefile.in: Regenerate.
* ld/emulparams/arc64elf32.sh: New file.
* ld/emulparams/arc64elf64.sh: Likewise.
* ld/emulparams/arc64linux32.sh: Likewise.
* ld/emulparams/arc64linux64.sh: Likewise.
* ld/scripttempl/elfarc.sc: Update stack and heap definitions.
* ld/testsuite/ld-arc/got-weak.d: Deleted file.
* ld/testsuite/ld-arc/got-weak.s: Likewise.
Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
Diffstat (limited to 'ld')
-rw-r--r-- | ld/Makefile.am | 4 | ||||
-rw-r--r-- | ld/Makefile.in | 8 | ||||
-rw-r--r-- | ld/configure.tgt | 21 | ||||
-rw-r--r-- | ld/emulparams/arc64elf32.sh | 12 | ||||
-rw-r--r-- | ld/emulparams/arc64elf64.sh | 12 | ||||
-rw-r--r-- | ld/emulparams/arc64linux32.sh | 22 | ||||
-rw-r--r-- | ld/emulparams/arc64linux64.sh | 22 | ||||
-rw-r--r-- | ld/scripttempl/elfarc.sc | 18 | ||||
-rw-r--r-- | ld/testsuite/ld-arc/got-weak.d | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-arc/got-weak.s | 7 |
10 files changed, 103 insertions, 35 deletions
diff --git a/ld/Makefile.am b/ld/Makefile.am index 9664d4c..1efb172 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -391,6 +391,10 @@ ALL_64_EMULATION_SOURCES = \ eaarch64nto.c \ eaarch64pe.c \ earm64pe.c \ + earc64elf32.c \ + earc64elf64.c \ + earc64linux32.c \ + earc64linux64.c \ eelf32_x86_64.c \ eelf32b4300.c \ eelf32bmip.c \ diff --git a/ld/Makefile.in b/ld/Makefile.in index afd22d4..ce2fb16 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -890,6 +890,10 @@ ALL_64_EMULATION_SOURCES = \ eaarch64nto.c \ eaarch64pe.c \ earm64pe.c \ + earc64elf32.c \ + earc64elf64.c \ + earc64linux32.c \ + earc64linux64.c \ eelf32_x86_64.c \ eelf32b4300.c \ eelf32bmip.c \ @@ -1279,6 +1283,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaixrs6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealpha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealphavms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64elf32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64elf64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.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@ diff --git a/ld/configure.tgt b/ld/configure.tgt index ff0aaaa..d69dee8 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -153,10 +153,27 @@ alpha*-*-*vms*) targ_emul=alphavms ;; am33_2.0-*-linux*) targ_emul=elf32am33lin # mn10300 variant ;; -arc*-*-elf*) targ_emul=arcelf +arc-*-elf* | arc[be]*-*-elf*) targ_emul=arcelf targ_extra_emuls="arclinux arclinux_nps arcv2elf arcv2elfx" ;; -arc*-*-linux*) case "${with_cpu}" in +arc64-*-elf*) targ_emul=arc64elf64 + targ_extra_emuls="arc64elf32 arc64linux64 arc64linux32" + targ_extra_libpath=$targ_extra_emuls + ;; +arc32-*-elf*) targ_emul=arc64elf32 + targ_extra_emuls="arc64linux32 arc64elf64 arc64linux64" + targ_extra_libpath=$targ_extra_emuls + ;; +arc64-*-linux*) targ_emul=arc64linux64 + targ_extra_emuls="arc64elf64 arc64elf32 arc64linux32" + targ_extra_libpath=$targ_extra_emuls + ;; +arc32-*-linux*) targ_emul=arc64linux32 + targ_extra_emuls="arc64elf32 arc64elf64 arc64linux64" + targ_extra_libpath=$targ_extra_emuls + ;; +arc-*-linux* | arc[eb]*-linux*) + case "${with_cpu}" in nps400) targ_emul=arclinux_nps targ_extra_emuls=arclinux ;; diff --git a/ld/emulparams/arc64elf32.sh b/ld/emulparams/arc64elf32.sh new file mode 100644 index 0000000..0f8389a --- /dev/null +++ b/ld/emulparams/arc64elf32.sh @@ -0,0 +1,12 @@ +SCRIPT_NAME=elf +ELFSIZE=32 +SCRIPT_NAME=elfarc +TEMPLATE_NAME=elf +OUTPUT_FORMAT="elf32-littlearc64" + +TEXT_START_ADDR=0x00 + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +ARCH="arc64:32" +ENTRY=__start +EMBEDDED=yes diff --git a/ld/emulparams/arc64elf64.sh b/ld/emulparams/arc64elf64.sh new file mode 100644 index 0000000..d429134 --- /dev/null +++ b/ld/emulparams/arc64elf64.sh @@ -0,0 +1,12 @@ +SCRIPT_NAME=elf +ELFSIZE=64 +SCRIPT_NAME=elfarc +TEMPLATE_NAME=elf +OUTPUT_FORMAT="elf64-littlearc64" + +TEXT_START_ADDR=0x00 + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +ARCH="arc64:64" +ENTRY=__start +EMBEDDED=yes diff --git a/ld/emulparams/arc64linux32.sh b/ld/emulparams/arc64linux32.sh new file mode 100644 index 0000000..1ad8f3d --- /dev/null +++ b/ld/emulparams/arc64linux32.sh @@ -0,0 +1,22 @@ +ARCH="arc64:32" + +SCRIPT_NAME=elf +ELFSIZE=32 +OUTPUT_FORMAT="elf32-littlearc64" + +TEMPLATE_NAME=elf + +GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" + +TEXT_START_ADDR=0x10000 + +ENTRY=__start + +# To support RELRO security feature. +NO_SMALL_DATA=yes +SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0" +GENERATE_COMBRELOC_SCRIPT=yes diff --git a/ld/emulparams/arc64linux64.sh b/ld/emulparams/arc64linux64.sh new file mode 100644 index 0000000..89ff73d --- /dev/null +++ b/ld/emulparams/arc64linux64.sh @@ -0,0 +1,22 @@ +ARCH="arc64:64" + +SCRIPT_NAME=elf +ELFSIZE=64 +OUTPUT_FORMAT="elf64-littlearc64" + +TEMPLATE_NAME=elf + +GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" + +TEXT_START_ADDR=0x10000 + +ENTRY=__start + +# To support RELRO security feature. +NO_SMALL_DATA=yes +SEPARATE_GOTPLT=8 #FIXME! what is the true value here? +GENERATE_COMBRELOC_SCRIPT=yes diff --git a/ld/scripttempl/elfarc.sc b/ld/scripttempl/elfarc.sc index 1ae0248..78cb0fa 100644 --- a/ld/scripttempl/elfarc.sc +++ b/ld/scripttempl/elfarc.sc @@ -394,20 +394,10 @@ test -n "${RELOCATING}" && cat <<EOF The options appear in the wrong order to do this with a single symbol - ldflags comes after flags injected with per-file stanzas, and thus the setting from ldflags prevails. */ - .heap : - { - __start_heap = . ; - . = . + (DEFINED(__HEAP_SIZE) ? __HEAP_SIZE : (DEFINED(__DEFAULT_HEAP_SIZE) ? __DEFAULT_HEAP_SIZE : 20k)) ; - __end_heap = . ; - } - - . = ALIGN(0x8); - .stack : - { - __stack = . ; - . = . + (DEFINED(__STACK_SIZE) ? __STACK_SIZE : (DEFINED(__DEFAULT_STACK_SIZE) ? __DEFAULT_STACK_SIZE : 64k)) ; - __stack_top = . ; - } + ${RELOCATING+. = ALIGN(${ALIGNMENT});} + ${RELOCATING+ PROVIDE (__start_heap = .) ; } + ${RELOCATING+ PROVIDE (__stack_top = . + (DEFINED(__HEAP_SIZE) ? __HEAP_SIZE : (DEFINED(__DEFAULT_HEAP_SIZE) ? __DEFAULT_HEAP_SIZE : 20k)) + (DEFINED(__STACK_SIZE) ? __STACK_SIZE : 64k));} + ${RELOCATING+ PROVIDE (__end_heap = . + (DEFINED(__HEAP_SIZE) ? __HEAP_SIZE : (DEFINED(__DEFAULT_STACK_SIZE) ? __DEFAULT_STACK_SIZE : 20k)));} EOF source_sh $srcdir/scripttempl/misc-sections.sc diff --git a/ld/testsuite/ld-arc/got-weak.d b/ld/testsuite/ld-arc/got-weak.d deleted file mode 100644 index a7f5b2f..0000000 --- a/ld/testsuite/ld-arc/got-weak.d +++ /dev/null @@ -1,12 +0,0 @@ -#source: got-weak.s -#as: -#ld: -Bstatic -#objdump: -d - -[^:]*:\s+file format elf32-.*arc - - -Disassembly of section \.text: - -[0-9a-f]+ <.*>: -^\s+[0-9a-f]+:\s+2730\s7f80\s[0-9a-f]+\s[0-9a-f]+\s+ld\s+r\d+,\[pcl,.* diff --git a/ld/testsuite/ld-arc/got-weak.s b/ld/testsuite/ld-arc/got-weak.s deleted file mode 100644 index 8ea18be..0000000 --- a/ld/testsuite/ld-arc/got-weak.s +++ /dev/null @@ -1,7 +0,0 @@ - .cpu archs - - .weak symb - .global __start - .text -__start: - ld r0,[pcl,@symb@gotpc] |