diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h index f578ecb..ff4d2ce 100644 --- a/gcc/config/alpha/linux-elf.h +++ b/gcc/config/alpha/linux-elf.h @@ -24,8 +24,8 @@ along with GCC; see the file COPYING3. If not see #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 DEFAULT_LIBC == LIBC_UCLIBC #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" #elif DEFAULT_LIBC == LIBC_GLIBC diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h index 80bd825..64b4595 100644 --- a/gcc/config/arm/linux-eabi.h +++ b/gcc/config/arm/linux-eabi.h @@ -62,7 +62,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 --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h index 270e12b..dd613ef 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -59,7 +59,7 @@ #define LIBGCC_SPEC "%{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*} \ %{static:-Bstatic} \ diff --git a/gcc/config/bfin/linux.h b/gcc/config/bfin/linux.h index f91cf17..263351a 100644 --- a/gcc/config/bfin/linux.h +++ b/gcc/config/bfin/linux.h @@ -45,7 +45,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see %{shared:-G -Bdynamic} \ %{!shared: %{!static: \ %{rdynamic:-export-dynamic} \ - -dynamic-linker /lib/ld-uClibc.so.0} \ + -dynamic-linker DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER} \ %{static}} -init __init -fini __fini" #undef TARGET_SUPPORTS_SYNC_CALLS diff --git a/gcc/config/cris/linux.h b/gcc/config/cris/linux.h index df10721..35f6d77 100644 --- a/gcc/config/cris/linux.h +++ b/gcc/config/cris/linux.h @@ -103,7 +103,7 @@ along with GCC; see the file COPYING3. If not see #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 #undef CRIS_LINK_SUBTARGET_SPEC #define CRIS_LINK_SUBTARGET_SPEC \ diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h index 770a3d1..bd02fd6 100644 --- a/gcc/config/freebsd-spec.h +++ b/gcc/config/freebsd-spec.h @@ -129,9 +129,9 @@ is built with the --enable-threads configure-time option.} \ #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 /* NOTE: The freebsd-spec.h header is included also for various diff --git a/gcc/config/frv/linux.h b/gcc/config/frv/linux.h index 9847712..089afdf 100644 --- a/gcc/config/frv/linux.h +++ b/gcc/config/frv/linux.h @@ -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 --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 73681fe..8c51d30 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -21,4 +21,4 @@ along with GCC; see the file COPYING3. If not see . */ #define GNU_USER_LINK_EMULATION "elf_i386" -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" +#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h index 5b0a212..185c911 100644 --- a/gcc/config/i386/linux64.h +++ b/gcc/config/i386/linux64.h @@ -28,6 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define GNU_USER_LINK_EMULATION64 "elf_x86_64" #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64" -#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 #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2" + diff --git a/gcc/config/ia64/linux.h b/gcc/config/ia64/linux.h index 00b0ddb..de6bb1e 100644 --- a/gcc/config/ia64/linux.h +++ b/gcc/config/ia64/linux.h @@ -56,7 +56,7 @@ do { \ /* 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 --git a/gcc/config/knetbsd-gnu.h b/gcc/config/knetbsd-gnu.h index 30fa99a..5059b85 100644 --- a/gcc/config/knetbsd-gnu.h +++ b/gcc/config/knetbsd-gnu.h @@ -33,4 +33,5 @@ along with GCC; see the file COPYING3. If not see #undef GNU_USER_DYNAMIC_LINKER -#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1" +#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER + diff --git a/gcc/config/linux.h b/gcc/config/linux.h index dbbeea5..0147ece 100644 --- a/gcc/config/linux.h +++ b/gcc/config/linux.h @@ -74,10 +74,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 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_LINKERX32 "/lib/ldx32-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 UCLIBC_DYNAMIC_LINKERX32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER #define BIONIC_DYNAMIC_LINKER "/system/bin/linker" #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker" #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" @@ -104,3 +104,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* Whether we have sincos that follows the GNU extension. */ #undef TARGET_HAS_SINCOS #define TARGET_HAS_SINCOS (OPTION_GLIBC || OPTION_BIONIC) + +#ifdef NOSTDINC +#undef STANDARD_INCLUDE_DIR +#define STANDARD_INCLUDE_DIR 0 +#endif diff --git a/gcc/config/m32r/linux.h b/gcc/config/m32r/linux.h index bc7802b..6ff030f 100644 --- a/gcc/config/m32r/linux.h +++ b/gcc/config/m32r/linux.h @@ -38,7 +38,7 @@ When the -shared link option is used a final link is not being done. */ -#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 --git a/gcc/config/m68k/linux.h b/gcc/config/m68k/linux.h index 325faf7..01bb765 100644 --- a/gcc/config/m68k/linux.h +++ b/gcc/config/m68k/linux.h @@ -72,7 +72,7 @@ along with GCC; see the file COPYING3. If not see When the -shared link option is used a final link is not being done. */ -#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 --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h index bce9c17..46a2b0f 100644 --- a/gcc/config/mips/linux.h +++ b/gcc/config/mips/linux.h @@ -18,4 +18,5 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ -#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" +#define GLIBC_DYNAMIC_LINKER DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER + diff --git a/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h index 6e92719..736aa6d 100644 --- a/gcc/config/mips/linux64.h +++ b/gcc/config/mips/linux64.h @@ -23,11 +23,11 @@ along with GCC; see the file COPYING3. If not see #define GNU_USER_LINK_EMULATION64 "elf64%{EB:b}%{EL:l}tsmip" #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32" -#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 BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" +#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 BIONIC_DYNAMIC_LINKERN32 DYNAMIC_LINKER_PREFIX "/" DYNAMIC_LINKER #define GNU_USER_DYNAMIC_LINKERN32 \ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \ BIONIC_DYNAMIC_LINKERN32) diff --git a/gcc/config/mn10300/linux.h b/gcc/config/mn10300/linux.h index d63b95a..93c54b1 100644 --- a/gcc/config/mn10300/linux.h +++ b/gcc/config/mn10300/linux.h @@ -33,7 +33,7 @@ #undef ASM_SPEC #define ASM_SPEC "" -#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 --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 7c516eb..687264e 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -358,10 +358,10 @@ extern int dot_symbols; #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 DEFAULT_LIBC == LIBC_UCLIBC #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" #elif DEFAULT_LIBC == LIBC_GLIBC diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h index e5385ec..72df4ac 100644 --- a/gcc/config/s390/linux.h +++ b/gcc/config/s390/linux.h @@ -61,8 +61,8 @@ along with GCC; see the file COPYING3. If not see #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 --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h index a5c2734..9eff3c4 100644 --- a/gcc/config/sh/linux.h +++ b/gcc/config/sh/linux.h @@ -45,7 +45,7 @@ along with GCC; see the file COPYING3. If not see #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 --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index 60dc869..9930e21 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -84,7 +84,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); When the -shared link option is used a final link is not being done. */ -#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 --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index 14966b9..c134401 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -93,8 +93,8 @@ along with GCC; see the file COPYING3. If not see 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.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 --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h index f5caeb7..c9274e4 100644 --- a/gcc/config/xtensa/linux.h +++ b/gcc/config/xtensa/linux.h @@ -45,7 +45,7 @@ along with GCC; see the file COPYING3. If not see %{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 --git a/gcc/configure b/gcc/configure index 3e9152a..4e1fdd3 100755 --- a/gcc/configure +++ b/gcc/configure @@ -755,6 +755,9 @@ AWK SET_MAKE REPORT_BUGS_TEXI REPORT_BUGS_TO +DYNAMICLINKER +DYNAMICLINKERPREFIX +NOSTDINC PKGVERSION CONFIGURE_SPECS CROSS_SYSTEM_HEADER_DIR @@ -1669,6 +1672,18 @@ Optional Packages: --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-linker-hash-style={sysv,gnu,both} specify the linker hash style @@ -6378,6 +6393,47 @@ fi +# 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; + + # --------------------- # Warnings and checking --- ./gcc/Makefile.in.orig +++ ./gcc/Makefile.in @@ -986,7 +986,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 = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \ - $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ + $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ @NOSTDINC@ # The C++ version. ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \ @@ -2090,6 +2090,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)/\" \