CSKY: Change default linker script for elf toolchain.
authorCooper Qu <cooper.qu@linux.alibaba.com>
Mon, 12 Oct 2020 14:31:29 +0000 (22:31 +0800)
committerLifang Xia <xlf194833_xia@alibaba-inc.com>
Mon, 26 Oct 2020 09:13:21 +0000 (17:13 +0800)
ld/
* emulparams/cskyelf.sh (TEXT_START_ADDR): Change to 0x60000000.
(DATA_ADDR) : Define.
(OTHER_SYMBOLS) : Define.
(OTHER_BSS_SYMBOLS) : Set symbol __sbss__.
(OTHER_BSS_END_SYMBOLS) : Set symbol __ebss__.
* ld/emulparams/cskyelf_linux.sh : Don't include cskyelf.sh.
* testsuite/ld-csky/data.d : Fix '/s*' to match spaces.
* testsuite/ld-csky/hilo16.d : Likewise.

Change-Id: Ia29b32eab4157ae5be0fc0b6125fb5b7d9dac939

ld/ChangeLog
ld/emulparams/cskyelf.sh
ld/emulparams/cskyelf_linux.sh
ld/testsuite/ld-csky/data.d
ld/testsuite/ld-csky/hilo16.d

index 2392dc8eaabe5314cf1242e670f076df9d57bc52..247564cf551255a9d19a889e79dced25d468b2eb 100644 (file)
@@ -1,3 +1,14 @@
+2020-10-26  Cooper Qu <cooper.qu@linux.alibaba.com>
+
+       * emulparams/cskyelf.sh (TEXT_START_ADDR): Change to 0x60000000.
+       (DATA_ADDR) : Define.
+       (OTHER_SYMBOLS) : Define.
+       (OTHER_BSS_SYMBOLS) : Set symbol __sbss__.
+       (OTHER_BSS_END_SYMBOLS) : Set symbol __ebss__.
+       * ld/emulparams/cskyelf_linux.sh : Don't include cskyelf.sh.
+       * testsuite/ld-csky/data.d : Fix '/s*' to match spaces.
+       * testsuite/ld-csky/hilo16.d : Likewise.
+
 2020-10-23  H.J. Lu  <hongjiu.lu@intel.com>
 
        * testsuite/config/default.exp (plug_opt): Set only if compiler
index b940c6c29783d06bd6a9bccf06f2146e806936d3..de2e1463033808003c30dc988ff8ab6b27550460 100644 (file)
@@ -1,5 +1,3 @@
-# If you change this file, please also look at files which source this one:
-# cskyelf_linux.sh
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-csky-little"
 BIG_OUTPUT_FORMAT="elf32-csky-big"
@@ -7,7 +5,26 @@ LITTLE_OUTPUT_FORMAT="elf32-csky-little"
 NO_REL_RELOCS=yes
 TARGET_PAGE_SIZE=0x400
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
-TEXT_START_ADDR=0x8000
+TEXT_START_ADDR=0x60000000
+DATA_ADDR=0x20000000
+
+# The default address spaces
+# RAM:        0x0 - 0x1FFFFFFF
+# RAM: 0x20000000 - 0x3FFFFFFF
+# RAM: 0x60000000 - 0x7FFFFFFF
+#
+# There are some symbols used in the crt.S
+# __stack: The stack top
+# __heap_start: The heap start
+# __heap_end: The heap end
+# __csky_exit: Be used by qemu to check exit
+
+OTHER_SYMBOLS='
+  PROVIDE (__stack =  0x01000000 - 0x8);
+  PROVIDE (__heap_start = 0x00000100);
+  PROVIDE (__heap_end = 0x00900000);
+  PROVIDE (__csky_exit = 0x10002000);
+'
 CHECK_RELOCS_AFTER_OPEN_INPUT=yes
 NONPAGED_TEXT_START_ADDR=0
 ATTRS_SECTIONS='.csky.attributes 0 : { KEEP (*(.csky.attributes)) KEEP (*(.csky.attributes)) }'
@@ -27,8 +44,8 @@ EXTRA_EM_FILE=cskyelf
 NOP=0
 
 ENTRY=__start
-OTHER_BSS_SYMBOLS="__bss_start__ = . ;"
-OTHER_BSS_END_SYMBOLS="__bss_end__ = . ;"
+OTHER_BSS_SYMBOLS="__sbss__ = . ;"
+OTHER_BSS_END_SYMBOLS="__ebss__ = . ;"
 
 # This sets the stack to the top of the simulator memory (2^19 bytes).
 # STACK_ADDR=0x80000
index 84fbbf8ef5c71e63ca9116967a681bbf1fcc5b87..d29233f9301c73fdd225944f4ac69e465a105604 100644 (file)
@@ -1,4 +1,38 @@
-source_sh ${srcdir}/emulparams/cskyelf.sh
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-csky-little"
+BIG_OUTPUT_FORMAT="elf32-csky-big"
+LITTLE_OUTPUT_FORMAT="elf32-csky-little"
+NO_REL_RELOCS=yes
+TARGET_PAGE_SIZE=0x400
+MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
+TEXT_START_ADDR=0x8000
+CHECK_RELOCS_AFTER_OPEN_INPUT=yes
+NONPAGED_TEXT_START_ADDR=0
+ATTRS_SECTIONS='.csky.attributes 0 : { KEEP (*(.csky.attributes)) KEEP (*(.csky.attributes)) }'
+ARCH=csky
+EMBEDDED=yes
+EXTRA_EM_FILE=cskyelf
+
+# There is a problem with the NOP value - it must work for both
+# big endian and little endian systems.  Unfortunately there is
+# no symmetrical mcore opcode that functions as a noop.  The
+# chosen solution is to use "tst r0, r14".  This is a symmetrical
+# value, and apart from the corruption of the C bit, it has no other
+# side effects.  Since the carry bit is never tested without being
+# explicitly set first, and since the NOP code is only used as a
+# fill value between independently viable pieces of code, it should
+# not matter.
+NOP=0
+
+ENTRY=__start
+OTHER_BSS_SYMBOLS="__bss_start__ = . ;"
+OTHER_BSS_END_SYMBOLS="__bss_end__ = . ;"
+
+# This sets the stack to the top of the simulator memory (2^19 bytes).
+# STACK_ADDR=0x80000
+
+TEMPLATE_NAME=elf
+
 
 unset EMBEDDED
 unset ENTRY
index 21b2f27f45b30fbaaf34dddb44fad6828ab1f980..f1dd470094ead65f8b346887330977aa180cd528 100644 (file)
@@ -10,9 +10,9 @@
 Disassembly of section .text:
 
 [0-9a-f]+ <__start>:
-    [0-9a-f]+: cd400004        lrs.b           r10, \[0x4\]    // the offset is based on .data
-    [0-9a-f]+: cd440002        lrs.h           r10, \[0x2\]    // the offset is based on .data
-    [0-9a-f]+: cd480001        lrs.w           r10, \[0x1\]    // the offset is based on .data
-    [0-9a-f]+: cd700004        srs.b           r11, \[0x4\]    // the offset is based on .data
-    [0-9a-f]+: cd740002        srs.h           r11, \[0x2\]    // the offset is based on .data
-    [0-9a-f]+: cd780001        srs.w           r11, \[0x1\]    // the offset is based on .data
+\s*[0-9a-f]+:  cd400004        lrs.b           r10, \[0x4\]    // the offset is based on .data
+\s*[0-9a-f]+:  cd440002        lrs.h           r10, \[0x2\]    // the offset is based on .data
+\s*[0-9a-f]+:  cd480001        lrs.w           r10, \[0x1\]    // the offset is based on .data
+\s*[0-9a-f]+:  cd700004        srs.b           r11, \[0x4\]    // the offset is based on .data
+\s*[0-9a-f]+:  cd740002        srs.h           r11, \[0x2\]    // the offset is based on .data
+\s*[0-9a-f]+:  cd780001        srs.w           r11, \[0x1\]    // the offset is based on .data
index f2435c0ad0858a4976058c0cc02e441f70e757af..d038a06cf706c967acbd0892307d666032becfa5 100644 (file)
@@ -10,5 +10,5 @@
 Disassembly of section .text:
 
 [0-9a-f]+ <__start>:
-    [0-9a-f]+: ea21dead        movih           r1, 57005
-    [0-9a-f]+: ec21beef        ori             r1, r1, 48879
+\s*[0-9a-f]+:  ea21dead        movih           r1, 57005
+\s*[0-9a-f]+:  ec21beef        ori             r1, r1, 48879