diff options
author | Cooper Qu <cooper.qu@linux.alibaba.com> | 2020-10-12 22:31:29 +0800 |
---|---|---|
committer | Lifang Xia <xlf194833_xia@alibaba-inc.com> | 2020-10-26 17:13:21 +0800 |
commit | 1b03c32c3bd08f180f22ee2f8a5dce7f42a74ebf (patch) | |
tree | 7d9361fab3824e594f8777015acbbdda7a8bb094 /ld | |
parent | eae61d61e97dee34d0d8433eddc1d69dd5579b9c (diff) | |
download | gdb-1b03c32c3bd08f180f22ee2f8a5dce7f42a74ebf.zip gdb-1b03c32c3bd08f180f22ee2f8a5dce7f42a74ebf.tar.gz gdb-1b03c32c3bd08f180f22ee2f8a5dce7f42a74ebf.tar.bz2 |
CSKY: Change default linker script for elf toolchain.
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
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 11 | ||||
-rw-r--r-- | ld/emulparams/cskyelf.sh | 27 | ||||
-rw-r--r-- | ld/emulparams/cskyelf_linux.sh | 36 | ||||
-rw-r--r-- | ld/testsuite/ld-csky/data.d | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-csky/hilo16.d | 4 |
5 files changed, 76 insertions, 14 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 2392dc8..247564c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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 diff --git a/ld/emulparams/cskyelf.sh b/ld/emulparams/cskyelf.sh index b940c6c..de2e146 100644 --- a/ld/emulparams/cskyelf.sh +++ b/ld/emulparams/cskyelf.sh @@ -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 diff --git a/ld/emulparams/cskyelf_linux.sh b/ld/emulparams/cskyelf_linux.sh index 84fbbf8..d29233f 100644 --- a/ld/emulparams/cskyelf_linux.sh +++ b/ld/emulparams/cskyelf_linux.sh @@ -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 diff --git a/ld/testsuite/ld-csky/data.d b/ld/testsuite/ld-csky/data.d index 21b2f27..f1dd470 100644 --- a/ld/testsuite/ld-csky/data.d +++ b/ld/testsuite/ld-csky/data.d @@ -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 diff --git a/ld/testsuite/ld-csky/hilo16.d b/ld/testsuite/ld-csky/hilo16.d index f2435c0..d038a06 100644 --- a/ld/testsuite/ld-csky/hilo16.d +++ b/ld/testsuite/ld-csky/hilo16.d @@ -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 |