diff options
author | Andrew Pinski <apinski@cavium.com> | 2013-11-20 16:56:20 -0800 |
---|---|---|
committer | Andrew Pinski <apinski@cavium.com> | 2013-11-21 11:17:50 -0800 |
commit | 56244278a64d224e1494e2616ed4995d9ce6ecb0 (patch) | |
tree | 77f550bcaf47f477e51a28907d6ad6ff2798fef3 /ld/emulparams | |
parent | 0d091088ea62a3ad78d01d58507c11b8e104d5a7 (diff) | |
download | gdb-56244278a64d224e1494e2616ed4995d9ce6ecb0.zip gdb-56244278a64d224e1494e2616ed4995d9ce6ecb0.tar.gz gdb-56244278a64d224e1494e2616ed4995d9ce6ecb0.tar.bz2 |
ld/ChangeLog:
* Makefile.am (ALL_64_EMULATION_SOURCES): Add eaarch64linux32.c
and eaarch64linux32b.c
(eaarch64linux32.c): New target.
(eaarch64linux32b.c): Likewise.
* Makefile.in: Regenerate.
* configure.tgt (aarch64_be-*-linux*): Add
aarch64linux32 and aarch64linux32b to targ_extra_libpath.
(aarch64-*-linux*): Likewise.
* emulparams/aarch64elf32.sh (SEPARATE_GOTPLT): Change to 12 (3 words).
* emulparams/aarch64linux32.sh: New file.
* emulparams/aarch64linux32b.sh: New file.
Diffstat (limited to 'ld/emulparams')
-rw-r--r-- | ld/emulparams/aarch64elf32.sh | 2 | ||||
-rw-r--r-- | ld/emulparams/aarch64linux32.sh | 47 | ||||
-rw-r--r-- | ld/emulparams/aarch64linux32b.sh | 2 |
3 files changed, 50 insertions, 1 deletions
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh index 68a4d80..f85c9ff 100644 --- a/ld/emulparams/aarch64elf32.sh +++ b/ld/emulparams/aarch64elf32.sh @@ -17,7 +17,7 @@ MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start EMBEDDED=yes -SEPARATE_GOTPLT=24 +SEPARATE_GOTPLT=12 IREL_IN_PLT= TEXT_START_ADDR=0x00400000 diff --git a/ld/emulparams/aarch64linux32.sh b/ld/emulparams/aarch64linux32.sh new file mode 100644 index 0000000..573b432 --- /dev/null +++ b/ld/emulparams/aarch64linux32.sh @@ -0,0 +1,47 @@ +ARCH="aarch64:ilp32" +MACHINE= +NOP=0 + +SCRIPT_NAME=elf +ELFSIZE=32 +OUTPUT_FORMAT="elf32-littleaarch64" +BIG_OUTPUT_FORMAT="elf32-bigaarch64" +LITTLE_OUTPUT_FORMAT="elf32-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=12 +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)} }" + +# Linux modifies the default library search path to first include +# a 32-bit specific directory. +case "$target" in + aarch64*-linux*) + case "$EMULATION_NAME" in + aarch64linux*) LIBPATH_SUFFIX=32 ;; + esac + ;; +esac diff --git a/ld/emulparams/aarch64linux32b.sh b/ld/emulparams/aarch64linux32b.sh new file mode 100644 index 0000000..f878b18 --- /dev/null +++ b/ld/emulparams/aarch64linux32b.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/aarch64linux32.sh +OUTPUT_FORMAT="elf32-bigaarch64" |