From d6d61ef14d6e96fde9ee008adc396690aae4a469 Mon Sep 17 00:00:00 2001
From: P. J. McDermott <pjm@nac.net>
Date: Sat, 27 Apr 2013 11:40:26 -0400
Subject: build: Set GCC's ELF INTERP.

---
(limited to 'build')

diff --git a/build b/build
index 81142cb..b8088aa 100755
--- a/build
+++ b/build
@@ -2,6 +2,16 @@
 
 base_version = $$(printf '%s\n' '$(OPK_SOURCE)' | sed 's/^gcc-//')
 
+# /lib/<target>/ld.so is a symbolic link for use by GCC to find the system's
+# dynamic linker.  It should be provided by the development package of any
+# standard C library.
+# ProteanOS GCC should build binaries with an ELF INTERP field as follows:
+#   /lib/<target>/<soname>
+# <soname> is the SONAME of the target's dynamic linker.
+elf_interp = /lib/$(target)/$(elf_interp_soname)
+elf_interp_soname = $$(readelf -d "/lib/$(target)/ld.so" | \
+	sed -n 's/^.*(SONAME).*\[\([^]]*\)\].*$$/\1/p')
+
 common_opts = \
 	--with-pkgversion='GCC for ProteanOS' \
 	--program-suffix="-$(base_version)" \
@@ -11,6 +21,8 @@ common_opts = \
 	--without-included-gettext \
 	--with-nls \
 	--with-sysroot="$${OPK_SYSROOT:-/}" \
+	--with-stage1-ldflags="-Wl,--dynamic-linker=$(elf_interp)" \
+	--with-boot-ldflags="-Wl,--dynamic-linker=$(elf_interp)" \
 	--enable-clocale=gnu
 
 full_opts = \
--
cgit v0.9.1