This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, AArch64, ILP32] Add big-endian linker target


Hi,

This patch adds the big-endian ELF32 linker target.

OK for the trunk after the approval of its prerequisite ILP32-related patches?


Thanks,
Yufeng


ld/

        * Makefile.am (ALL_64_EMULATION_SOURCES): Add eaarch64elf32b.c.
        (eaarch64elf32b.c): New dependency and rule.
        * Makefile.in: Re-generated.
        * configure.tgt (aarch64-*-elf): Add aarch64elf32b.
(aarch64_be-*-elf, aarch64_be-*-linux*, aarch64-*-linux*): Likewise.
        * emulparams/aarch64elf32b.sh: New file.

diff --git a/ld/Makefile.am b/ld/Makefile.am
index 7a4c48d..d9aad59 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -494,6 +494,7 @@ ALL_64_EMULATION_SOURCES = \
 	eaarch64elf.c \
 	eaarch64elf32.c \
 	eaarch64elfb.c \
+	eaarch64elf32b.c \
 	eaarch64linux.c \
 	eaarch64linuxb.c \
 	eelf32_x86_64.c \
@@ -1801,6 +1802,10 @@ eaarch64elfb.c: $(srcdir)/emulparams/aarch64elfb.sh $(srcdir)/emulparams/aarch64
   $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} aarch64elfb "$(tdir_aarch64elfb)"
+eaarch64elf32b.c: $(srcdir)/emulparams/aarch64elf32b.sh $(srcdir)/emulparams/aarch64elf32.sh \
+  $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} aarch64elf32b "$(tdir_aarch64elf32b)"
 eaarch64linux.c: $(srcdir)/emulparams/aarch64linux.sh \
   $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 3fc3ec2..dcbc371 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -46,13 +46,13 @@ targ64_extra_libpath=
 # break the alpha sorting.
 case "${targ}" in
 aarch64_be-*-elf)	targ_emul=aarch64elfb
-			targ_extra_emuls="aarch64elf aarch64elf32 armelfb armelf" ;;
+			targ_extra_emuls="aarch64elf aarch64elf32 aarch64elf32b armelfb armelf" ;;
 aarch64-*-elf)		targ_emul=aarch64elf
-			targ_extra_emuls="aarch64elf32 aarch64elfb armelf armelfb" ;;
+			targ_extra_emuls="aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb" ;;
 aarch64_be-*-linux*)	targ_emul=aarch64linuxb
-			targ_extra_emuls="aarch64linux aarch64elfb aarch64elf aarch64elf32 armelfb_linux_eabi armelf_linux_eabi armelfb armelf" ;;
+			targ_extra_emuls="aarch64linux aarch64elfb aarch64elf aarch64elf32 aarch64elf32b armelfb_linux_eabi armelf_linux_eabi armelfb armelf" ;;
 aarch64-*-linux*)	targ_emul=aarch64linux
-			targ_extra_emuls="aarch64linuxb aarch64elf aarch64elf32 aarch64elfb armelf_linux_eabi armelfb_linux_eabi armelf armelfb" ;;
+			targ_extra_emuls="aarch64linuxb aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf_linux_eabi armelfb_linux_eabi armelf armelfb" ;;
 alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
 		        targ_emul=elf64alpha_fbsd
 			targ_extra_emuls="elf64alpha alpha"
diff --git a/ld/emulparams/aarch64elf32b.sh b/ld/emulparams/aarch64elf32b.sh
new file mode 100644
index 0000000..aa0a2c5
--- /dev/null
+++ b/ld/emulparams/aarch64elf32b.sh
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/aarch64elf32.sh
+OUTPUT_FORMAT="elf32-bigaarch64"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]