⛏️ index : buildtools.git

author Simon South <ssouth@simonsouth.com> 2015-10-24 10:30:26.0 -04:00:00
committer Jérôme Duval <jerome.duval@gmail.com> 2015-10-28 18:05:28.0 +01:00:00
commit
0b1666ccbe17f60e8db7b6263311a4617146e6df [patch]
tree
e3a1b67a843b9ac42b08b244e0542c1da9d17c51
parent
bfa8159478be6a8d4062f7d11d71315dc81a6829
download
0b1666ccbe17f60e8db7b6263311a4617146e6df.tar.gz

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 <jerome.duval@gmail.com>

Diff

 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
+++ a/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
+++ a/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
+++ a/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
+++ a/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
+++ a/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
+++ a/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
+++ a/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
+++ a/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
+++ a/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}"