From 0b1666ccbe17f60e8db7b6263311a4617146e6df Mon Sep 17 00:00:00 2001 From: Simon South Date: Sat, 24 Oct 2015 10:30:26 -0400 Subject: [PATCH] binutils: ld: Set ELF interpreter to "/system/runtime_loader" For x86_64 this includes defining a new linker emulation, "elf_x86_64_haiku" (to match the existing "elf_i386_haiku") and updating gcc accordingly. Signed-off-by: Jérôme Duval --- binutils/ld/Makefile.in | 5 +++++ binutils/ld/configure.tgt | 4 ++-- binutils/ld/emulparams/armelf_haiku.sh | 2 ++ binutils/ld/emulparams/elf32ppchaiku.sh | 1 + binutils/ld/emulparams/elf_haiku.sh | 1 + binutils/ld/emulparams/elf_i386_haiku.sh | 1 + binutils/ld/emulparams/elf_mipsel_haiku.sh | 1 + binutils/ld/emulparams/elf_x86_64_haiku.sh | 2 ++ gcc/gcc/config/i386/haiku64.h | 2 +- 9 files changed, 16 insertions(+), 3 deletions(-) diff --git a/binutils/ld/Makefile.in b/binutils/ld/Makefile.in index 06744c9..edff373 100644 --- a/binutils/ld/Makefile.in +++ b/binutils/ld/Makefile.in @@ -789,6 +789,7 @@ eelf_k1om_fbsd.c \ eelf_x86_64.c \ eelf_x86_64_fbsd.c \ + eelf_x86_64_haiku.c \ eelf_x86_64_nacl.c \ eelf_x86_64_sol2.c \ ehppa64linux.c \ @@ -3373,6 +3374,10 @@ $(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} + +eelf_x86_64_haiku.c: $(srcdir)/emulparams/elf_x86_64_haiku.sh \ $(srcdir)/emulparams/elf_x86_64.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/binutils/ld/configure.tgt b/binutils/ld/configure.tgt index 94cf5c4..35c7804 100644 --- a/binutils/ld/configure.tgt +++ b/binutils/ld/configure.tgt @@ -338,8 +338,8 @@ i[3-7]86-*-beospe*) targ_emul=i386beos ;; i[3-7]86-*-beos*) targ_emul=elf_i386_be ;; i[3-7]86-*-haiku*) targ_emul=elf_i386_haiku ;; -x86_64-*-haiku*) targ_emul=elf_x86_64 - targ_extra_emuls=elf_i386_haiku ;; +x86_64-*-haiku*) targ_emul=elf_x86_64_haiku + targ_extra_emuls="elf_x86_64 elf_i386_haiku" ;; i[3-7]86-*-vxworks*) targ_emul=elf_i386_vxworks ;; i[3-7]86-*-chaos) targ_emul=elf_i386_chaos ;; diff --git a/binutils/ld/emulparams/armelf_haiku.sh b/binutils/ld/emulparams/armelf_haiku.sh index 39b7f65..9dcdf54 100644 --- a/binutils/ld/emulparams/armelf_haiku.sh +++ b/binutils/ld/emulparams/armelf_haiku.sh @@ -22,3 +22,5 @@ # ARM does not support .s* sections. NO_SMALL_DATA=yes + +. ${srcdir}/emulparams/elf_haiku.sh diff --git a/binutils/ld/emulparams/elf32ppchaiku.sh b/binutils/ld/emulparams/elf32ppchaiku.sh index 976880c..547e5c8 100644 --- a/binutils/ld/emulparams/elf32ppchaiku.sh +++ b/binutils/ld/emulparams/elf32ppchaiku.sh @@ -1,4 +1,5 @@ . ${srcdir}/emulparams/elf32ppc.sh +. ${srcdir}/emulparams/elf_haiku.sh TEXT_START_ADDR=0x200000 MAXPAGESIZE=0x1000 GENERATE_SHLIB_SCRIPT=yes diff --git a/binutils/ld/emulparams/elf_haiku.sh b/binutils/ld/emulparams/elf_haiku.sh new file mode 100644 index 0000000..401eedc 100644 --- /dev/null +++ b/binutils/ld/emulparams/elf_haiku.sh @@ -1,0 +1,1 @@ +ELF_INTERPRETER_NAME=\"/system/runtime_loader\" diff --git a/binutils/ld/emulparams/elf_i386_haiku.sh b/binutils/ld/emulparams/elf_i386_haiku.sh index 25ca6bc..b70da86 100644 --- a/binutils/ld/emulparams/elf_i386_haiku.sh +++ b/binutils/ld/emulparams/elf_i386_haiku.sh @@ -9,3 +9,4 @@ TEMPLATE_NAME=elf32 GENERATE_SHLIB_SCRIPT=yes NO_SMALL_DATA=yes +. ${srcdir}/emulparams/elf_haiku.sh diff --git a/binutils/ld/emulparams/elf_mipsel_haiku.sh b/binutils/ld/emulparams/elf_mipsel_haiku.sh index ff9c325..ab38e23 100644 --- a/binutils/ld/emulparams/elf_mipsel_haiku.sh +++ b/binutils/ld/emulparams/elf_mipsel_haiku.sh @@ -1,2 +1,3 @@ . ${srcdir}/emulparams/elf32lmip.sh +. ${srcdir}/emulparams/elf_haiku.sh diff --git a/binutils/ld/emulparams/elf_x86_64_haiku.sh b/binutils/ld/emulparams/elf_x86_64_haiku.sh new file mode 100644 index 0000000..f049559 100644 --- /dev/null +++ b/binutils/ld/emulparams/elf_x86_64_haiku.sh @@ -1,0 +1,2 @@ +. ${srcdir}/emulparams/elf_x86_64.sh +. ${srcdir}/emulparams/elf_haiku.sh diff --git a/gcc/gcc/config/i386/haiku64.h b/gcc/gcc/config/i386/haiku64.h index c225cdc..1a63749 100644 --- a/gcc/gcc/config/i386/haiku64.h +++ b/gcc/gcc/config/i386/haiku64.h @@ -65,7 +65,7 @@ #undef LINK_SPEC #define LINK_SPEC \ - "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386_haiku} \ + "%{" SPEC_64 ":-m elf_x86_64_haiku} %{" SPEC_32 ":-m elf_i386_haiku} \ %{shared|r|pie|fno-pic|fno-PIC|fno-pie|fno-PIE:; \ :-pie --allow-shlib-undefined --export-dynamic} %{shared:-shared} \ %{nostart|shared:-e 0;:-no-undefined}" -- gitore 0.2.2