aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-05-04 07:56:13 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-05-04 07:56:13 +0000
commit80f826f2729b549aba219c6947164b2e96956a03 (patch)
tree83beb9999225ab3d4eb20cc5ef3926f9e6823b23
parent9306e57a5d5d9539c241a84437365c2a5b9dc0ad (diff)
downloadaports-80f826f2729b549aba219c6947164b2e96956a03.tar.bz2
aports-80f826f2729b549aba219c6947164b2e96956a03.tar.xz
main/gcc: build with NPTL support
we need set dynamic-linker to point on other ld-uClibc
-rw-r--r--main/gcc/APKBUILD10
-rw-r--r--main/gcc/gcc-dynamic-linker.patch425
2 files changed, 433 insertions, 2 deletions
diff --git a/main/gcc/APKBUILD b/main/gcc/APKBUILD
index 7ab9918c1b..436636740d 100644
--- a/main/gcc/APKBUILD
+++ b/main/gcc/APKBUILD
@@ -4,6 +4,8 @@ pkgver=4.4.3
_pv=4.4.2
_specsver=0.1.7
_espfver=0.3.6
+_uclibc_abiver=0.9.32
+
pkgrel=0
pkgdesc="The GNU Compiler Collection"
url="http://gcc.gnu.org"
@@ -18,6 +20,7 @@ source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-core-$pkgver.tar.bz2
gcc-spec-env.patch
pt_gnu_eh_frame.patch
uclibc-getipinfo.patch
+ gcc-dynamic-linker.patch
"
# ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-objc-$pkgver.tar.bz2
build ()
@@ -52,7 +55,6 @@ build ()
--disable-libstdcxx-pch \
--disable-multilib \
--disable-nls \
- --disable-threads \
--disable-werror \
--enable-__cxa_atexit \
--enable-cld \
@@ -61,7 +63,10 @@ build ()
--enable-shared \
--enable-target-optspace \
--enable-tls \
+ --enable-threads \
--with-arch=i486 \
+ --with-dynamic-linker=ld-uClibc.so.$_uclibc_abiver \
+ --with-dynamic-linker-prefix=/lib \
--with-system-zlib \
--without-system-libunwind
@@ -127,4 +132,5 @@ cd179ec4f05ee17ce76464da25a2674c gcc-g++-4.4.3.tar.bz2
528926b586b2591474b6c2a7ef8ee6d7 gcc-4.4.2-specs-0.1.7.tar.bz2
c4045bfa85d8be780affd465be9d8ca8 gcc-spec-env.patch
2db1e3482c5dd59dab70f701afa2ca80 pt_gnu_eh_frame.patch
-6cc2385c5bbd6d0da6eaedd53c8bf547 uclibc-getipinfo.patch"
+6cc2385c5bbd6d0da6eaedd53c8bf547 uclibc-getipinfo.patch
+6db5c87887beee75cde3cce86625b9ed gcc-dynamic-linker.patch"
diff --git a/main/gcc/gcc-dynamic-linker.patch b/main/gcc/gcc-dynamic-linker.patch
new file mode 100644
index 0000000000..9b34664515
--- /dev/null
+++ b/main/gcc/gcc-dynamic-linker.patch
@@ -0,0 +1,425 @@
+Submitted By: Kevin Day <thekevinday AT gmail DOT com>
+Date: 2008-12-19
+Initial Package Version: 4.3.2
+Upstream Status: Not submitted
+Description: Why not just be able to define the prefix of the dynamic linker instead of hardcoding it..
+This includes the --nostdinc patch as well, so think of this as a specs-3 patch
+This also allows for specifying the dynamic-linker as well
+
+diff -r -u gcc-4.4.0.orig/gcc/Makefile.in gcc-4.4.0/gcc/Makefile.in
+--- gcc-4.4.0.orig/gcc/Makefile.in 2009-06-06 09:15:56 -0500
++++ gcc-4.4.0/gcc/Makefile.in 2009-06-06 09:40:07 -0500
+@@ -893,7 +893,7 @@
+ # This is the variable actually used when we compile. If you change this,
+ # you probably want to update BUILD_CFLAGS in configure.ac
+ ALL_CFLAGS = $(T_CFLAGS) \
+- $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@
++ $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ @NOSTDINC@
+
+ # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro
+ # puts -I options in CPPFLAGS, our include files in the srcdir will always
+@@ -1947,6 +1947,8 @@
+ -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
+ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \
++ -DDYNAMIC_LINKER_PREFIX=\"@DYNAMICLINKERPREFIX@\" \
++ -DDYNAMIC_LINKER=\"@DYNAMICLINKER@\" \
+ -DDEFAULT_TARGET_VERSION=\"$(version)\" \
+ -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \
+ -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \
+diff -r -u gcc-4.4.0.orig/gcc/config/alpha/gnu.h gcc-4.4.0/gcc/config/alpha/gnu.h
+--- gcc-4.4.0.orig/gcc/config/alpha/gnu.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/alpha/gnu.h 2009-06-06 09:40:29 -0500
+@@ -11,7 +11,7 @@
+ } while (0)
+
+ #undef ELF_DYNAMIC_LINKER
+-#define ELF_DYNAMIC_LINKER "/lib/ld.so"
++#define ELF_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef STARTFILE_SPEC
+ #define STARTFILE_SPEC \
+diff -r -u gcc-4.4.0.orig/gcc/config/alpha/linux-elf.h gcc-4.4.0/gcc/config/alpha/linux-elf.h
+--- gcc-4.4.0.orig/gcc/config/alpha/linux-elf.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/alpha/linux-elf.h 2009-06-06 09:40:07 -0500
+@@ -27,8 +27,8 @@
+ #define EXTRA_SPECS \
+ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define UCLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #if UCLIBC_DEFAULT
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
+ #else
+diff -r -u gcc-4.4.0.orig/gcc/config/arm/linux-eabi.h gcc-4.4.0/gcc/config/arm/linux-eabi.h
+--- gcc-4.4.0.orig/gcc/config/arm/linux-eabi.h 2009-06-06 09:16:10 -0500
++++ gcc-4.4.0/gcc/config/arm/linux-eabi.h 2009-06-06 09:40:07 -0500
+@@ -61,7 +61,7 @@
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
+ #undef GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
+ use the GNU/Linux version, not the generic BPABI version. */
+diff -r -u gcc-4.4.0.orig/gcc/config/arm/linux-elf.h gcc-4.4.0/gcc/config/arm/linux-elf.h
+--- gcc-4.4.0.orig/gcc/config/arm/linux-elf.h 2009-06-06 09:16:10 -0500
++++ gcc-4.4.0/gcc/config/arm/linux-elf.h 2009-06-06 09:40:07 -0500
+@@ -62,7 +62,7 @@
+
+ #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \
+ %{b} \
+diff -r -u gcc-4.4.0.orig/gcc/config/bfin/linux.h gcc-4.4.0/gcc/config/bfin/linux.h
+--- gcc-4.4.0.orig/gcc/config/bfin/linux.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/bfin/linux.h 2009-06-06 09:40:07 -0500
+@@ -22,7 +22,7 @@
+ %{shared:-G -Bdynamic} \
+ %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+- %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
++ %{!dynamic-linker:-dynamic-linker DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER}} \
+ %{static}} -init __init -fini __fini"
+
+ #define MD_UNWIND_SUPPORT "config/bfin/linux-unwind.h"
+diff -r -u gcc-4.4.0.orig/gcc/config/cris/linux.h gcc-4.4.0/gcc/config/cris/linux.h
+--- gcc-4.4.0.orig/gcc/config/cris/linux.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/cris/linux.h 2009-06-06 09:40:07 -0500
+@@ -103,7 +103,7 @@
+ #undef CRIS_DEFAULT_CPU_VERSION
+ #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ /* We need an -rpath-link to ld.so.1, and presumably to each directory
+ specified with -B. */
+diff -r -u gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h
+--- gcc-4.4.0.orig/gcc/config/freebsd-spec.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/freebsd-spec.h 2009-06-06 09:41:42 -0500
+@@ -144,7 +144,7 @@
+ #endif
+
+ #if FBSD_MAJOR < 6
+-#define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
++#define FBSD_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #else
+-#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
++#define FBSD_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #endif
+diff -r -u gcc-4.4.0.orig/gcc/config/frv/linux.h gcc-4.4.0/gcc/config/frv/linux.h
+--- gcc-4.4.0.orig/gcc/config/frv/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/frv/linux.h 2009-06-06 09:40:07 -0500
+@@ -35,7 +35,7 @@
+ #define ENDFILE_SPEC \
+ "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -r -u gcc-4.4.0.orig/gcc/config/i386/linux.h gcc-4.4.0/gcc/config/i386/linux.h
+--- gcc-4.4.0.orig/gcc/config/i386/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/i386/linux.h 2009-06-06 09:40:07 -0500
+@@ -100,7 +100,7 @@
+
+ /* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */
+ #define LINK_EMULATION "elf_i386"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef ASM_SPEC
+ #define ASM_SPEC \
+diff -r -u gcc-4.4.0.orig/gcc/config/i386/linux64.h gcc-4.4.0/gcc/config/i386/linux64.h
+--- gcc-4.4.0.orig/gcc/config/i386/linux64.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/i386/linux64.h 2009-06-06 09:40:07 -0500
+@@ -58,8 +58,8 @@
+ When the -shared link option is used a final link is not being
+ done. */
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/" DYNAMIC_LINKER
++#define GLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef ASM_SPEC
+ #define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \
+diff -r -u gcc-4.4.0.orig/gcc/config/ia64/linux.h gcc-4.4.0/gcc/config/ia64/linux.h
+--- gcc-4.4.0.orig/gcc/config/ia64/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/ia64/linux.h 2009-06-06 09:40:07 -0500
+@@ -37,7 +37,7 @@
+ /* Define this for shared library support because it isn't in the main
+ linux.h file. */
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -r -u gcc-4.4.0.orig/gcc/config/knetbsd-gnu.h gcc-4.4.0/gcc/config/knetbsd-gnu.h
+--- gcc-4.4.0.orig/gcc/config/knetbsd-gnu.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/knetbsd-gnu.h 2009-06-06 09:40:59 -0500
+@@ -34,5 +34,5 @@
+
+ #ifdef GLIBC_DYNAMIC_LINKER
+ #undef GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #endif
+diff -r -u gcc-4.4.0.orig/gcc/config/linux.h gcc-4.4.0/gcc/config/linux.h
+--- gcc-4.4.0.orig/gcc/config/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/linux.h 2009-06-06 09:40:07 -0500
+@@ -117,9 +117,9 @@
+ GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
+ GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
+ supporting both 32-bit and 64-bit compilation. */
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define UCLIBC_DYNAMIC_LINKER32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define UCLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #define LINUX_DYNAMIC_LINKER \
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ #define LINUX_DYNAMIC_LINKER32 \
+@@ -135,3 +135,8 @@
+ #define TARGET_HAS_SINCOS (OPTION_GLIBC)
+
+ #define TARGET_POSIX_IO
++
++#ifdef NOSTDINC
++#undef STANDARD_INCLUDE_DIR
++#define STANDARD_INCLUDE_DIR 0
++#endif
+diff -r -u gcc-4.4.0.orig/gcc/config/m32r/linux.h gcc-4.4.0/gcc/config/m32r/linux.h
+--- gcc-4.4.0.orig/gcc/config/m32r/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/m32r/linux.h 2009-06-06 09:40:07 -0500
+@@ -58,7 +58,7 @@
+
+ /* If ELF is the default format, we should not use /lib/elf. */
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #if TARGET_LITTLE_ENDIAN
+diff -r -u gcc-4.4.0.orig/gcc/config/m68k/linux.h gcc-4.4.0/gcc/config/m68k/linux.h
+--- gcc-4.4.0.orig/gcc/config/m68k/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/m68k/linux.h 2009-06-06 09:40:07 -0500
+@@ -84,7 +84,7 @@
+
+ /* If ELF is the default format, we should not use /lib/elf. */
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC "-m m68kelf %{shared} \
+diff -r -u gcc-4.4.0.orig/gcc/config/mips/linux.h gcc-4.4.0/gcc/config/mips/linux.h
+--- gcc-4.4.0.orig/gcc/config/mips/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/mips/linux.h 2009-06-06 09:40:07 -0500
+@@ -64,7 +64,7 @@
+ #undef MIPS_DEFAULT_GVALUE
+ #define MIPS_DEFAULT_GVALUE 0
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ /* Borrowed from sparc/linux.h */
+ #undef LINK_SPEC
+diff -r -u gcc-4.4.0.orig/gcc/config/mips/linux64.h gcc-4.4.0/gcc/config/mips/linux64.h
+--- gcc-4.4.0.orig/gcc/config/mips/linux64.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/mips/linux64.h 2009-06-06 09:40:07 -0500
+@@ -35,10 +35,10 @@
+ %{!shared: \
+ %{profile:-lc_p} %{!profile:-lc}}"
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1"
+-#define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define GLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define GLIBC_DYNAMIC_LINKERN32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define UCLIBC_DYNAMIC_LINKERN32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #define LINUX_DYNAMIC_LINKERN32 \
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
+
+diff -r -u gcc-4.4.0.orig/gcc/config/mn10300/linux.h gcc-4.4.0/gcc/config/mn10300/linux.h
+--- gcc-4.4.0.orig/gcc/config/mn10300/linux.h 2009-06-06 09:16:11 -0500
++++ gcc-4.4.0/gcc/config/mn10300/linux.h 2009-06-06 09:40:07 -0500
+@@ -32,7 +32,7 @@
+ #undef ASM_SPEC
+ #define ASM_SPEC "%{Wa,*:%*}"
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
+diff -r -u gcc-4.4.0.orig/gcc/config/rs6000/linux64.h gcc-4.4.0/gcc/config/rs6000/linux64.h
+--- gcc-4.4.0.orig/gcc/config/rs6000/linux64.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/rs6000/linux64.h 2009-06-06 09:40:07 -0500
+@@ -342,10 +342,10 @@
+ #undef LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define GLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define UCLIBC_DYNAMIC_LINKER32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define UCLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+ #if UCLIBC_DEFAULT
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
+ #else
+diff -r -u gcc-4.4.0.orig/gcc/config/s390/linux.h gcc-4.4.0/gcc/config/s390/linux.h
+--- gcc-4.4.0.orig/gcc/config/s390/linux.h 2009-06-06 09:16:10 -0500
++++ gcc-4.4.0/gcc/config/s390/linux.h 2009-06-06 09:40:07 -0500
+@@ -72,8 +72,8 @@
+ #define MULTILIB_DEFAULTS { "m31" }
+ #endif
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
++#define GLIBC_DYNAMIC_LINKER32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define GLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+diff -r -u gcc-4.4.0.orig/gcc/config/sh/linux.h gcc-4.4.0/gcc/config/sh/linux.h
+--- gcc-4.4.0.orig/gcc/config/sh/linux.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/sh/linux.h 2009-06-06 09:40:07 -0500
+@@ -47,7 +47,7 @@
+
+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef SUBTARGET_LINK_EMUL_SUFFIX
+ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
+diff -r -u gcc-4.4.0.orig/gcc/config/sparc/linux.h gcc-4.4.0/gcc/config/sparc/linux.h
+--- gcc-4.4.0.orig/gcc/config/sparc/linux.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/sparc/linux.h 2009-06-06 09:40:07 -0500
+@@ -83,7 +83,7 @@
+
+ /* If ELF is the default format, we should not use /lib/elf. */
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+diff -r -u gcc-4.4.0.orig/gcc/config/sparc/linux64.h gcc-4.4.0/gcc/config/sparc/linux64.h
+--- gcc-4.4.0.orig/gcc/config/sparc/linux64.h 2009-06-06 09:16:15 -0500
++++ gcc-4.4.0/gcc/config/sparc/linux64.h 2009-06-06 09:40:07 -0500
+@@ -109,8 +109,8 @@
+
+ /* If ELF is the default format, we should not use /lib/elf. */
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
++#define GLIBC_DYNAMIC_LINKER64 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #ifdef SPARC_BI_ARCH
+
+diff -r -u gcc-4.4.0.orig/gcc/config/xtensa/linux.h gcc-4.4.0/gcc/config/xtensa/linux.h
+--- gcc-4.4.0.orig/gcc/config/xtensa/linux.h 2009-06-06 09:16:10 -0500
++++ gcc-4.4.0/gcc/config/xtensa/linux.h 2009-06-06 09:40:07 -0500
+@@ -43,7 +43,7 @@
+ %{mlongcalls:--longcalls} \
+ %{mno-longcalls:--no-longcalls}"
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER
+
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+diff -r -u gcc-4.4.0.orig/gcc/configure gcc-4.4.0/gcc/configure
+--- gcc-4.4.0.orig/gcc/configure 2009-06-06 09:16:16 -0500
++++ gcc-4.4.0/gcc/configure 2009-06-06 09:40:07 -0500
+@@ -1118,6 +1118,14 @@
+ --with-gc={page,zone} choose the garbage collection mechanism to use
+ with the compiler
+ --with-system-zlib use installed libz
++ --with-dynamic-linker=PATH
++ specifies path to dynamic linker.
++ example: "/lib/ld-linux.so.2", where this defines "ld-linux.so.2"
++ --with-dynamic-linker-prefix=PATH
++ specifies path to dynamic linker.
++ example: "/lib/ld-linux.so.2", where this defines "/lib"
++ --with-nostdinc build gcc to ignore standard include directories.
++ You will have to use --with-local-prefix with this option.
+ --with-slibdir=DIR shared libraries in DIR [LIBDIR]
+ --with-datarootdir=DIR Use DIR as the data root [PREFIX/share]
+ --with-docdir=DIR Install documentation in DIR [DATAROOTDIR]
+@@ -5631,6 +5639,47 @@
+ #define SIZEOF_INT $ac_cv_sizeof_int
+ _ACEOF
+
++# Check whether --with-dynamic-linker was given.
++
++DYNAMICLINKER="ld-linux.so.2" ;
++if test "${with_dynamic_linker+set}" = set; then
++ withval="$with_dynamic_linker"
++ case "${withval}" in
++yes) { { echo "$as_me:$LINENO: error: bad value "${withval}". Use something like --with-dynamic-linker=$DYNAMICLINKER" >&5
++echo "$as_me: error: bad value "${withval}". Use something like --with-dynamic-linker=$DYNAMICLINKER" >&2;}
++ { (exit 1); exit 1; }; } ;;
++no) ;;
++*) DYNAMICLINKER=$withval ;;
++esac
++fi;
++
++# Check whether --with-dynamic-linker-prefix= was given.
++
++DYNAMICLINKERPREFIX="/lib" ;
++if test "${with_dynamic_linker_prefix+set}" = set; then
++ withval="$with_dynamic_linker_prefix"
++ case "${withval}" in
++yes) { { echo "$as_me:$LINENO: error: bad value "${withval}". Use --with-dynamic-linker-prefix=/path/to/lib/" >&5
++echo "$as_me: error: bad value "${withval}". Use --with-dynamic-linker-prefix=/path/to/lib/" >&2;}
++ { (exit 1); exit 1; }; } ;;
++no) ;;
++*) DYNAMICLINKERPREFIX=$withval ;;
++esac
++
++fi;
++
++# Check whether --with-nostdinc was given.
++
++if test "${with_nostdinc+set}" = set; then
++ withval="$with_nostdinc"
++ case "${withval}" in
++yes) NOSTDINC="-DNOSTDINC" ;;
++no) ;;
++*) NOSTDINC="-DNOSTDINC" ;;
++esac
++fi;
++
++
+
+ echo "$as_me:$LINENO: checking for long" >&5
+ echo $ECHO_N "checking for long... $ECHO_C" >&6
+@@ -25488,6 +25537,9 @@
+ s,@TARGET_SYSTEM_ROOT_DEFINE@,$TARGET_SYSTEM_ROOT_DEFINE,;t t
+ s,@CROSS_SYSTEM_HEADER_DIR@,$CROSS_SYSTEM_HEADER_DIR,;t t
+ s,@onestep@,$onestep,;t t
++s,@DYNAMICLINKER@,$DYNAMICLINKER,;t t
++s,@DYNAMICLINKERPREFIX@,$DYNAMICLINKERPREFIX,;t t
++s,@NOSTDINC@,$NOSTDINC,;t t
+ s,@PKGVERSION@,$PKGVERSION,;t t
+ s,@REPORT_BUGS_TO@,$REPORT_BUGS_TO,;t t
+ s,@REPORT_BUGS_TEXI@,$REPORT_BUGS_TEXI,;t t \ No newline at end of file