aboutsummaryrefslogtreecommitdiff
path: root/ld/emulparams
diff options
context:
space:
mode:
authorAndrew Pinski <apinski@cavium.com>2013-11-20 16:56:20 -0800
committerAndrew Pinski <apinski@cavium.com>2013-11-21 11:17:50 -0800
commit56244278a64d224e1494e2616ed4995d9ce6ecb0 (patch)
tree77f550bcaf47f477e51a28907d6ad6ff2798fef3 /ld/emulparams
parent0d091088ea62a3ad78d01d58507c11b8e104d5a7 (diff)
downloadgdb-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.sh2
-rw-r--r--ld/emulparams/aarch64linux32.sh47
-rw-r--r--ld/emulparams/aarch64linux32b.sh2
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"