Hi. Please add the attached gcc-4.1.1-specs_x86 patch, and the 
linux-unistd_x86_PIC patch.

With the glibc dl_execstack_PaX and pt_pax patches, please do this (rename and 
symlink):

mv glibc-2.3.6-dl_execstack_PaX-1.patch         
glibc-2.4-dl_execstack_PaX-1.patch
ln -s glibc-2.4-dl_execstack_PaX-1.patch glibc-2.3.6-dl_execstack_PaX-1.patch

mv glibc-2.3.6-pt_pax-1.patch glibc-2.4-pt_pax-1.patch
ln -s glibc-2.4-pt_pax-1.patch glibc-2.3.6-pt_pax-1.patch

Thanks
robert
Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
Date: 2006-06-24
Initial Package Version: 4.1.0
Upstream Status: Not submitted - LFS specific
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.

diff -Naur gcc-4.1.0.orig/gcc/Makefile.in gcc-4.1.0/gcc/Makefile.in
--- gcc-4.1.0.orig/gcc/Makefile.in	2006-02-16 15:23:24.000000000 +0000
+++ gcc-4.1.0/gcc/Makefile.in	2006-05-08 20:39:23.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.0.orig/gcc/config/i386/linux.h gcc-4.1.0/gcc/config/i386/linux.h
--- gcc-4.1.0.orig/gcc/config/i386/linux.h	2005-08-10 17:53:01.000000000 +0000
+++ gcc-4.1.0/gcc/config/i386/linux.h	2006-05-08 20:42:31.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.0.orig/gcc/config/linux.h gcc-4.1.0/gcc/config/linux.h
--- gcc-4.1.0.orig/gcc/config/linux.h	2005-08-06 13:26:35.000000000 +0000
+++ gcc-4.1.0/gcc/config/linux.h	2006-05-08 20:43:06.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.0.orig/gcc/configure gcc-4.1.0/gcc/configure
--- gcc-4.1.0.orig/gcc/configure	2006-02-14 16:50:45.000000000 +0000
+++ gcc-4.1.0/gcc/configure	2006-05-08 20:51:37.000000000 +0000
@@ -935,6 +935,10 @@
                           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
 
 Some influential environment variables:
   CC          C compiler command
@@ -4678,6 +4682,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} given for dynamic linker" >&5
+echo "$as_me: error: bad value ${withval} given for dynamic linker" >&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
@@ -17240,6 +17267,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
Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
Date: 2006-06-24
Initial Package Version: 2.6.17.1
Upstream Status: Not submitted
Origin: Gentoo - unistd.h-i386-pic.patch
Description: This patch adds position independent assembly for syscalls.
This fixes problems with llseek(), util-linux, vsftpd, proftpd, and more.

diff -Naur linux-2.6.17.1.orig/include/asm-i386/unistd.h linux-2.6.17.1/include/asm-i386/unistd.h
--- linux-2.6.17.1.orig/include/asm-i386/unistd.h	2006-06-20 09:31:55.000000000 +0000
+++ linux-2.6.17.1/include/asm-i386/unistd.h	2006-06-24 18:23:34.000000000 +0000
@@ -349,6 +349,21 @@
 __syscall_return(type,__res); \
 }
 
+#ifdef __PIC__
+#define _syscall1(type,name,type1,arg1) \
+type name(type1 arg1) \
+{ \
+long __res; \
+__asm__ volatile (\
+	"pushl %%ebx\n\t" \
+	"movl %2,%%ebx\n\t" \
+	"int $0x80\n\t" \
+	"popl %%ebx\n\t" \
+	: "=a" (__res) \
+	: "0" (__NR_##name),"r" ((long)(arg1))); \
+__syscall_return(type,__res); \
+}
+#else
 #define _syscall1(type,name,type1,arg1) \
 type name(type1 arg1) \
 { \
@@ -358,7 +373,23 @@
 	: "0" (__NR_##name),"ri" ((long)(arg1)) : "memory"); \
 __syscall_return(type,__res); \
 }
+#endif
 
+#ifdef __PIC__
+#define _syscall2(type,name,type1,arg1,type2,arg2) \
+type name(type1 arg1,type2 arg2) \
+{ \
+long __res; \
+__asm__ volatile (\
+	"pushl %%ebx\n\t" \
+	"movl %2,%%ebx\n\t" \
+	"int $0x80\n\t" \
+	"popl %%ebx\n\t" \
+	: "=a" (__res) \
+	: "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2))); \
+__syscall_return(type,__res); \
+}
+#else
 #define _syscall2(type,name,type1,arg1,type2,arg2) \
 type name(type1 arg1,type2 arg2) \
 { \
@@ -369,7 +400,24 @@
 	: "memory"); \
 __syscall_return(type,__res); \
 }
+#endif
 
+#ifdef __PIC__
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
+type name(type1 arg1,type2 arg2,type3 arg3) \
+{ \
+long __res; \
+__asm__ volatile (\
+	"pushl %%ebx\n\t" \
+	"movl %2,%%ebx\n\t" \
+	"int $0x80\n\t" \
+	"popl %%ebx\n\t" \
+	: "=a" (__res) \
+	: "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2)), \
+		  "d" ((long)(arg3))); \
+__syscall_return(type,__res); \
+}
+#else
 #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
 type name(type1 arg1,type2 arg2,type3 arg3) \
 { \
@@ -380,7 +428,24 @@
 		  "d" ((long)(arg3)) : "memory"); \
 __syscall_return(type,__res); \
 }
+#endif
 
+#ifdef __PIC__
+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
+{ \
+long __res; \
+__asm__ volatile (\
+	"pushl %%ebx\n\t" \
+	"movl %2,%%ebx\n\t" \
+	"int $0x80\n\t" \
+	"popl %%ebx\n\t" \
+	: "=a" (__res) \
+	: "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2)), \
+	  "d" ((long)(arg3)),"S" ((long)(arg4))); \
+__syscall_return(type,__res); \
+} 
+#else
 #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
 type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
 { \
@@ -391,7 +456,25 @@
 	  "d" ((long)(arg3)),"S" ((long)(arg4)) : "memory"); \
 __syscall_return(type,__res); \
 } 
+#endif
 
+#ifdef __PIC__
+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
+	  type5,arg5) \
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
+{ \
+long __res; \
+__asm__ volatile (\
+	"pushl %%ebx\n\t" \
+	"movl %2,%%ebx\n\t" \
+	"int $0x80\n\t" \
+	"popl %%ebx\n\t" \
+	: "=a" (__res) \
+	: "0" (__NR_##name),"m" ((long)(arg1)),"c" ((long)(arg2)), \
+	  "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \
+__syscall_return(type,__res); \
+}
+#else
 #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
 	  type5,arg5) \
 type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
@@ -405,7 +488,30 @@
 	: "memory"); \
 __syscall_return(type,__res); \
 }
+#endif
 
+#ifdef __PIC__
+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
+	  type5,arg5,type6,arg6) \
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
+{ \
+long __res; \
+__asm__ volatile (\
+	"pushl %%ebp\n\t" \
+	"movl %%eax,%%ebp\n\t" \
+	"movl %1,%%eax\n\t" \
+	"pushl %%ebx\n\t" \
+	"movl %2,%%ebx\n\t" \
+	"int $0x80\n\t" \
+	"popl %%ebx\n\t" \
+	"popl %%ebp\n\t" \
+	: "=a" (__res) \
+	: "i" (__NR_##name),"m" ((long)(arg1)),"c" ((long)(arg2)), \
+	  "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)), \
+	  "0" ((long)(arg6))); \
+__syscall_return(type,__res); \
+}
+#else
 #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
 	  type5,arg5,type6,arg6) \
 type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
@@ -421,6 +527,7 @@
 	: "memory"); \
 __syscall_return(type,__res); \
 }
+#endif
 
 #ifdef __KERNEL__
 #define __ARCH_WANT_IPC_PARSE_VERSION
-- 
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to