Changeset View
Changeset View
Standalone View
Standalone View
devel/cloudabi-binutils-aarch64/files/patch-cloudabi
--- bfd/config.bfd | --- bfd/config.bfd | ||||
+++ bfd/config.bfd | +++ bfd/config.bfd | ||||
@@ -645,6 +645,10 @@ case "${targ}" in | @@ -177,6 +177,11 @@ | ||||
targ_archs="$targ_archs bfd_arm_arch" | targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec" | ||||
want64=true | |||||
;; | ;; | ||||
#ifdef BFD64 | + aarch64-*-cloudabi*) | ||||
+ x86_64-*-cloudabi*) | + targ_defvec=aarch64_elf64_le_cloudabi_vec | ||||
+ targ_defvec=x86_64_elf64_cloudabi_vec | + targ_selvecs=aarch64_elf64_be_cloudabi_vec | ||||
+ want64=true | + want64=true | ||||
+ ;; | + ;; | ||||
x86_64-*-darwin*) | aarch64-*-linux*) | ||||
targ_defvec=x86_64_mach_o_vec | targ_defvec=aarch64_elf64_le_vec | ||||
targ_selvecs="i386_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" | targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec" | ||||
--- bfd/configure | --- bfd/configure | ||||
+++ bfd/configure | +++ bfd/configure | ||||
@@ -15540,6 +15540,7 @@ do | @@ -15288,7 +15288,9 @@ | ||||
x86_64_elf32_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; | aarch64_elf32_be_vec) tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; | ||||
x86_64_elf32_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; | aarch64_elf32_le_vec) tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; | ||||
x86_64_elf64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | aarch64_elf64_be_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; | ||||
+ x86_64_elf64_cloudabi_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | + aarch64_elf64_be_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; | ||||
x86_64_elf64_fbsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; | ||||
x86_64_elf64_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | + aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; | ||||
x86_64_elf64_sol2_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | alpha_ecoff_le_vec) tb="$tb coff-alpha.lo ecoff.lo ecofflink.lo"; target_size=64 ;; | ||||
--- bfd/configure.ac | alpha_elf64_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; | ||||
+++ bfd/configure.ac | alpha_elf64_fbsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; | ||||
@@ -1008,6 +1008,7 @@ do | --- bfd/elfnn-aarch64.c | ||||
x86_64_elf32_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; | +++ bfd/elfnn-aarch64.c | ||||
x86_64_elf32_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; | @@ -8061,3 +8061,22 @@ | ||||
x86_64_elf64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | #define elf_backend_obj_attrs_section ".ARM.attributes" | ||||
+ x86_64_elf64_cloudabi_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | |||||
x86_64_elf64_fbsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | |||||
x86_64_elf64_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | |||||
x86_64_elf64_sol2_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; | |||||
--- bfd/elf64-x86-64.c | |||||
+++ bfd/elf64-x86-64.c | |||||
@@ -5927,6 +5927,21 @@ static const struct bfd_elf_special_section | |||||
#include "elf64-target.h" | #include "elfNN-target.h" | ||||
+ | |||||
+/* CloudABI support. */ | +/* CloudABI support. */ | ||||
+ | + | ||||
+#undef TARGET_LITTLE_SYM | +#undef TARGET_LITTLE_SYM | ||||
+#define TARGET_LITTLE_SYM x86_64_elf64_cloudabi_vec | +#define TARGET_LITTLE_SYM aarch64_elfNN_le_cloudabi_vec | ||||
+#undef TARGET_LITTLE_NAME | +#undef TARGET_LITTLE_NAME | ||||
+#define TARGET_LITTLE_NAME "elf64-x86-64-cloudabi" | +#define TARGET_LITTLE_NAME "elfNN-littleaarch64-cloudabi" | ||||
+#undef TARGET_BIG_SYM | |||||
+#define TARGET_BIG_SYM aarch64_elfNN_be_cloudabi_vec | |||||
+#undef TARGET_BIG_NAME | |||||
+#define TARGET_BIG_NAME "elfNN-bigaarch64-cloudabi" | |||||
+ | + | ||||
+#undef ELF_OSABI | +#undef ELF_OSABI | ||||
+#define ELF_OSABI ELFOSABI_CLOUDABI | +#define ELF_OSABI ELFOSABI_CLOUDABI | ||||
+ | + | ||||
+#undef elf64_bed | +#undef elfNN_bed | ||||
+#define elf64_bed elf64_x86_64_cloudabi_bed | +#define elfNN_bed elfNN_aarch64_cloudabi_bed | ||||
+ | + | ||||
+#include "elf64-target.h" | +#include "elfNN-target.h" | ||||
+ | |||||
/* FreeBSD support. */ | |||||
#undef TARGET_LITTLE_SYM | |||||
--- bfd/targets.c | --- bfd/targets.c | ||||
+++ bfd/targets.c | +++ bfd/targets.c | ||||
@@ -885,6 +885,7 @@ extern const bfd_target x86_64_coff_vec; | @@ -563,7 +563,9 @@ | ||||
extern const bfd_target x86_64_elf32_vec; | extern const bfd_target aarch64_elf32_be_vec; | ||||
extern const bfd_target x86_64_elf32_nacl_vec; | extern const bfd_target aarch64_elf32_le_vec; | ||||
extern const bfd_target x86_64_elf64_vec; | extern const bfd_target aarch64_elf64_be_vec; | ||||
+extern const bfd_target x86_64_elf64_cloudabi_vec; | +extern const bfd_target aarch64_elf64_be_cloudabi_vec; | ||||
extern const bfd_target x86_64_elf64_fbsd_vec; | extern const bfd_target aarch64_elf64_le_vec; | ||||
extern const bfd_target x86_64_elf64_nacl_vec; | +extern const bfd_target aarch64_elf64_le_cloudabi_vec; | ||||
extern const bfd_target x86_64_elf64_sol2_vec; | extern const bfd_target alpha_ecoff_le_vec; | ||||
@@ -1402,6 +1403,7 @@ static const bfd_target * const _bfd_target_vector[] = | extern const bfd_target alpha_elf64_vec; | ||||
&x86_64_elf32_vec, | extern const bfd_target alpha_elf64_fbsd_vec; | ||||
&x86_64_elf32_nacl_vec, | @@ -938,7 +940,9 @@ | ||||
&x86_64_elf64_vec, | &aarch64_elf32_be_vec, | ||||
+ &x86_64_elf64_cloudabi_vec, | &aarch64_elf32_le_vec, | ||||
&x86_64_elf64_fbsd_vec, | &aarch64_elf64_be_vec, | ||||
&x86_64_elf64_nacl_vec, | + &aarch64_elf64_be_cloudabi_vec, | ||||
&x86_64_elf64_sol2_vec, | &aarch64_elf64_le_vec, | ||||
+ &aarch64_elf64_le_cloudabi_vec, | |||||
#endif | |||||
#ifdef BFD64 | |||||
--- gas/configure.tgt | --- gas/configure.tgt | ||||
+++ gas/configure.tgt | +++ gas/configure.tgt | ||||
@@ -470,6 +470,7 @@ case ${generic_target} in | @@ -470,6 +470,7 @@ case ${generic_target} in | ||||
z8k-*-coff | z8k-*-sim) fmt=coff ;; | z8k-*-coff | z8k-*-sim) fmt=coff ;; | ||||
*-*-aout | *-*-scout) fmt=aout ;; | *-*-aout | *-*-scout) fmt=aout ;; | ||||
+ *-*-cloudabi*) fmt=elf ;; | + *-*-cloudabi*) fmt=elf ;; | ||||
*-*-dragonfly*) fmt=elf em=dragonfly ;; | *-*-dragonfly*) fmt=elf em=dragonfly ;; | ||||
*-*-freebsd* | *-*-kfreebsd*-gnu) fmt=elf em=freebsd ;; | *-*-freebsd* | *-*-kfreebsd*-gnu) fmt=elf em=freebsd ;; | ||||
*-*-bsd*) fmt=aout em=sun3 ;; | *-*-bsd*) fmt=aout em=sun3 ;; | ||||
--- include/elf/common.h | --- include/elf/common.h | ||||
+++ include/elf/common.h | +++ include/elf/common.h | ||||
@@ -73,6 +73,7 @@ | @@ -73,6 +73,7 @@ | ||||
#define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel */ | #define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel */ | ||||
#define ELFOSABI_AROS 15 /* AROS */ | #define ELFOSABI_AROS 15 /* AROS */ | ||||
#define ELFOSABI_FENIXOS 16 /* FenixOS */ | #define ELFOSABI_FENIXOS 16 /* FenixOS */ | ||||
+#define ELFOSABI_CLOUDABI 17 /* Nuxi CloudABI */ | +#define ELFOSABI_CLOUDABI 17 /* Nuxi CloudABI */ | ||||
#define ELFOSABI_C6000_ELFABI 64 /* Bare-metal TMS320C6000 */ | #define ELFOSABI_C6000_ELFABI 64 /* Bare-metal TMS320C6000 */ | ||||
#define ELFOSABI_C6000_LINUX 65 /* Linux TMS320C6000 */ | #define ELFOSABI_C6000_LINUX 65 /* Linux TMS320C6000 */ | ||||
#define ELFOSABI_ARM 97 /* ARM */ | #define ELFOSABI_ARM 97 /* ARM */ | ||||
--- ld/Makefile.am | |||||
+++ ld/Makefile.am | |||||
@@ -483,6 +483,7 @@ ALL_64_EMULATION_SOURCES = \ | |||||
eelf_k1om.c \ | |||||
eelf_k1om_fbsd.c \ | |||||
eelf_x86_64.c \ | |||||
+ eelf_x86_64_cloudabi.c \ | |||||
eelf_x86_64_fbsd.c \ | |||||
eelf_x86_64_nacl.c \ | |||||
eelf_x86_64_sol2.c \ | |||||
@@ -1938,6 +1939,10 @@ eelf_k1om_fbsd.c: $(srcdir)/emulparams/elf_k1om_fbsd.sh \ | |||||
eelf_x86_64.c: $(srcdir)/emulparams/elf_x86_64.sh \ | |||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | |||||
+eelf_x86_64_cloudabi.c: $(srcdir)/emulparams/elf_x86_64_cloudabi.sh \ | |||||
+ $(srcdir)/emulparams/elf_x86_64.sh \ | |||||
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | |||||
+ | |||||
eelf_x86_64_fbsd.c: $(srcdir)/emulparams/elf_x86_64_fbsd.sh \ | |||||
$(srcdir)/emulparams/elf_x86_64.sh \ | |||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | |||||
--- ld/Makefile.in | --- ld/Makefile.in | ||||
+++ ld/Makefile.in | +++ ld/Makefile.in | ||||
@@ -808,6 +808,7 @@ ALL_64_EMULATION_SOURCES = \ | @@ -727,6 +727,8 @@ | ||||
eelf_k1om.c \ | eaarch64elf32.c \ | ||||
eelf_k1om_fbsd.c \ | eaarch64elfb.c \ | ||||
eelf_x86_64.c \ | eaarch64elf32b.c \ | ||||
+ eelf_x86_64_cloudabi.c \ | + eaarch64cloudabi.c \ | ||||
eelf_x86_64_fbsd.c \ | + eaarch64cloudabib.c \ | ||||
eelf_x86_64_nacl.c \ | eaarch64linux.c \ | ||||
eelf_x86_64_sol2.c \ | eaarch64linuxb.c \ | ||||
@@ -1269,6 +1270,7 @@ distclean-compile: | eaarch64linux32.c \ | ||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_l1om_fbsd.Po@am__quote@ | @@ -3001,6 +3003,14 @@ | ||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_s390.Po@am__quote@ | $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \ | ||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64.Po@am__quote@ | $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | ||||
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_cloudabi.Po@am__quote@ | |||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_fbsd.Po@am__quote@ | |||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_nacl.Po@am__quote@ | |||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_sol2.Po@am__quote@ | |||||
@@ -3429,6 +3431,10 @@ eelf_k1om_fbsd.c: $(srcdir)/emulparams/elf_k1om_fbsd.sh \ | |||||
eelf_x86_64.c: $(srcdir)/emulparams/elf_x86_64.sh \ | |||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | |||||
+eelf_x86_64_cloudabi.c: $(srcdir)/emulparams/elf_x86_64_cloudabi.sh \ | +eaarch64cloudabi.c: $(srcdir)/emulparams/aarch64cloudabi.sh \ | ||||
+ $(srcdir)/emulparams/elf_x86_64.sh \ | + $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \ | ||||
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | ||||
+ | + | ||||
eelf_x86_64_fbsd.c: $(srcdir)/emulparams/elf_x86_64_fbsd.sh \ | +eaarch64cloudabib.c: $(srcdir)/emulparams/aarch64cloudabib.sh $(srcdir)/emulparams/aarch64cloudabi.sh \ | ||||
$(srcdir)/emulparams/elf_x86_64.sh \ | + $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \ | ||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | ||||
+ | |||||
eaarch64linux.c: $(srcdir)/emulparams/aarch64linux.sh \ | |||||
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \ | |||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} | |||||
--- ld/configure.tgt | --- ld/configure.tgt | ||||
+++ ld/configure.tgt | +++ ld/configure.tgt | ||||
@@ -228,6 +228,7 @@ i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; | @@ -49,6 +49,8 @@ | ||||
i[3-7]86-*-aros*) targ_emul=elf_i386 ;; | targ_extra_emuls="aarch64elf aarch64elf32 aarch64elf32b armelfb armelf" ;; | ||||
i[3-7]86-*-rdos*) targ_emul=elf_i386 ;; | aarch64-*-elf) targ_emul=aarch64elf | ||||
x86_64-*-rdos*) targ_emul=elf64rdos ;; | targ_extra_emuls="aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb" ;; | ||||
+x86_64-*-cloudabi*) targ_emul=elf_x86_64_cloudabi ;; | +aarch64-*-cloudabi*) targ_emul=aarch64cloudabi | ||||
i[3-7]86-*-bsd) targ_emul=i386bsd ;; | + targ_extra_emuls=aarch64cloudabib ;; | ||||
i[3-7]86-*-bsd386) targ_emul=i386bsd ;; | aarch64_be-*-linux*) targ_emul=aarch64linuxb | ||||
i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; | targ_extra_libpath="aarch64linux aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi" | ||||
--- /dev/null | targ_extra_emuls="aarch64elfb aarch64elf aarch64elf32 aarch64elf32b armelfb armelf $targ_extra_libpath" ;; | ||||
+++ ld/emulparams/elf_x86_64_cloudabi.sh | --- ld/emulparams/aarch64cloudabi.sh | ||||
+++ ld/emulparams/aarch64cloudabi.sh | |||||
@@ -0,0 +1,37 @@ | |||||
+ARCH=aarch64 | |||||
+MACHINE= | |||||
+NOP=0 | |||||
+ | |||||
+SCRIPT_NAME=elf | |||||
+ELFSIZE=64 | |||||
+OUTPUT_FORMAT="elf64-littleaarch64-cloudabi" | |||||
+BIG_OUTPUT_FORMAT="elf64-bigaarch64-cloudabi" | |||||
+LITTLE_OUTPUT_FORMAT="elf64-littleaarch64-cloudabi" | |||||
+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)} }" | |||||
--- ld/emulparams/aarch64cloudabib.sh | |||||
+++ ld/emulparams/aarch64cloudabib.sh | |||||
@@ -0,0 +1,2 @@ | @@ -0,0 +1,2 @@ | ||||
+. ${srcdir}/emulparams/elf_x86_64.sh | +. ${srcdir}/emulparams/aarch64cloudabi.sh | ||||
+OUTPUT_FORMAT="elf64-x86-64-cloudabi" | +OUTPUT_FORMAT="elf64-bigaarch64-cloudabi" |