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
This commit is contained in:
parent
eae61d61e9
commit
1b03c32c3b
11
ld/ChangeLog
11
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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user