mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-02-20 17:12:55 +00:00
Robert P. J. DAY says:
Based on feedback from Mike Frysinger, add the following patchset for glibc-2.7. Not stress-tested, but at least make it available for interested testers.
This commit is contained in:
parent
55fbe7b02b
commit
20eeb8e122
185
patches/glibc/2.7/120-glibc-2.7-cygwin.patch
Normal file
185
patches/glibc/2.7/120-glibc-2.7-cygwin.patch
Normal file
@ -0,0 +1,185 @@
|
||||
Fixes
|
||||
elf/librtld.os: In function `process_envvars': : undefined reference to `__access'
|
||||
...
|
||||
when building glibc-2.3.x on cygwin
|
||||
|
||||
Idea from
|
||||
http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch
|
||||
Basically, make glibc use .oST as suffix for 'object static'
|
||||
instead of .oS, since cygwin has trouble distinguishing .os from .oS
|
||||
(Original patch had .on, but .oST is more mnemonic for 'object static')
|
||||
|
||||
glibc-linuxthreads-2.3.5 also requires a patch, see
|
||||
../glibc-linuxthreads-2.3.5/glibc-linuxthreads-2.3.5-cygwin.patch
|
||||
|
||||
[ forward ported to glibc-2.3.5 by Petr Cvachoucek:
|
||||
|
||||
Message-ID: <4282FCBA.3040000@unicontrols.cz>
|
||||
Date: Thu, 12 May 2005 08:50:34 +0200
|
||||
From: Petr Cvachoucek <cvachoucek@unicontrols.cz>
|
||||
To: Dan Kegel <dank@kegel.com>
|
||||
CC: crossgcc@sources.redhat.com
|
||||
Subject: Patches to build gcc 3.4.3 / glibc 2.3.5 on cygwin
|
||||
|
||||
Hi Dan,
|
||||
following patches are needed to build gcc-3.4.3/glibc-2.3.5 toolchain
|
||||
on cygwin. Tested to build toolchains for powerpc 604 and 750 targets.
|
||||
|
||||
--
|
||||
Petr Cvachoucek
|
||||
Unicontrols a.s.
|
||||
http://www.unicontrols.cz
|
||||
]
|
||||
|
||||
diff -aur glibc-2.3.5/Makeconfig glibc-2.3.5-cygwin/Makeconfig
|
||||
--- glibc-2.3.5/Makeconfig 2005-02-16 11:50:19.000000000 +0100
|
||||
+++ glibc-2.3.5-cygwin/Makeconfig 2005-05-11 08:24:51.046875000 +0200
|
||||
@@ -470,7 +470,7 @@
|
||||
# run the linked programs.
|
||||
link-libc = -Wl,-rpath-link=$(rpath-link) \
|
||||
$(common-objpfx)libc.so$(libc.so-version) \
|
||||
- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
|
||||
+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib)
|
||||
# This is how to find at build-time things that will be installed there.
|
||||
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
|
||||
endif
|
||||
@@ -691,7 +691,7 @@
|
||||
# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
|
||||
# to pass different flags for each flavor.
|
||||
libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
|
||||
-all-object-suffixes := .o .os .op .og .ob .oS
|
||||
+all-object-suffixes := .o .os .op .og .ob .oST
|
||||
object-suffixes :=
|
||||
CPPFLAGS-.o = $(pic-default)
|
||||
CFLAGS-.o = $(filter %frame-pointer,$(+cflags))
|
||||
@@ -747,14 +747,14 @@
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# Build special library that contains the static-only routines for libc.
|
||||
-object-suffixes-for-libc += .oS
|
||||
+object-suffixes-for-libc += .oST
|
||||
|
||||
# Must build the routines as PIC, though, because they can end up in (users')
|
||||
# shared objects. We don't want to use CFLAGS-os because users may, for
|
||||
# example, make that processor-specific.
|
||||
-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
|
||||
-CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
|
||||
-libtype.oS = lib%_nonshared.a
|
||||
+CFLAGS-.oST = $(CFLAGS-.o) $(PIC-ccflag)
|
||||
+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
|
||||
+libtype.oST = lib%_nonshared.a
|
||||
endif
|
||||
|
||||
# The assembler can generate debug information too.
|
||||
diff -aur glibc-2.3.5/Makerules glibc-2.3.5-cygwin/Makerules
|
||||
--- glibc-2.3.5/Makerules 2004-12-15 19:52:39.000000000 +0100
|
||||
+++ glibc-2.3.5-cygwin/Makerules 2005-05-11 08:25:33.578125000 +0200
|
||||
@@ -417,7 +417,7 @@
|
||||
# Bounded pointer thunks are only built for *.ob
|
||||
elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks))
|
||||
|
||||
-elide-routines.oS += $(filter-out $(static-only-routines),\
|
||||
+elide-routines.oST += $(filter-out $(static-only-routines),\
|
||||
$(routines) $(aux) $(sysdep_routines)) \
|
||||
$(elide-bp-thunks)
|
||||
elide-routines.os += $(static-only-routines) $(elide-bp-thunks)
|
||||
@@ -984,7 +984,7 @@
|
||||
install: $(inst_libdir)/libc.so
|
||||
$(inst_libdir)/libc.so: $(common-objpfx)format.lds \
|
||||
$(common-objpfx)libc.so$(libc.so-version) \
|
||||
- $(inst_libdir)/$(patsubst %,$(libtype.oS),\
|
||||
+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\
|
||||
$(libprefix)$(libc-name)) \
|
||||
$(+force)
|
||||
(echo '/* GNU ld script';\
|
||||
@@ -992,7 +992,7 @@
|
||||
echo ' the static library, so try that secondarily. */';\
|
||||
cat $<; \
|
||||
echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
|
||||
- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
|
||||
+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\
|
||||
' AS_NEEDED (' $(slibdir)/$(rtld-installed-name) ') )' \
|
||||
) > $@.new
|
||||
mv -f $@.new $@
|
||||
diff -aur glibc-2.3.5/extra-lib.mk glibc-2.3.5-cygwin/extra-lib.mk
|
||||
--- glibc-2.3.5/extra-lib.mk 2004-12-02 23:54:47.000000000 +0100
|
||||
+++ glibc-2.3.5-cygwin/extra-lib.mk 2005-05-11 08:27:28.156250000 +0200
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
ifneq (,$($(lib)-static-only-routines))
|
||||
ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version)))
|
||||
-object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS)
|
||||
+object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oST)
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
# Add each flavor of library to the lists of things to build and install.
|
||||
install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o)))
|
||||
-extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\
|
||||
+extra-objs += $(foreach o,$(filter-out .os .oST,$(object-suffixes-$(lib))),\
|
||||
$(patsubst %,%$o,$(filter-out \
|
||||
$($(lib)-shared-only-routines),\
|
||||
$(all-$(lib)-routines))))
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
|
||||
# Use o-iterator.mk to generate a rule for each flavor of library.
|
||||
-ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib))))
|
||||
+ifneq (,$(filter-out .os .oST,$(object-suffixes-$(lib))))
|
||||
define o-iterator-doit
|
||||
$(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \
|
||||
$(patsubst %,$(objpfx)%$o,\
|
||||
@@ -65,7 +65,7 @@
|
||||
$(all-$(lib)-routines))); \
|
||||
$$(build-extra-lib)
|
||||
endef
|
||||
-object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib)))
|
||||
+object-suffixes-left = $(filter-out .os .oST,$(object-suffixes-$(lib)))
|
||||
include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left))
|
||||
endif
|
||||
|
||||
@@ -77,9 +77,9 @@
|
||||
$(build-extra-lib)
|
||||
endif
|
||||
|
||||
-ifneq (,$(filter .oS,$(object-suffixes-$(lib))))
|
||||
-$(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \
|
||||
- $(patsubst %,$(objpfx)%.oS,\
|
||||
+ifneq (,$(filter .oST,$(object-suffixes-$(lib))))
|
||||
+$(objpfx)$(patsubst %,$(libtype.oST),$(lib:lib%=%)): \
|
||||
+ $(patsubst %,$(objpfx)%.oST,\
|
||||
$(filter $($(lib)-static-only-routines),\
|
||||
$(all-$(lib)-routines)))
|
||||
$(build-extra-lib)
|
||||
diff -aur glibc-2.3.5/nptl/Makefile glibc-2.3.5-cygwin/nptl/Makefile
|
||||
--- glibc-2.3.5/nptl/Makefile 2005-02-16 09:45:56.000000000 +0100
|
||||
+++ glibc-2.3.5-cygwin/nptl/Makefile 2005-05-11 08:26:01.812500000 +0200
|
||||
@@ -375,7 +375,7 @@
|
||||
|
||||
$(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \
|
||||
$(objpfx)libpthread.so$(libpthread.so-version) \
|
||||
- $(inst_libdir)/$(patsubst %,$(libtype.oS),\
|
||||
+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\
|
||||
$(libprefix)pthread) \
|
||||
$(+force)
|
||||
(echo '/* GNU ld script';\
|
||||
@@ -383,7 +383,7 @@
|
||||
echo ' the static library, so try that secondarily. */';\
|
||||
cat $<; \
|
||||
echo 'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \
|
||||
- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\
|
||||
+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)pthread)'\
|
||||
')' \
|
||||
) > $@.new
|
||||
mv -f $@.new $@
|
||||
diff -aur glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile
|
||||
--- glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200
|
||||
+++ glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-05-11 08:26:25.937500000 +0200
|
||||
@@ -10,4 +10,4 @@
|
||||
ASFLAGS-.op += -Wa,-Av9a
|
||||
ASFLAGS-.og += -Wa,-Av9a
|
||||
ASFLAGS-.ob += -Wa,-Av9a
|
||||
-ASFLAGS-.oS += -Wa,-Av9a
|
||||
+ASFLAGS-.oST += -Wa,-Av9a
|
26
patches/glibc/2.7/140-glibc-2.7-configure-apple-as.patch
Normal file
26
patches/glibc/2.7/140-glibc-2.7-configure-apple-as.patch
Normal file
@ -0,0 +1,26 @@
|
||||
http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch
|
||||
http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html
|
||||
|
||||
The following makes it possible to configure glibc-2.3.2 on Mac OS X,
|
||||
where the assembler but doesn't understand the --version flag.
|
||||
|
||||
Fixes the symptom
|
||||
checking whether ld is GNU ld... no
|
||||
checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as
|
||||
checking version of /usr/libexec/gcc/darwin/ppc/as...
|
||||
<PAUSES HERE AND JUST SITS THERE DOING NOTHING>
|
||||
|
||||
NOTE: This patch should apparently be pushed upstream so we don't need to
|
||||
keep adding it here.
|
||||
|
||||
--- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003
|
||||
+++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004
|
||||
@@ -4524,7 +4524,7 @@
|
||||
# Found it, now check the version.
|
||||
{ echo "$as_me:$LINENO: checking version of $AS" >&5
|
||||
echo $ECHO_N "checking version of $AS... $ECHO_C" >&6; }
|
||||
- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
+ ac_prog_version=`$AS -v </dev/null 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
2.1[3-9]*)
|
43
patches/glibc/2.7/150-glibc-2.7-fix-pr631.patch
Normal file
43
patches/glibc/2.7/150-glibc-2.7-fix-pr631.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From dank@kegel.com
|
||||
Wed Jun 15 09:12:43 PDT 2005
|
||||
|
||||
Fixes
|
||||
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r'
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent'
|
||||
... 53 lines deleted ...
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r'
|
||||
collect2: ld returned 1 exit status
|
||||
make[2]: *** [/build/gcc-3.4.3-glibc-2.3.5-hdrs-2.6.11.2/i686-unknown-linux-gnu/build-glibc/elf/ldconfig] Error 1
|
||||
|
||||
when building glibc with --enable-static-nss.
|
||||
|
||||
See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631
|
||||
|
||||
--- glibc-2.3.5/Makeconfig.old Wed Jun 15 08:13:12 2005
|
||||
+++ glibc-2.3.5/Makeconfig Wed Jun 15 08:13:14 2005
|
||||
@@ -508,7 +508,7 @@
|
||||
|
||||
# The static libraries.
|
||||
ifeq (yes,$(build-static))
|
||||
-link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a
|
||||
+link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a
|
||||
else
|
||||
ifeq (yes,$(build-shared))
|
||||
# We can try to link the programs with lib*_pic.a...
|
||||
--- glibc-2.3.5/elf/Makefile.old Wed Jun 15 07:46:49 2005
|
||||
+++ glibc-2.3.5/elf/Makefile Wed Jun 15 08:14:00 2005
|
||||
@@ -120,6 +120,13 @@
|
||||
install-bin-script = ldd
|
||||
endif
|
||||
|
||||
+ifeq (yes,$(build-static-nss))
|
||||
+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
|
||||
+resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
|
||||
+otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
|
||||
+ $(resolvobjdir)/libresolv.a
|
||||
+endif
|
||||
+
|
||||
others = sprof sln
|
||||
install-bin = sprof
|
||||
others-static = sln
|
43
patches/glibc/2.7/160-glibc-2.7-i686-assembler.patch
Normal file
43
patches/glibc/2.7/160-glibc-2.7-i686-assembler.patch
Normal file
@ -0,0 +1,43 @@
|
||||
If gcc is configured to generate i686 code or better by default (like
|
||||
when using the --with-arch=pentium3 configure option), then the __i686
|
||||
macro will always be defined automatically and thus screw up the
|
||||
compilation of some .S files.
|
||||
|
||||
http://bugs.gentoo.org/131108
|
||||
http://sourceware.org/ml/libc-alpha/2006-04/msg00090.html
|
||||
|
||||
2006-04-25 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/i386/sysdep.h (__i686): Undefine.
|
||||
|
||||
Index: glibc-2.4/sysdeps/unix/sysv/linux/i386/sysdep.h
|
||||
===================================================================
|
||||
--- glibc-2.4/sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469)
|
||||
+++ glibc-2.4/sysdeps/unix/sysv/linux/i386/sysdep.h (working copy)
|
||||
@@ -29,6 +29,10 @@
|
||||
#include <dl-sysdep.h>
|
||||
#include <tls.h>
|
||||
|
||||
+#if defined __i686 && defined __ASSEMBLER__
|
||||
+#undef __i686
|
||||
+#define __i686 __i686
|
||||
+#endif
|
||||
|
||||
/* For Linux we can use the system call table in the header file
|
||||
/usr/include/asm/unistd.h
|
||||
Index: glibc-2.4/nptl/sysdeps/pthread/pt-initfini.c
|
||||
===================================================================
|
||||
--- glibc-2.4/nptl/sysdeps/pthread/pt-initfini.c (revision 1469)
|
||||
+++ glibc-2.4/nptl/sysdeps/pthread/pt-initfini.c (working copy)
|
||||
@@ -45,6 +45,11 @@
|
||||
/* Embed an #include to pull in the alignment and .end directives. */
|
||||
asm ("\n#include \"defs.h\"");
|
||||
|
||||
+asm ("\n#if defined __i686 && defined __ASSEMBLER__");
|
||||
+asm ("\n#undef __i686");
|
||||
+asm ("\n#define __i686 __i686");
|
||||
+asm ("\n#endif");
|
||||
+
|
||||
/* The initial common code ends here. */
|
||||
asm ("\n/*@HEADER_ENDS*/");
|
||||
|
@ -0,0 +1,18 @@
|
||||
(C) 2007 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
|
||||
License: LGPL v2.1
|
||||
|
||||
Shut off a stupid warning: preffered-stack-boundary must be between 4 ad 12,
|
||||
and 2 is not.
|
||||
|
||||
diff -dur glibc-2.5.orig/sysdeps/i386/Makefile glibc-2.5/sysdeps/i386/Makefile
|
||||
--- glibc-2.5.orig/sysdeps/i386/Makefile 2005-03-06 01:18:16.000000000 +0100
|
||||
+++ glibc-2.5/sysdeps/i386/Makefile 2007-05-27 17:49:37.000000000 +0200
|
||||
@@ -36,7 +36,7 @@
|
||||
ifeq ($(subdir),csu)
|
||||
sysdep-CFLAGS += -mpreferred-stack-boundary=4
|
||||
else
|
||||
-sysdep-CFLAGS += -mpreferred-stack-boundary=2
|
||||
+sysdep-CFLAGS += -mpreferred-stack-boundary=4
|
||||
# Likewise, any function which calls user callbacks
|
||||
uses-callbacks += -mpreferred-stack-boundary=4
|
||||
# Likewise, any stack alignment tests
|
24
patches/glibc/2.7/make-install-lib-all.patch.dont_apply
Normal file
24
patches/glibc/2.7/make-install-lib-all.patch.dont_apply
Normal file
@ -0,0 +1,24 @@
|
||||
From http://svn.exactcode.de/t2/trunk/package/base/glibc32/make-install-lib-all.patch
|
||||
Rule to install all needed libraries, not just the ones installed by install-lib,
|
||||
yet not install programs.
|
||||
Needed because we can't use the main install target, as we can't build programs before
|
||||
we have the final gcc installed; linking fails because libeh.a is not present,
|
||||
and glibc insists on linking programs with that library.
|
||||
|
||||
diff -Naur glibc-2.3.4.orig/Makerules glibc-2.3.4/Makerules
|
||||
--- glibc-2.3.4.orig/Makerules 2004-12-15 20:52:39.000000000 +0200
|
||||
+++ glibc-2.3.4/Makerules 2005-02-19 15:16:31.415125176 +0200
|
||||
@@ -867,6 +867,13 @@
|
||||
installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
|
||||
$(inst_libdir)/$(patsubst %,$(libtype$o),\
|
||||
$(libprefix)$(libc-name)))
|
||||
+
|
||||
+install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \
|
||||
+ $(inst_slibdir)/libc-$(version).so \
|
||||
+ $(inst_libdir)/libc.so \
|
||||
+ $(inst_libdir)/libc.a \
|
||||
+ install-lib
|
||||
+
|
||||
install: $(installed-libcs)
|
||||
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
|
||||
$(make-target-directory)
|
Loading…
x
Reference in New Issue
Block a user