diff options
author | Nick Clifton <nickc@redhat.com> | 2012-08-13 14:52:54 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2012-08-13 14:52:54 +0000 |
commit | a06ea96464a2928865beb2ac6f12deb0464bfcd7 (patch) | |
tree | 5af98be87fc6e7ea4e8197c241698b97cceeafb8 /ld/emulparams | |
parent | f47f77df4e0f38c96bf5a4c4d8ecda6c73f5ffc2 (diff) | |
download | gdb-a06ea96464a2928865beb2ac6f12deb0464bfcd7.zip gdb-a06ea96464a2928865beb2ac6f12deb0464bfcd7.tar.gz gdb-a06ea96464a2928865beb2ac6f12deb0464bfcd7.tar.bz2 |
Add support for 64-bit ARM architecture: AArch64
Diffstat (limited to 'ld/emulparams')
-rw-r--r-- | ld/emulparams/aarch64elf.sh | 35 | ||||
-rw-r--r-- | ld/emulparams/aarch64elfb.sh | 2 | ||||
-rw-r--r-- | ld/emulparams/aarch64linux.sh | 36 | ||||
-rw-r--r-- | ld/emulparams/aarch64linuxb.sh | 2 |
4 files changed, 75 insertions, 0 deletions
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh new file mode 100644 index 0000000..d72e5f7 --- /dev/null +++ b/ld/emulparams/aarch64elf.sh @@ -0,0 +1,35 @@ +ARCH=aarch64 +MACHINE= +NOP=0 + +SCRIPT_NAME=elf +OUTPUT_FORMAT="elf64-littleaarch64" +BIG_OUTPUT_FORMAT="elf64-bigaarch64" +LITTLE_OUTPUT_FORMAT="elf64-littleaarch64" +NO_REL_RELOCS=yes + +TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=aarch64elf + +GENERATE_SHLIB_SCRIPT=yes +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" + +ENTRY=_start +EMBEDDED=yes +SEPARATE_GOTPLT=24 +TEXT_START_ADDR=0x00400000 + +DATA_START_SYMBOLS='__data_start = . ;'; + +# AArch64 does not support .s* sections. +NO_SMALL_DATA=yes + +OTHER_BSS_SYMBOLS='__bss_start__ = .;' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' +OTHER_END_SYMBOLS='__end__ = . ;' + +OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }' +ATTRS_SECTIONS='.ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }' + +# This sets the stack to the top of the simulator memory (2^19 bytes). +STACK_ADDR=0x80000 diff --git a/ld/emulparams/aarch64elfb.sh b/ld/emulparams/aarch64elfb.sh new file mode 100644 index 0000000..7a3ff97 --- /dev/null +++ b/ld/emulparams/aarch64elfb.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/aarch64elf.sh +OUTPUT_FORMAT="elf64-bigaarch64" diff --git a/ld/emulparams/aarch64linux.sh b/ld/emulparams/aarch64linux.sh new file mode 100644 index 0000000..a5a2500 --- /dev/null +++ b/ld/emulparams/aarch64linux.sh @@ -0,0 +1,36 @@ +ARCH=aarch64 +MACHINE= +NOP=0 + +SCRIPT_NAME=elf +OUTPUT_FORMAT="elf64-littleaarch64" +BIG_OUTPUT_FORMAT="elf64-bigaarch64" +LITTLE_OUTPUT_FORMAT="elf64-littleaarch64" +NO_REL_RELOCS=yes + +TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=aarch64elf + +GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" +SEPARATE_GOTPLT=24 +IREL_IN_PLT= + +TEXT_START_ADDR=0x400000 + +DATA_START_SYMBOLS='PROVIDE (__data_start = .);'; + +# AArch64 does not support .s* sections. +NO_SMALL_DATA=yes + +OTHER_BSS_SYMBOLS='__bss_start__ = .;' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' +OTHER_END_SYMBOLS='__end__ = . ;' + +OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }' +ATTRS_SECTIONS='.ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }' +# Ensure each PLT entry is aligned to a cache line. +PLT=".plt ${RELOCATING-0} : ALIGN(16) { *(.plt)${IREL_IN_PLT+ *(.iplt)} }" diff --git a/ld/emulparams/aarch64linuxb.sh b/ld/emulparams/aarch64linuxb.sh new file mode 100644 index 0000000..2bdf602 --- /dev/null +++ b/ld/emulparams/aarch64linuxb.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/aarch64linux.sh +OUTPUT_FORMAT="elf64-bigaarch64" |