Author: robert
Date: 2006-08-16 19:02:34 -0600 (Wed, 16 Aug 2006)
New Revision: 1641
Added:
trunk/gcc/gcc-4.1.1-specs_x86-2.patch
Log:
Added gcc-4.1.1-specs_x86-2.patch
Added: trunk/gcc/gcc-4.1.1-specs_x86-2.patch
===================================================================
--- trunk/gcc/gcc-4.1.1-specs_x86-2.patch (rev 0)
+++ trunk/gcc/gcc-4.1.1-specs_x86-2.patch 2006-08-17 01:02:34 UTC (rev
1641)
@@ -0,0 +1,143 @@
+Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
+Date: 2006-07-05
+Initial Package Version: 4.1.1
+Upstream Status: Not submitted - Not currently portable outside i386, it'll be
rejected.
+Origin: None
+Description: This patch is a replacement for the LFS gcc-specs patch.
+This patch adds --with-dynamic-linker= and --with-nostdinc to gcc/configure.
+--with-dynamic-linker= can point to glibc, uclibc, or whatever. If
$with_dynamic_linker
+is set then it will be used to discover if the libc it links to has gcc41+
support for
+stack smashing protector (usable by Glibc, uClibc, BSD, or whatever).
+
+If you modify this patch to add more platforms than i386 Linux, please send me
the
+differences so I can add them to this patch. If one magical day all platforms
are
+supported then this patch could be added to mainline GCC.
+
+diff -Naur gcc-4.1.1.orig/gcc/Makefile.in gcc-4.1.1/gcc/Makefile.in
+--- gcc-4.1.1.orig/gcc/Makefile.in 2006-05-17 18:38:58.000000000 +0000
++++ gcc-4.1.1/gcc/Makefile.in 2006-07-06 04:01:30.000000000 +0000
+@@ -793,7 +793,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 = $(X_CFLAGS) $(T_CFLAGS) \
++ALL_CFLAGS = $(X_CFLAGS) $(T_CFLAGS) @NOSTDINC@ \
+ $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) $(XCFLAGS)
@DEFS@
+
+ # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro
+@@ -1611,7 +1611,8 @@
+ (SHLIB_LINK='$(SHLIB_LINK)' \
+ SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
+- $(DRIVER_DEFINES) \
++ $(DRIVER_DEFINES) `if test -n "@DYNAMICLINKER@" ; then \
++ echo -D__DYNAMIC_LINKER__=\"@[EMAIL PROTECTED]" ; fi` \
+ -c $(srcdir)/gcc.c $(OUTPUT_OPTION))
+
+ gccspec.o: gccspec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H)
+diff -Naur gcc-4.1.1.orig/gcc/config/i386/linux.h
gcc-4.1.1/gcc/config/i386/linux.h
+--- gcc-4.1.1.orig/gcc/config/i386/linux.h 2005-08-10 17:53:01.000000000
+0000
++++ gcc-4.1.1/gcc/config/i386/linux.h 2006-07-06 04:01:30.000000000 +0000
+@@ -105,7 +105,11 @@
+ /* If ELF is the default format, we should not use /lib/elf. */
+
+ #define LINK_EMULATION "elf_i386"
++#ifdef __DYNAMIC_LINKER__
++#define DYNAMIC_LINKER __DYNAMIC_LINKER__
++#else
+ #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#endif
+
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS \
+diff -Naur gcc-4.1.1.orig/gcc/config/linux.h gcc-4.1.1/gcc/config/linux.h
+--- gcc-4.1.1.orig/gcc/config/linux.h 2005-08-06 13:26:35.000000000 +0000
++++ gcc-4.1.1/gcc/config/linux.h 2006-07-06 04:01:30.000000000 +0000
+@@ -104,3 +104,8 @@
+ #define TARGET_C99_FUNCTIONS 1
+
+ #define TARGET_POSIX_IO
++
++#ifdef NOSTDINC
++#undef STANDARD_INCLUDE_DIR
++#define STANDARD_INCLUDE_DIR 0
++#endif
+diff -Naur gcc-4.1.1.orig/gcc/configure gcc-4.1.1/gcc/configure
+--- gcc-4.1.1.orig/gcc/configure 2006-02-14 16:50:45.000000000 +0000
++++ gcc-4.1.1/gcc/configure 2006-07-06 04:03:28.000000000 +0000
+@@ -935,6 +935,11 @@
+ with the compiler
+ --with-system-zlib use installed libz
+ --with-slibdir=DIR shared libraries in DIR LIBDIR
++ --with-dynamic-linker=PATH
++ specifies path to dynamic linker.
++ example: "/lib/ld-linux.so.2"
++ --with-nostdinc build gcc to ignore standard include directories.
++ You will have to use --with-local-prefix with this
option.
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -4678,6 +4683,29 @@
+ #define SIZEOF_INT $ac_cv_sizeof_int
+ _ACEOF
+
++# Check whether --with-dynamic-linker= was given.
++
++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
--with-dynamic-linker=/path/to/lib/ld.so" >&5
++echo "$as_me: error: bad value "${withval}". Use
--with-dynamic-linker=/path/to/lib/ld.so" >&2;}
++ { (exit 1); exit 1; }; } ;;
++no) ;;
++*) DYNAMICLINKER=$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
+@@ -16174,6 +16202,24 @@
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ gcc_cv_libc_provides_ssp=no
++ if test -n "$DYNAMICLINKER" && test -n "$gcc_cv_objdump" ; then
++ # Check whether the libc we are going to link to has __stack_chk_* in
it.
++ # We need objdump for this, grep, sed, dirname, and tr.
++
++ # First figure out the filename of our libc.so.
++ echo 'main(){}' > conftest.c
++ $CC conftest.c -o conftest -Wl,--dynamic-linker
-Wl,${with_dynamic_linker}
++ our_libc_filename=`$gcc_cv_objdump -p conftest|grep NEEDED| \
++ sed -e "[EMAIL PROTECTED]@$(dirname ${DYNAMICLINKER})/@"|tr -d
[:space:]`
++ rm -f conftest.c conftest
++
++ # Then look for __stack_chk_*
++ if test "`readelf -s $our_libc_filename | grep __stack_chk_`"; then
++ gcc_cv_libc_provides_ssp=yes
++ fi
++ # Don't stop. $glibc_header_dir might be needed later in this script.
++ fi
++
+ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
+ if test "x$with_sysroot" = x; then
+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
+@@ -17240,6 +17286,8 @@
+ 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,@NOSTDINC@,$NOSTDINC,;t t
+ s,@SET_MAKE@,$SET_MAKE,;t t
+ s,@AWK@,$AWK,;t t
+ s,@LN_S@,$LN_S,;t t
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page