summaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2008-08-21 21:09:27 +0000
committerMarc Kleine-Budde <mkl@pengutronix.de>2008-08-21 21:09:27 +0000
commit685dd1e7cfa11ca8b527e362f7ec8a4edc2baaab (patch)
treee8c5ab03f11ee2cc93c6e872c23777933c4bcb75 /patches
parentd43e202ff0dae3f1e66e94a8d3a6e0856bb207cc (diff)
downloadOSELAS.Toolchain-685dd1e7cfa11ca8b527e362f7ec8a4edc2baaab.tar.gz
OSELAS.Toolchain-685dd1e7cfa11ca8b527e362f7ec8a4edc2baaab.tar.xz
* glibc-2.8-20080811, glibc-2.8-ports-20080811:
added patches for glibc-2.8 git-svn-id: https://svn.pengutronix.de/svn/oselas/toolchain/trunks/OSELAS.Toolchain-trunk@7235 f8d472c7-5700-0410-ac5a-87979cec3adf
Diffstat (limited to 'patches')
-rw-r--r--patches/glibc-2.8-20080811/generic/configure-sane_readelf.diff119
-rw-r--r--patches/glibc-2.8-20080811/generic/configure_in-sane_readelf.diff35
-rw-r--r--patches/glibc-2.8-20080811/generic/cross_timezone.diff489
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/0030_all_glibc-respect-env-CPPFLAGS.patch32
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/0040_all_glibc-i586-chk.patch32
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/0070_all_glibc-i386-x86_64-revert-clone-cfi.patch55
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1010_all_glibc-queue-header-updates.patch89
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1030_all_glibc-manual-no-perl.patch29
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1040_all_2.3.3-localedef-fix-trampoline.patch74
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1050_all_glibc-posix-awk.patch23
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1055_all_glibc-resolv-dynamic.patch44
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1075_all_glibc-section-comments.patch29
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1080_all_glibc-no-inline-gmon.patch38
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1090_all_glibc-2.3.6-fix-pr631.patch52
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1100_all_glibc-2.3.3-china.patch35
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1103_all_glibc-new-valencian-locale.patch122
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1120_all_glibc-2.5-strict-aliasing.patch91
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/1130_all_glibc-2.4-undefine-__i686.patch49
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/3000_all_2.3.6-dl_execstack-PaX-support.patch73
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/3010_all_2.3.3_pre20040117-pt_pax.patch35
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/6400_all_sh-glibc-2.3.2-fpscr_values.patch42
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/6415_all_sh-glibc-2.5-no-asm-user-header.patch76
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/6416_all_sh-glibc-2.5-no-asm-elf-header.patch33
-rw-r--r--patches/glibc-2.8-20080811/generic/gentoo/6645_all_glibc-mips_shn_undef-hack.patch29
-rw-r--r--patches/glibc-2.8-20080811/generic/glibc-2.5_stdlib_longlong.h37
-rw-r--r--patches/glibc-2.8-20080811/generic/glibc-configure-apple-as.patch47
-rw-r--r--patches/glibc-2.8-20080811/generic/glibc-configure-old-gcc.patch17
-rw-r--r--patches/glibc-2.8-20080811/generic/make-install-lib-all.patch45
-rw-r--r--patches/glibc-2.8-20080811/generic/series30
-rw-r--r--patches/glibc-2.8-ports-20080811/generic/gentoo/6224_all_glibc-2.7-lowlevellock-includes.patch28
-rw-r--r--patches/glibc-2.8-ports-20080811/generic/gentoo/6225_all_glibc-2.7-cargs6.patch31
-rw-r--r--patches/glibc-2.8-ports-20080811/generic/gentoo/6605_all_glibc-2.4-fpu-cw-mips.patch19
-rw-r--r--patches/glibc-2.8-ports-20080811/generic/glibc-2.5_ports_sysdeps_arm_mp_clz_tab.c33
-rw-r--r--patches/glibc-2.8-ports-20080811/generic/series7
-rw-r--r--patches/glibc-2.8-ports-20080811/generic/sysdeps_mips_mips32_Makefile-bootstrap.diff28
35 files changed, 2047 insertions, 0 deletions
diff --git a/patches/glibc-2.8-20080811/generic/configure-sane_readelf.diff b/patches/glibc-2.8-20080811/generic/configure-sane_readelf.diff
new file mode 100644
index 0000000..cce10eb
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/configure-sane_readelf.diff
@@ -0,0 +1,119 @@
+---
+ configure | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 88 insertions(+), 2 deletions(-)
+
+Index: glibc-2.8-20080811/configure
+===================================================================
+--- glibc-2.8-20080811.orig/configure
++++ glibc-2.8-20080811/configure
+@@ -5988,6 +5988,92 @@ _ACEOF
+ fi
+ fi
+
++ # Extract the first word of "$target_alias-readelf", so it can be a program name with args.
++set dummy $target_alias-readelf; ac_word=$2
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++if test "${ac_cv_prog_READELF+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$READELF"; then
++ ac_cv_prog_READELF="$READELF" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_READELF="$target_alias-readelf"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++IFS=$as_save_IFS
++
++fi
++fi
++READELF=$ac_cv_prog_READELF
++if test -n "$READELF"; then
++ { echo "$as_me:$LINENO: result: $READELF" >&5
++echo "${ECHO_T}$READELF" >&6; }
++else
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
++fi
++
++
++if test -z "$ac_cv_prog_READELF"; then
++ if test "$build" = "$target"; then
++ ac_ct_READELF=$READELF
++ # Extract the first word of "readelf", so it can be a program name with args.
++set dummy readelf; ac_word=$2
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_READELF"; then
++ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_READELF="readelf"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++IFS=$as_save_IFS
++
++ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf"
++fi
++fi
++ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
++if test -n "$ac_ct_READELF"; then
++ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5
++echo "${ECHO_T}$ac_ct_READELF" >&6; }
++else
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
++fi
++
++ READELF=ac_ct_READELF
++ else
++ READELF="readelf"
++ fi
++else
++ READELF="$ac_cv_prog_READELF"
++fi
++
++
+ { echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
+ echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6; }
+ if test "${libc_cv_initfini_array+set}" = set; then
+@@ -6007,7 +6093,7 @@ EOF
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ then
+- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
++ if ${READELF} -S conftest | fgrep INIT_ARRAY > /dev/null; then
+ libc_cv_initfini_array=yes
+ else
+ libc_cv_initfini_array=no
+@@ -6307,7 +6393,7 @@ EOF
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ then
+- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
++ if ${READELF} -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
+ libc_cv_z_combreloc=yes
+ else
+ libc_cv_z_combreloc=no
diff --git a/patches/glibc-2.8-20080811/generic/configure_in-sane_readelf.diff b/patches/glibc-2.8-20080811/generic/configure_in-sane_readelf.diff
new file mode 100644
index 0000000..ee7a727
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/configure_in-sane_readelf.diff
@@ -0,0 +1,35 @@
+---
+ configure.in | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+Index: glibc-2.8-20080811/configure.in
+===================================================================
+--- glibc-2.8-20080811.orig/configure.in
++++ glibc-2.8-20080811/configure.in
+@@ -1354,6 +1354,8 @@ EOF
+ fi
+ fi
+
++ AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH])
++
+ AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
+ libc_cv_initfini_array, [dnl
+ cat > conftest.c <<EOF
+@@ -1365,7 +1367,7 @@ EOF
+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
+ -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
+ then
+- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
++ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
+ libc_cv_initfini_array=yes
+ else
+ libc_cv_initfini_array=no
+@@ -1550,7 +1552,7 @@ dnl cross-platform since the gcc used ca
+ dnl introducing new options this is not easily doable. Instead use a tool
+ dnl which always is cross-platform: readelf. To detect whether -z combreloc
+ dnl look for a section named .rel.dyn.
+- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
++ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
+ libc_cv_z_combreloc=yes
+ else
+ libc_cv_z_combreloc=no
diff --git a/patches/glibc-2.8-20080811/generic/cross_timezone.diff b/patches/glibc-2.8-20080811/generic/cross_timezone.diff
new file mode 100644
index 0000000..d85d241
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/cross_timezone.diff
@@ -0,0 +1,489 @@
+From: http://trac.cross-lfs.org/browser/branches/clfs-sysroot/patches/glibc-2.6.1-sysdep_cancel-1.patch
+
+Submitted By: Joe Ciccone <jciccone@linuxfromscratch.org>
+Date: 2006-11-26
+Initial Package Version: 2.5
+Origin: Joe Ciccone
+Upstream Status: Unknown
+Description: Adds native compile support to the build system then uses that
+ support to build zic-native, for installing timezone info,
+ rpcgen-native, for building librpcsvc.a, and localedef-native,
+ for creating the locale-archive.
+
+---
+ Makeconfig | 13 +++++++++++++
+ Makerules | 9 ++++++++-
+ Rules | 9 ++++++++-
+ iconv/Makefile | 4 ++++
+ iconvdata/Makefile | 18 ++++++++++--------
+ include-native/bits/libc-tsd.h | 3 +++
+ include-native/config.h | 1 +
+ include-native/gnu/stubs.h | 1 +
+ include-native/intl/loadinfo.h | 4 ++++
+ include-native/libintl.h | 11 +++++++++++
+ include-native/symbol-hacks.h | 1 +
+ include-native/sys/types.h | 9 +++++++++
+ include-native/tls.h | 11 +++++++++++
+ locale/Makefile | 9 +++++++++
+ localedata/Makefile | 5 +++++
+ malloc/Makefile | 5 -----
+ sunrpc/Makefile | 23 ++++++++++++++++++-----
+ timezone/Makefile | 14 ++++++++++----
+ 18 files changed, 126 insertions(+), 24 deletions(-)
+
+Index: glibc-2.7/iconv/Makefile
+===================================================================
+--- glibc-2.7.orig/iconv/Makefile
++++ glibc-2.7/iconv/Makefile
+@@ -57,6 +57,9 @@ distribute = gconv_builtin.h gconv_int.h
+ iconvconfig.h
+
+ others = iconv_prog iconvconfig
++ifneq ($(cross-compiling),no)
++others-native = iconvconfig-native
++endif
+ install-others-programs = $(inst_bindir)/iconv
+ install-sbin = iconvconfig
+
+@@ -79,6 +82,7 @@ $(inst_bindir)/iconv: $(objpfx)iconv_pro
+
+ $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o)
+ $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o)
++$(objpfx)iconvconfig-native: $(iconvconfig-modules:%=$(objpfx)%-native.o)
+
+ ifneq ($(cross-compiling),yes)
+ xtests: test-iconvconfig
+Index: glibc-2.7/iconvdata/Makefile
+===================================================================
+--- glibc-2.7.orig/iconvdata/Makefile
++++ glibc-2.7/iconvdata/Makefile
+@@ -315,23 +315,25 @@ $(objpfx)iso8859-7jp.stmp: $(charmaps)/I
+
+ headers: $(addprefix $(objpfx), $(generated-modules:=.h))
+
++ifeq ($(cross-compiling),no)
++iconvconfig-cmd = LC_ALL=C LANGUAGE=C \
++ $(common-objpfx)elf/ld.so --library-path $(rpath-link) \
++ $(common-objpfx)iconv/iconvconfig
++else
++iconvconfig-cmd = LC_ALL=C LANGUAGE=C \
++ $(common-objpfx)iconv/iconvconfig-native
++endif
++
+ $(addprefix $(inst_gconvdir)/, $(modules.so)): \
+ $(inst_gconvdir)/%: $(objpfx)% $(+force)
+ $(do-install-program)
+ $(inst_gconvdir)/gconv-modules: gconv-modules $(+force)
+ $(do-install)
+-ifeq (no,$(cross-compiling))
+ # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary
+ # if this libc has more gconv modules than the previously installed one.
+ if test -f "$(inst_gconvdir)/gconv-modules.cache"; then \
+- LC_ALL=C LANGUAGE=C \
+- $(common-objpfx)elf/ld.so --library-path $(rpath-link) \
+- $(common-objpfx)iconv/iconvconfig \
+- $(addprefix --prefix=,$(install_root)); \
++ $(iconvconfig-cmd) $(addprefix --prefix=,$(install_root)); \
+ fi
+-else
+- @echo '*@*@*@ You should recreate $(inst_gconvdir)/gconv-modules.cache'
+-endif
+
+ endif # build-shared = yes
+
+Index: glibc-2.7/include-native/bits/libc-tsd.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/bits/libc-tsd.h
+@@ -0,0 +1,3 @@
++#ifndef __libc_tsd_define
++#define __libc_tsd_define(A,B)
++#endif
+Index: glibc-2.7/include-native/config.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/config.h
+@@ -0,0 +1 @@
++/* Empty */
+Index: glibc-2.7/include-native/gnu/stubs.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/gnu/stubs.h
+@@ -0,0 +1 @@
++/* Empty */
+Index: glibc-2.7/include-native/intl/loadinfo.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/intl/loadinfo.h
+@@ -0,0 +1,4 @@
++#ifndef LOADINFO_H
++#define LOADINFO_H
++struct loaded_l10nfile;
++#endif
+Index: glibc-2.7/include-native/libintl.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/libintl.h
+@@ -0,0 +1,11 @@
++#ifndef _
++#define _(X) (X)
++#endif
++
++#ifndef N_
++#define N_(X) (X)
++#endif
++
++#ifndef _libc_intl_domainname
++#define _libc_intl_domainname "libc"
++#endif
+Index: glibc-2.7/include-native/symbol-hacks.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/symbol-hacks.h
+@@ -0,0 +1 @@
++/* Empty */
+Index: glibc-2.7/include-native/tls.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/tls.h
+@@ -0,0 +1,11 @@
++#ifndef _include_tls_h
++#define _include_tls_h 1
++
++#if USE_TLS && HAVE___THREAD \
++ && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++# define USE___THREAD 1
++#else
++# define USE___THREAD 0
++#endif
++
++#endif
+Index: glibc-2.7/locale/Makefile
+===================================================================
+--- glibc-2.7.orig/locale/Makefile
++++ glibc-2.7/locale/Makefile
+@@ -44,6 +44,9 @@ categories = ctype messages monetary num
+ aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \
+ xlocale localename global-locale coll-lookup
+ others = localedef locale
++ifneq ($(cross-compiling),no)
++others-native = localedef-native
++endif
+ #others-static = localedef locale
+ install-bin = localedef locale
+ extra-objs = $(localedef-modules:=.o) $(localedef-aux:=.o) \
+@@ -81,6 +84,12 @@ $(objpfx)localedef: $(localedef-aux:%=$(
+ $(objpfx)locale: $(locale-modules:%=$(objpfx)%.o)
+ $(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o)
+
++ifneq ($(cross-compiling),no)
++$(objpfx)localedef-native: $(localedef-modules:%=$(objpfx)%-native.o)
++$(objpfx)localedef-native: $(localedef-aux:%=$(objpfx)%-native.o)
++$(objpfx)localedef-native: $(lib-modules:%=$(objpfx)%-native.o)
++endif
++
+ C-translit.h: C-translit.h.in gen-translit.pl
+ $(PERL) gen-translit.pl < $< > $@.tmp
+ mv -f $@.tmp $@
+Index: glibc-2.7/localedata/Makefile
+===================================================================
+--- glibc-2.7.orig/localedata/Makefile
++++ glibc-2.7/localedata/Makefile
+@@ -206,8 +206,13 @@ include SUPPORTED
+ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES))
+
+ # Sometimes the whole collection of locale files should be installed.
++ifeq ($(cross-compiling),no)
+ LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
+ $(common-objpfx)elf/ld.so --library-path $(rpath-link) $(common-objpfx)locale/localedef
++else
++LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
++$(common-objpfx)locale/localedef-native
++endif
+ install-locales: $(INSTALL-SUPPORTED-LOCALES)
+
+ install-locales-dir:
+Index: glibc-2.7/Makeconfig
+===================================================================
+--- glibc-2.7.orig/Makeconfig
++++ glibc-2.7/Makeconfig
+@@ -445,6 +445,12 @@ ifndef +link-static
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit)
+ endif
++# Command for linking programs against the host system.
++ifndef +link-native
+++link-native = $(BUILD_CC) -g -o $@ $^ \
++ $(LDFLAGS) $(LDFLAGS-$(@F)) \
++ $(link-extra-libs)
++endif
+ # Command for statically linking bounded-pointer programs with the C library.
+ ifndef +link-bounded
+ +link-bounded = $(CC) -nostdlib -nostartfiles -static -fbounded-pointers -o $@ \
+@@ -658,6 +664,8 @@ endif # $(+cflags) == ""
+ $(+sysdep-includes) $(includes) \
+ $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes)
+
+++includes-native = -I$(..)include-native -I$(objpfx) -I.
++
+ # Since libio has several internal header files, we use a -I instead
+ # of many little headers in the include directory.
+ libio-include = -I$(..)libio
+@@ -672,10 +680,15 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl
+ $(foreach lib,$(libof-$(basename $(@F))) \
+ $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+ $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
++CPPFLAGS-native = -D_GNU_SOURCE $($(subdir)-CPPFLAGS) $(+includes-native) $(defines) \
++ $(CPPFLAGS-$(suffix $@)) -include $(..)include/libc-symbols.h \
++ $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
+ override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
+ $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
+ $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
+ $(CFLAGS-$(@F))
++override CFLAGS-native = -std=gnu99 $(default_cflags) $(+gccwarn-c) \
++ $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
+ override CXXFLAGS = $(c++-sysincludes) \
+ $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
+ $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
+Index: glibc-2.7/Makerules
+===================================================================
+--- glibc-2.7.orig/Makerules
++++ glibc-2.7/Makerules
+@@ -292,6 +292,9 @@ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+
++$(objpfx)%-native.o: %.c $(before-compile)
++ $(native-compile-command.c)
++
+ # Omit the objpfx rules when building in the source tree, because
+ # objpfx is empty and so these rules just override the ones above.
+ ifdef objpfx
+@@ -368,6 +371,8 @@ compile-command.S = $(compile.S) $(OUTPU
+ compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) $(compile-mkdep-flags)
+ compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
+ compile-command.cc = $(compile.cc) $(OUTPUT_OPTION) $(compile-mkdep-flags)
++# Native commands
++native-compile-command.c = $(native-compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
+
+ # GCC can grok options after the file name, and it looks nicer that way.
+ compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
+@@ -377,6 +382,8 @@ compile.S = $(CC) $< -c $(CPPFLAGS) $(S-
+ COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
+ COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS)
++# Native commands
++native-compile.c = $(BUILD_CC) -g $< -c $(CFLAGS-native) $(CPPFLAGS-native)
+
+ # We need this for the output to go in the right place. It will default to
+ # empty if make was configured to work with a cc that can't grok -c and -o
+@@ -1178,7 +1185,7 @@ define native-compile
+ $(make-target-directory)
+ $(patsubst %/,cd % &&,$(objpfx)) \
+ $(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) \
+- $(firstword $(filter /%,$< $(shell pwd)/$<)) -o $(@F)
++ $(addprefix $(shell pwd)/, $^) -o $(@F)
+ endef
+
+ # Command to compile $< in $(common-objdir) using the native libraries.
+Index: glibc-2.7/malloc/Makefile
+===================================================================
+--- glibc-2.7.orig/malloc/Makefile
++++ glibc-2.7/malloc/Makefile
+@@ -73,10 +73,6 @@ address-width=18
+ endif
+ endif
+
+-# Unless we get a test for the availability of libgd which also works
+-# for cross-compiling we disable the memusagestat generation in this
+-# situation.
+-ifneq ($(cross-compiling),yes)
+ # If the gd library is available we build the `memusagestat' program.
+ ifneq ($(LIBGD),no)
+ others: $(objpfx)memusage
+@@ -91,7 +87,6 @@ extra-objs += memusagestat.o
+ # is to presume that the standard system headers will be ok for this file.
+ $(objpfx)memusagestat.o: sysincludes = # nothing
+ endif
+-endif
+
+ # Another goal which can be used to override the configure decision.
+ .PHONY: do-memusagestat
+Index: glibc-2.7/Rules
+===================================================================
+--- glibc-2.7.orig/Rules
++++ glibc-2.7/Rules
+@@ -87,7 +87,7 @@ common-generated += dummy.o dummy.c
+
+ .PHONY: others tests
+ ifeq ($(build-programs),yes)
+-others: $(addprefix $(objpfx),$(others) $(sysdep-others) $(extra-objs))
++others: $(addprefix $(objpfx),$(others) $(others-native) $(sysdep-others) $(extra-objs))
+ else
+ others: $(addprefix $(objpfx),$(extra-objs))
+ endif
+@@ -106,9 +106,11 @@ endif
+ ifeq ($(build-programs),yes)
+ binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs)
+ binaries-static = $(others-static) $(tests-static) $(xtests-static)
++binaries-native = $(others-native)
+ else
+ binaries-all = $(tests) $(xtests) $(test-srcs)
+ binaries-static =
++binaries-native =
+ endif
+
+ binaries-shared = $(filter-out $(binaries-static), $(binaries-all))
+@@ -127,6 +129,11 @@ $(addprefix $(objpfx),$(binaries-static)
+ $(+link-static)
+ endif
+
++ifneq "$(strip $(binaries-native))" ""
++$(addprefix $(objpfx),$(binaries-native)): %: %.o
++ $(+link-native)
++endif
++
+ ifeq ($(build-bounded),yes)
+ binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs))
+ $(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \
+Index: glibc-2.7/sunrpc/Makefile
+===================================================================
+--- glibc-2.7.orig/sunrpc/Makefile
++++ glibc-2.7/sunrpc/Makefile
+@@ -70,6 +70,9 @@ routines := auth_none auth_unix authuxpr
+ clnt_unix svc_unix create_xid xdr_intXX_t
+
+ others := rpcinfo
++ifneq ($(cross-compiling),no)
++others-native := rpcgen-native
++endif
+ install-bin := rpcgen
+ install-sbin := rpcinfo
+ rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \
+@@ -98,15 +101,12 @@ otherlibs += $(nssobjdir)/libnss_files.a
+ $(resolvobjdir)/libresolv.a
+ endif
+
+-ifeq (no,$(cross-compiling))
+-# We can only build this library if we can run the rpcgen we build.
+ headers += $(rpcsvc:%.x=rpcsvc/%.h)
+ extra-libs := librpcsvc
+ extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass.
+ librpcsvc-routines = $(rpcsvc:%.x=x%)
+ librpcsvc-inhibit-o = .os # Build no shared rpcsvc library.
+ omit-deps = $(librpcsvc-routines)
+-endif
+
+ CFLAGS-xbootparam_prot.c = -Wno-unused $(PIC-ccflag)
+ CFLAGS-xnlm_prot.c = -Wno-unused $(PIC-ccflag)
+@@ -136,13 +136,26 @@ $(objpfx)rpcgen: $(addprefix $(objpfx),$
+ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
+ $(+link)
+
++ifneq ($(cross-compiling),no)
++rpcgen.c:
++ touch rpcgen.c
++
++$(objpfx)rpcgen-native: $(addprefix $(objpfx),$(rpcgen-objs:%.o=%-native.o))
++endif
++
+ # This makes sure -DNOT_IN_libc is passed for all these modules.
+ cpp-srcs-left := $(rpcgen-objs:.o=.c)
+ lib := nonlib
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+
+ # Tell rpcgen where to find the C preprocessor.
++ifeq ($(cross-compiling),no)
+ rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-cmd) -Y ../scripts
++rpcgen = $(objpfx)rpcgen
++else
++rpcgen-cmd = CPP='$(CC) -E -x c-header' $(objpfx)rpcgen-native -Y ../scripts
++rpcgen = $(objpfx)rpcgen-native
++endif
+
+ # Install the rpc data base file.
+ $(inst_sysconfdir)/rpc: etc.rpc $(+force)
+@@ -153,7 +166,7 @@ $(inst_sysconfdir)/rpc: etc.rpc $(+force
+ # relinked.
+ $(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
+ @:
+-$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
++$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(rpcgen)
+ $(make-target-directory)
+ -@rm -f ${@:stmp=T} $@
+ $(rpcgen-cmd) -h $< -o ${@:stmp=T}
+@@ -163,7 +176,7 @@ $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(obj
+ # Generate the rpcsvc XDR functions with rpcgen.
+ $(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp
+ @:
+-$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen
++$(objpfx)x%.stmp: rpcsvc/%.x $(rpcgen)
+ -@rm -f ${@:stmp=T} $@
+ $(rpcgen-cmd) -c $< -o ${@:stmp=T}
+ $(move-if-change) $(@:stmp=T) $(@:stmp=c)
+Index: glibc-2.7/timezone/Makefile
+===================================================================
+--- glibc-2.7.orig/timezone/Makefile
++++ glibc-2.7/timezone/Makefile
+@@ -28,6 +28,9 @@ distribute := tzfile.h private.h scheck.
+ extra-objs := scheck.o ialloc.o
+
+ others := zdump zic
++ifneq ($(cross-compiling),no)
++others-native := zic-native
++endif
+ tests := test-tz tst-timezone
+
+ tzbases := africa antarctica asia australasia europe northamerica \
+@@ -69,13 +72,10 @@ installed-posixrules-file := $(firstword
+ $(addprefix $(inst_zonedir)/, \
+ $(posixrules-file)))
+
+-ifeq ($(cross-compiling),no)
+-# Don't try to install the zoneinfo files since we can't run zic.
+ install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \
+ $(zonenames:%=posix/%) \
+ $(zonenames:%=right/%)) \
+ $(installed-localtime-file) $(installed-posixrules-file)
+-endif
+
+ ifeq ($(have-ksh),yes)
+ install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
+@@ -128,7 +128,11 @@ echo-zonenames:
+ # We have to use `-d $(inst_zonedir)' to explictly tell zic where to
+ # place the output files although $(zonedir) is compiled in. But the
+ # user might have set $(install_root) on the command line of `make install'.
++ifeq ($(cross-compiling),no)
+ zic-cmd = $(built-program-cmd) -d $(inst_zonedir)
++else
++zic-cmd = $(common-objpfx)/timezone/zic-native -d $(inst_zonedir)
++endif
+ tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \
+ -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $<
+
+@@ -158,8 +162,10 @@ $(installed-posixrules-file): $(inst_zon
+ $(zic-cmd) -p $(posixrules)
+ endif
+
+-
+ $(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
++ifneq ($(cross-compiling),no)
++$(objpfx)zic-native: $(objpfx)scheck-native.o $(objpfx)ialloc-native.o
++endif
+
+ tz-cflags = -DTZDIR='"$(zonedir)"' \
+ -DTZDEFAULT='"$(localtime-file)"' \
+Index: glibc-2.7/include-native/sys/types.h
+===================================================================
+--- /dev/null
++++ glibc-2.7/include-native/sys/types.h
+@@ -0,0 +1,9 @@
++#include_next <sys/types.h>
++
++#ifndef __u_char_defined
++# define __u_char_defined
++#endif
++#ifndef __daddr_t_defined
++# define __daddr_t_defined
++#endif
++
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/0030_all_glibc-respect-env-CPPFLAGS.patch b/patches/glibc-2.8-20080811/generic/gentoo/0030_all_glibc-respect-env-CPPFLAGS.patch
new file mode 100644
index 0000000..a0e2dbd
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/0030_all_glibc-respect-env-CPPFLAGS.patch
@@ -0,0 +1,32 @@
+Respect environment CPPFLAGS when we run ./configure so we can inject
+random -D things without having to set CFLAGS/ASFLAGS
+
+---
+ Makeconfig | 1 +
+ config.make.in | 1 +
+ 2 files changed, 2 insertions(+)
+
+Index: glibc-2.8-20080811/Makeconfig
+===================================================================
+--- glibc-2.8-20080811.orig/Makeconfig
++++ glibc-2.8-20080811/Makeconfig
+@@ -673,6 +673,7 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl
+ $(foreach lib,$(libof-$(basename $(@F))) \
+ $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+ $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
++CPPFLAGS += $(CPPFLAGS-config)
+ override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
+ $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
+ $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
+Index: glibc-2.8-20080811/config.make.in
+===================================================================
+--- glibc-2.8-20080811.orig/config.make.in
++++ glibc-2.8-20080811/config.make.in
+@@ -97,6 +97,7 @@ CC = @CC@
+ CXX = @CXX@
+ BUILD_CC = @BUILD_CC@
+ CFLAGS = @CFLAGS@
++CPPFLAGS-config = @CPPFLAGS@
+ ASFLAGS-config = @ASFLAGS_config@
+ AR = @AR@
+ RANLIB = @RANLIB@
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/0040_all_glibc-i586-chk.patch b/patches/glibc-2.8-20080811/generic/gentoo/0040_all_glibc-i586-chk.patch
new file mode 100644
index 0000000..25139c8
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/0040_all_glibc-i586-chk.patch
@@ -0,0 +1,32 @@
+http://bugs.gentoo.org/199479
+
+2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i586/memcpy_chk.S: New file.
+ * sysdeps/i386/i586/mempcpy_chk.S: Likewise.
+ * sysdeps/i386/i586/memset_chk.S: Likewise.
+
+---
+ i386/i586/memcpy_chk.S | 1 +
+ i386/i586/mempcpy_chk.S | 1 +
+ i386/i586/memset_chk.S | 1 +
+ 3 files changed, 3 insertions(+)
+
+Index: glibc-2.8-20080811/i386/i586/memcpy_chk.S
+===================================================================
+--- /dev/null
++++ glibc-2.8-20080811/i386/i586/memcpy_chk.S
+@@ -0,0 +1 @@
++#include <sysdeps/i386/i686/memcpy_chk.S>
+Index: glibc-2.8-20080811/i386/i586/mempcpy_chk.S
+===================================================================
+--- /dev/null
++++ glibc-2.8-20080811/i386/i586/mempcpy_chk.S
+@@ -0,0 +1 @@
++#include <sysdeps/i386/i686/mempcpy_chk.S>
+Index: glibc-2.8-20080811/i386/i586/memset_chk.S
+===================================================================
+--- /dev/null
++++ glibc-2.8-20080811/i386/i586/memset_chk.S
+@@ -0,0 +1 @@
++#include <sysdeps/i386/i686/memset_chk.S>
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/0070_all_glibc-i386-x86_64-revert-clone-cfi.patch b/patches/glibc-2.8-20080811/generic/gentoo/0070_all_glibc-i386-x86_64-revert-clone-cfi.patch
new file mode 100644
index 0000000..e79e024
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/0070_all_glibc-i386-x86_64-revert-clone-cfi.patch
@@ -0,0 +1,55 @@
+revert cfi additions to clone on i386/x86_64 to workaround problems in
+gcc's unwinder code. this is not a bug in glibc, it triggers problems
+elsewhere. this cfi code does not gain us a whole lot anyways.
+
+http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
+
+---
+ sysdeps/unix/sysv/linux/i386/clone.S | 4 ----
+ sysdeps/unix/sysv/linux/x86_64/clone.S | 4 ----
+ 2 files changed, 8 deletions(-)
+
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/i386/clone.S
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/i386/clone.S
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/i386/clone.S
+@@ -120,9 +120,6 @@ L(pseudo_end):
+ ret
+
+ L(thread_start):
+- cfi_startproc;
+- /* Clearing frame pointer is insufficient, use CFI. */
+- cfi_undefined (eip);
+ /* Note: %esi is zero. */
+ movl %esi,%ebp /* terminate the stack frame */
+ #ifdef RESET_PID
+@@ -155,7 +152,6 @@ L(nomoregetpid):
+ jmp L(haspid)
+ .previous
+ #endif
+- cfi_endproc;
+
+ cfi_startproc
+ PSEUDO_END (BP_SYM (__clone))
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/x86_64/clone.S
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/x86_64/clone.S
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/x86_64/clone.S
+@@ -89,9 +89,6 @@ L(pseudo_end):
+ ret
+
+ L(thread_start):
+- cfi_startproc;
+- /* Clearing frame pointer is insufficient, use CFI. */
+- cfi_undefined (rip);
+ /* Clear the frame pointer. The ABI suggests this be done, to mark
+ the outermost frame obviously. */
+ xorl %ebp, %ebp
+@@ -116,7 +113,6 @@ L(thread_start):
+ /* Call exit with return value from function call. */
+ movq %rax, %rdi
+ call HIDDEN_JUMPTARGET (_exit)
+- cfi_endproc;
+
+ cfi_startproc;
+ PSEUDO_END (BP_SYM (__clone))
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1010_all_glibc-queue-header-updates.patch b/patches/glibc-2.8-20080811/generic/gentoo/1010_all_glibc-queue-header-updates.patch
new file mode 100644
index 0000000..9110f1c
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1010_all_glibc-queue-header-updates.patch
@@ -0,0 +1,89 @@
+grab some updates from FreeBSD
+
+http://bugs.gentoo.org/201979
+
+---
+ misc/sys/queue.h | 37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+Index: glibc-2.8-20080811/misc/sys/queue.h
+===================================================================
+--- glibc-2.8-20080811.orig/misc/sys/queue.h
++++ glibc-2.8-20080811/misc/sys/queue.h
+@@ -136,6 +136,11 @@ struct { \
+ (var); \
+ (var) = ((var)->field.le_next))
+
++#define LIST_FOREACH_SAFE(var, head, field, tvar) \
++ for ((var) = LIST_FIRST((head)); \
++ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
++ (var) = (tvar))
++
+ /*
+ * List access methods.
+ */
+@@ -197,6 +202,16 @@ struct { \
+ #define SLIST_FOREACH(var, head, field) \
+ for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
+
++#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
++ for ((var) = SLIST_FIRST((head)); \
++ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
++ (var) = (tvar))
++
++#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
++ for ((varp) = &SLIST_FIRST((head)); \
++ ((var) = *(varp)) != NULL; \
++ (varp) = &SLIST_NEXT((var), field))
++
+ /*
+ * Singly-linked List access methods.
+ */
+@@ -242,6 +257,12 @@ struct { \
+ (head)->stqh_last = &(elm)->field.stqe_next; \
+ } while (/*CONSTCOND*/0)
+
++#define STAILQ_LAST(head, type, field) \
++ (STAILQ_EMPTY((head)) ? \
++ NULL : \
++ ((struct type *)(void *) \
++ ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
++
+ #define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+ if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
+ (head)->stqh_last = &(elm)->field.stqe_next; \
+@@ -286,6 +307,11 @@ struct { \
+ #define STAILQ_FIRST(head) ((head)->stqh_first)
+ #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
++#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
++ for ((var) = STAILQ_FIRST((head)); \
++ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
++ (var) = (tvar))
++
+
+ /*
+ * Simple queue definitions.
+@@ -437,11 +463,22 @@ struct { \
+ (var); \
+ (var) = ((var)->field.tqe_next))
+
++#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
++ for ((var) = TAILQ_FIRST((head)); \
++ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
++ (var) = (tvar))
++
+ #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
+ (var); \
+ (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
+
++#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
++ for ((var) = TAILQ_LAST((head), headname); \
++ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
++ (var) = (tvar))
++
++
+ #define TAILQ_CONCAT(head1, head2, field) do { \
+ if (!TAILQ_EMPTY(head2)) { \
+ *(head1)->tqh_last = (head2)->tqh_first; \
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1030_all_glibc-manual-no-perl.patch b/patches/glibc-2.8-20080811/generic/gentoo/1030_all_glibc-manual-no-perl.patch
new file mode 100644
index 0000000..5b11ce0
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1030_all_glibc-manual-no-perl.patch
@@ -0,0 +1,29 @@
+If we're using a cvs snapshot which updates the source files, and
+perl isn't installed yet, then we can't regen the docs. Not a big
+deal, so just whine a little and continue on our merry way.
+
+http://bugs.gentoo.org/60132
+
+---
+ manual/Makefile | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+Index: glibc-2.8-20080811/manual/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/manual/Makefile
++++ glibc-2.8-20080811/manual/Makefile
+@@ -104,9 +104,14 @@ dir-add.texi: xtract-typefun.awk $(texis
+ libm-err.texi: stamp-libm-err
+ stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
+ $(dir)/libm-test-ulps))
++ifneq ($(PERL),no)
+ pwd=`pwd`; \
+ $(PERL) $< $$pwd/.. > libm-err-tmp
+ $(move-if-change) libm-err-tmp libm-err.texi
++else
++ echo "Unable to rebuild math docs, no perl installed"
++ touch libm-err.texi
++endif
+ touch $@
+
+ # Generate Texinfo files from the C source for the example programs.
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1040_all_2.3.3-localedef-fix-trampoline.patch b/patches/glibc-2.8-20080811/generic/gentoo/1040_all_2.3.3-localedef-fix-trampoline.patch
new file mode 100644
index 0000000..636dda6
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1040_all_2.3.3-localedef-fix-trampoline.patch
@@ -0,0 +1,74 @@
+#! /bin/sh -e
+
+# DP: Description: Fix localedef segfault when run under exec-shield,
+# PaX or similar. (#231438, #198099)
+# DP: Dpatch Author: James Troup <james@nocrew.org>
+# DP: Patch Author: (probably) Jakub Jelinek <jakub@redhat.com>
+# DP: Upstream status: Unknown
+# DP: Status Details: Unknown
+# DP: Date: 2004-03-16
+
+if [ $# -ne 2 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+---
+ locale/programs/3level.h | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+Index: glibc-2.8-20080811/locale/programs/3level.h
+===================================================================
+--- glibc-2.8-20080811.orig/locale/programs/3level.h
++++ glibc-2.8-20080811/locale/programs/3level.h
+@@ -203,6 +203,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t,
+ }
+ }
+ }
++
++/* GCC ATM seems to do a poor job with pointers to nested functions passed
++ to inlined functions. Help it a little bit with this hack. */
++#define wchead_table_iterate(tp, fn) \
++do \
++ { \
++ struct wchead_table *t = (tp); \
++ uint32_t index1; \
++ for (index1 = 0; index1 < t->level1_size; index1++) \
++ { \
++ uint32_t lookup1 = t->level1[index1]; \
++ if (lookup1 != ((uint32_t) ~0)) \
++ { \
++ uint32_t lookup1_shifted = lookup1 << t->q; \
++ uint32_t index2; \
++ for (index2 = 0; index2 < (1 << t->q); index2++) \
++ { \
++ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \
++ if (lookup2 != ((uint32_t) ~0)) \
++ { \
++ uint32_t lookup2_shifted = lookup2 << t->p; \
++ uint32_t index3; \
++ for (index3 = 0; index3 < (1 << t->p); index3++) \
++ { \
++ struct element_t *lookup3 \
++ = t->level3[index3 + lookup2_shifted]; \
++ if (lookup3 != NULL) \
++ fn ((((index1 << t->q) + index2) << t->p) + index3, \
++ lookup3); \
++ } \
++ } \
++ } \
++ } \
++ } \
++ } while (0)
++
+ #endif
+
+ #ifndef NO_FINALIZE
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1050_all_glibc-posix-awk.patch b/patches/glibc-2.8-20080811/generic/gentoo/1050_all_glibc-posix-awk.patch
new file mode 100644
index 0000000..1862c68
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1050_all_glibc-posix-awk.patch
@@ -0,0 +1,23 @@
+http://bugs.gentoo.org/202511
+
+2007-12-24 Mike Frysinger <vapier@gentoo.org>
+
+ * elf/Makefile ($(objpfx)ld.so): Use POSIX (EF)? in awk.
+
+---
+ elf/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: glibc-2.8-20080811/elf/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/elf/Makefile
++++ glibc-2.8-20080811/elf/Makefile
+@@ -307,7 +307,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
+ -Wl,-soname=$(rtld-installed-name) -T $@.lds
+ rm -f $@.lds
+ readelf -s $@ \
+- | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
++ | $(AWK) '($$7 ~ /^UND(EF)?$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
+
+ # interp.c exists just to get this string into the libraries.
+ CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1055_all_glibc-resolv-dynamic.patch b/patches/glibc-2.8-20080811/generic/gentoo/1055_all_glibc-resolv-dynamic.patch
new file mode 100644
index 0000000..472a78f
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1055_all_glibc-resolv-dynamic.patch
@@ -0,0 +1,44 @@
+ripped from SuSE
+
+if /etc/resolv.conf is updated, then make sure applications
+already running get the updated information.
+
+http://bugs.gentoo.org/177416
+
+---
+ resolv/res_libc.c | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+Index: glibc-2.8-20080811/resolv/res_libc.c
+===================================================================
+--- glibc-2.8-20080811.orig/resolv/res_libc.c
++++ glibc-2.8-20080811/resolv/res_libc.c
+@@ -22,6 +22,7 @@
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ #include <bits/libc-lock.h>
++#include <sys/stat.h>
+
+
+ /* The following bit is copied from res_data.c (where it is #ifdef'ed
+@@ -95,6 +96,20 @@ int
+ __res_maybe_init (res_state resp, int preinit)
+ {
+ if (resp->options & RES_INIT) {
++ static time_t last_mtime, last_check;
++ time_t now;
++ struct stat statbuf;
++
++ time (&now);
++ if (now != last_check) {
++ last_check = now;
++ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
++ last_mtime = statbuf.st_mtime;
++ atomicinclock (lock);
++ atomicinc (__res_initstamp);
++ atomicincunlock (lock);
++ }
++ }
+ if (__res_initstamp != resp->_u._ext.initstamp) {
+ if (resp->nscount > 0) {
+ __res_iclose (resp, true);
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1075_all_glibc-section-comments.patch b/patches/glibc-2.8-20080811/generic/gentoo/1075_all_glibc-section-comments.patch
new file mode 100644
index 0000000..da55cb9
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1075_all_glibc-section-comments.patch
@@ -0,0 +1,29 @@
+http://sources.redhat.com/ml/binutils/2004-04/msg00665.html
+
+fixes building on some architectures (like m68k/arm/cris/etc...) because
+it does the right thing
+
+---
+ include/libc-symbols.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: glibc-2.8-20080811/include/libc-symbols.h
+===================================================================
+--- glibc-2.8-20080811.orig/include/libc-symbols.h
++++ glibc-2.8-20080811/include/libc-symbols.h
+@@ -240,12 +240,12 @@
+ # define __make_section_unallocated(section_string)
+ # endif
+
+-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
++/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus
+ section attributes on what looks like a comment to the assembler. */
+ # ifdef HAVE_SECTION_QUOTES
+-# define __sec_comment "\"\n\t#\""
++# define __sec_comment "\"\n#APP\n\t#\""
+ # else
+-# define __sec_comment "\n\t#"
++# define __sec_comment "\n#APP\n\t#"
+ # endif
+ # define link_warning(symbol, msg) \
+ __make_section_unallocated (".gnu.warning." #symbol) \
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1080_all_glibc-no-inline-gmon.patch b/patches/glibc-2.8-20080811/generic/gentoo/1080_all_glibc-no-inline-gmon.patch
new file mode 100644
index 0000000..623df27
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1080_all_glibc-no-inline-gmon.patch
@@ -0,0 +1,38 @@
+http://bugs.gentoo.org/196245
+http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html
+
+Attached is a patch to add __attribute__ ((noinline)) to
+call_gmon_start.
+
+Without this patch, the sec script that processed initfini.s removes a
+part of inlined call_gmon_start, causing undefined label errors.
+
+This patch solves the problem by forcing gcc not to inline
+call_gmon_start with __attribute__ ((noinline)).
+
+Tested by building for arm-none-lixux-gnueabi. OK to apply?
+
+Kazu Hirata
+
+2006-05-07 Kazu Hirata &lt;kazu@codesourcery.com&gt;
+
+ * sysdeps/generic/initfini.c (call_gmon_start): Add
+ __attribute__ ((noinline)).
+
+---
+ sysdeps/generic/initfini.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: glibc-2.8-20080811/sysdeps/generic/initfini.c
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/generic/initfini.c
++++ glibc-2.8-20080811/sysdeps/generic/initfini.c
+@@ -70,7 +70,7 @@ asm ("\n/*@TESTS_END*/");
+ /* The beginning of _init: */
+ asm ("\n/*@_init_PROLOG_BEGINS*/");
+
+-static void
++static void __attribute__ ((noinline))
+ call_gmon_start(void)
+ {
+ extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1090_all_glibc-2.3.6-fix-pr631.patch b/patches/glibc-2.8-20080811/generic/gentoo/1090_all_glibc-2.3.6-fix-pr631.patch
new file mode 100644
index 0000000..a3a5872
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1090_all_glibc-2.3.6-fix-pr631.patch
@@ -0,0 +1,52 @@
+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
+
+---
+ Makeconfig | 2 +-
+ elf/Makefile | 7 +++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+Index: glibc-2.8-20080811/Makeconfig
+===================================================================
+--- glibc-2.8-20080811.orig/Makeconfig
++++ glibc-2.8-20080811/Makeconfig
+@@ -509,7 +509,7 @@ endif
+
+ # 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...
+Index: glibc-2.8-20080811/elf/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/elf/Makefile
++++ glibc-2.8-20080811/elf/Makefile
+@@ -121,6 +121,13 @@ install-others = $(inst_slibdir)/$(rtld-
+ 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
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1100_all_glibc-2.3.3-china.patch b/patches/glibc-2.8-20080811/generic/gentoo/1100_all_glibc-2.3.3-china.patch
new file mode 100644
index 0000000..3be9ea0
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1100_all_glibc-2.3.3-china.patch
@@ -0,0 +1,35 @@
+---
+ localedata/locales/zh_TW | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: glibc-2.8-20080811/localedata/locales/zh_TW
+===================================================================
+--- glibc-2.8-20080811.orig/localedata/locales/zh_TW
++++ glibc-2.8-20080811/localedata/locales/zh_TW
+@@ -1,7 +1,7 @@
+ comment_char %
+ escape_char /
+ %
+-% Chinese language locale for Taiwan R.O.C.
++% Chinese language locale for Taiwan
+ % charmap: BIG5-CP950
+ %
+ % Original Author:
+@@ -17,7 +17,7 @@ escape_char /
+ % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
+
+ LC_IDENTIFICATION
+-title "Chinese locale for Taiwan R.O.C."
++title "Chinese locale for Taiwan"
+ source ""
+ address ""
+ contact ""
+@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org"
+ tel ""
+ fax ""
+ language "Chinese"
+-territory "Taiwan R.O.C."
++territory "Taiwan"
+ revision "0.2"
+ date "2000-08-02"
+ %
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1103_all_glibc-new-valencian-locale.patch b/patches/glibc-2.8-20080811/generic/gentoo/1103_all_glibc-new-valencian-locale.patch
new file mode 100644
index 0000000..df9d623
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1103_all_glibc-new-valencian-locale.patch
@@ -0,0 +1,122 @@
+http://bugs.gentoo.org/show_bug.cgi?id=131815
+http://sourceware.org/bugzilla/show_bug.cgi?id=2522
+
+---
+ localedata/SUPPORTED | 2
+ localedata/locales/ca_ES@valencia | 96 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 98 insertions(+)
+
+Index: glibc-2.8-20080811/localedata/SUPPORTED
+===================================================================
+--- glibc-2.8-20080811.orig/localedata/SUPPORTED
++++ glibc-2.8-20080811/localedata/SUPPORTED
+@@ -72,6 +72,8 @@ ca_AD/ISO-8859-15 \
+ ca_ES.UTF-8/UTF-8 \
+ ca_ES/ISO-8859-1 \
+ ca_ES@euro/ISO-8859-15 \
++ca_ES.UTF-8@valencia/UTF-8 \
++ca_ES@valencia/ISO-8859-15 \
+ ca_FR.UTF-8/UTF-8 \
+ ca_FR/ISO-8859-15 \
+ ca_IT.UTF-8/UTF-8 \
+Index: glibc-2.8-20080811/localedata/locales/ca_ES@valencia
+===================================================================
+--- /dev/null
++++ glibc-2.8-20080811/localedata/locales/ca_ES@valencia
+@@ -0,0 +1,96 @@
++comment_char %
++escape_char /
++%
++% Valencian (southern Catalan) locale for Spain with Euro
++%
++% Note that this locale is almost the same as ca_ES@euro. The point of having
++% a separate locale is only for PO translations, which have a lot of social
++% support and are very appreciated by the Valencian-speaking community.
++%
++% Contact: Jordi Mallach
++% Email: jordi@gnu.org
++% Tel:
++% Fax:
++% Language: ca
++% Territory: ES
++% Option: euro
++% Revision: 1.0
++% Date: 2006-04-06
++% Application: general
++% Users: general
++% Repertoiremap: mnemonic,ds
++% Charset: ISO-8859-15
++% Distribution and use is free, also
++% for commercial purposes.
++
++LC_IDENTIFICATION
++title "Valencian (southern Catalan) locale for Spain with Euro"
++source ""
++address ""
++contact "Jordi Mallach"
++email "jordi@gnu.org"
++tel ""
++fax ""
++language "Catalan"
++territory "Spain"
++revision "1.0"
++date "2006-04-06"
++%
++category "ca_ES@valencia:2006";LC_IDENTIFICATION
++category "ca_ES@valencia:2006";LC_CTYPE
++category "ca_ES@valencia:2006";LC_COLLATE
++category "ca_ES@valencia:2006";LC_MONETARY
++category "ca_ES@valencia:2006";LC_NUMERIC
++category "ca_ES@valencia:2006";LC_TIME
++category "ca_ES@valencia:2006";LC_MESSAGES
++category "ca_ES@valencia:2006";LC_PAPER
++category "ca_ES@valencia:2006";LC_NAME
++category "ca_ES@valencia:2006";LC_ADDRESS
++category "ca_ES@valencia:2006";LC_TELEPHONE
++category "ca_ES@valencia:2006";LC_MEASUREMENT
++
++END LC_IDENTIFICATION
++
++LC_CTYPE
++copy "i18n"
++END LC_CTYPE
++
++LC_COLLATE
++copy "ca_ES"
++END LC_COLLATE
++
++LC_MONETARY
++copy "ca_ES"
++END LC_MONETARY
++
++LC_NUMERIC
++copy "ca_ES"
++END LC_NUMERIC
++
++LC_TIME
++copy "ca_ES"
++END LC_TIME
++
++LC_MESSAGES
++copy "ca_ES"
++END LC_MESSAGES
++
++LC_PAPER
++copy "ca_ES"
++END LC_PAPER
++
++LC_NAME
++copy "ca_ES"
++END LC_NAME
++
++LC_ADDRESS
++copy "ca_ES"
++END LC_ADDRESS
++
++LC_TELEPHONE
++copy "ca_ES"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++copy "ca_ES"
++END LC_MEASUREMENT
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1120_all_glibc-2.5-strict-aliasing.patch b/patches/glibc-2.8-20080811/generic/gentoo/1120_all_glibc-2.5-strict-aliasing.patch
new file mode 100644
index 0000000..a238666
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1120_all_glibc-2.5-strict-aliasing.patch
@@ -0,0 +1,91 @@
+workaround strict aliasing warnings on individual files rather than
+forcing the whole build with -fno-strict-aliasing
+
+http://bugs.gentoo.org/155906
+
+note that we leave the logout.c and logwtmp.c warnings alone as the
+code path that invokes the warning should not be executed when the
+warning is applicable.
+
+---
+ libio/Makefile | 4 ++--
+ nis/Makefile | 3 +++
+ nptl/Makefile | 1 +
+ nss/Makefile | 2 ++
+ sunrpc/Makefile | 2 +-
+ 5 files changed, 9 insertions(+), 3 deletions(-)
+
+Index: glibc-2.8-20080811/libio/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/libio/Makefile
++++ glibc-2.8-20080811/libio/Makefile
+@@ -91,7 +91,7 @@ CFLAGS-fseeko.c = $(exceptions)
+ CFLAGS-ftello64.c = $(exceptions)
+ CFLAGS-ftello.c = $(exceptions)
+ CFLAGS-fwide.c = $(exceptions)
+-CFLAGS-genops.c = $(exceptions)
++CFLAGS-genops.c = $(exceptions) -fno-strict-aliasing
+ CFLAGS-getc.c = $(exceptions)
+ CFLAGS-getchar.c = $(exceptions)
+ CFLAGS-getwc.c = $(exceptions)
+@@ -133,7 +133,7 @@ CFLAGS-putwc.c = $(exceptions)
+ CFLAGS-putwchar.c = $(exceptions)
+ CFLAGS-rewind.c = $(exceptions)
+ CFLAGS-wfileops.c = $(exceptions)
+-CFLAGS-wgenops.c = $(exceptions)
++CFLAGS-wgenops.c = $(exceptions) -fno-strict-aliasing
+ CFLAGS-oldiofopen.c = $(exceptions)
+ CFLAGS-iofopen.c = $(exceptions)
+ CFLAGS-iofopen64.c = $(exceptions)
+Index: glibc-2.8-20080811/nis/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/nis/Makefile
++++ glibc-2.8-20080811/nis/Makefile
+@@ -67,6 +67,9 @@ libnss_nisplus-routines := $(addprefix n
+ nss-nisplus nisplus-initgroups
+ libnss_nisplus-inhibit-o = $(filter-out .os,$(object-suffixes))
+
++CFLAGS-nis_xdr.c += -fno-strict-aliasing
++CFLAGS-yp_xdr.c += -fno-strict-aliasing
++
+ include ../Rules
+
+
+Index: glibc-2.8-20080811/nptl/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/nptl/Makefile
++++ glibc-2.8-20080811/nptl/Makefile
+@@ -193,6 +193,7 @@ CFLAGS-tcdrain.c = -fexceptions -fasynch
+
+ CFLAGS-pt-system.c = -fexceptions
+
++CFLAGS-unwind-dw2.c += -fno-strict-aliasing
+
+ tests = tst-typesizes \
+ tst-attr1 tst-attr2 tst-attr3 \
+Index: glibc-2.8-20080811/nss/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/nss/Makefile
++++ glibc-2.8-20080811/nss/Makefile
+@@ -72,6 +72,8 @@ ifneq ($(build-static-nss),yes)
+ libnss_files-inhibit-o = $(filter-out .os,$(object-suffixes))
+ endif
+
++CFLAGS-nsswitch.c += -fno-strict-aliasing
++
+ include ../Rules
+
+
+Index: glibc-2.8-20080811/sunrpc/Makefile
+===================================================================
+--- glibc-2.8-20080811.orig/sunrpc/Makefile
++++ glibc-2.8-20080811/sunrpc/Makefile
+@@ -127,7 +127,7 @@ CFLAGS-pmap_rmt.c = -fexceptions
+ CFLAGS-clnt_perr.c = -fexceptions
+ CFLAGS-openchild.c = -fexceptions
+
+-CPPFLAGS += -D_RPC_THREAD_SAFE_
++CPPFLAGS += -D_RPC_THREAD_SAFE_ -fno-strict-aliasing
+
+ include ../Rules
+
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/1130_all_glibc-2.4-undefine-__i686.patch b/patches/glibc-2.8-20080811/generic/gentoo/1130_all_glibc-2.4-undefine-__i686.patch
new file mode 100644
index 0000000..6a2e833
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/1130_all_glibc-2.4-undefine-__i686.patch
@@ -0,0 +1,49 @@
+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.
+
+---
+ nptl/sysdeps/pthread/pt-initfini.c | 3 +++
+ sysdeps/i386/sysdep.h | 8 ++++++++
+ 2 files changed, 11 insertions(+)
+
+Index: glibc-2.8-20080811/nptl/sysdeps/pthread/pt-initfini.c
+===================================================================
+--- glibc-2.8-20080811.orig/nptl/sysdeps/pthread/pt-initfini.c
++++ glibc-2.8-20080811/nptl/sysdeps/pthread/pt-initfini.c
+@@ -45,6 +45,9 @@
+ /* Embed an #include to pull in the alignment and .end directives. */
+ asm ("\n#include \"defs.h\"");
+
++/* Embed an #include to pull in asm settings. */
++asm ("\n#ifdef __i686__\n#include <sysdep.h>\n#endif");
++
+ /* The initial common code ends here. */
+ asm ("\n/*@HEADER_ENDS*/");
+
+Index: glibc-2.8-20080811/sysdeps/i386/sysdep.h
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/i386/sysdep.h
++++ glibc-2.8-20080811/sysdeps/i386/sysdep.h
+@@ -18,6 +18,14 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++/*
++ * When building for i686 targets or better, gcc automatically defines
++ * '__i686' to '1' for us which causes trouble when using section names
++ * like '__i686.get_pc_thunk.reg'. Since we check for __i686__ in the
++ * code, killing '__i686' shouldn't be a problem.
++ */
++#undef __i686
++
+ #include <sysdeps/generic/sysdep.h>
+
+ #ifdef __ASSEMBLER__
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/3000_all_2.3.6-dl_execstack-PaX-support.patch b/patches/glibc-2.8-20080811/generic/gentoo/3000_all_2.3.6-dl_execstack-PaX-support.patch
new file mode 100644
index 0000000..eca5d11
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/3000_all_2.3.6-dl_execstack-PaX-support.patch
@@ -0,0 +1,73 @@
+ With latest versions of glibc, a lot of apps failed on a PaX enabled
+ system with:
+ cannot enable executable stack as shared object requires: Permission denied
+
+ This is due to PaX 'exec-protecting' the stack, and ld.so then trying
+ to make the stack executable due to some libraries not containing the
+ PT_GNU_STACK section. Bug #32960. <azarah@gentoo.org> (12 Nov 2003).
+
+ Patch also NPTL. Bug #116086. <kevquinn@gentoo.org> (20 Dec 2005).
+
+---
+ nptl/allocatestack.c | 3 ++-
+ sysdeps/unix/sysv/linux/dl-execstack.c | 19 ++++++++++++++++---
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+Index: glibc-2.8-20080811/nptl/allocatestack.c
+===================================================================
+--- glibc-2.8-20080811.orig/nptl/allocatestack.c
++++ glibc-2.8-20080811/nptl/allocatestack.c
+@@ -299,7 +299,8 @@ change_stack_perm (struct pthread *pd
+ # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
+ #endif
+ if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
+- return errno;
++ if (errno != EACCES) /* PAX is enabled */
++ return errno;
+
+ return 0;
+ }
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/dl-execstack.c
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/dl-execstack.c
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/dl-execstack.c
+@@ -63,7 +63,10 @@ _dl_make_stack_executable (void **stack_
+ else
+ # endif
+ {
+- result = errno;
++ if (errno == EACCES) /* PAX is enabled */
++ result = 0;
++ else
++ result = errno;
+ goto out;
+ }
+ }
+@@ -89,7 +92,12 @@ _dl_make_stack_executable (void **stack_
+ page -= size;
+ else
+ {
+- if (errno != ENOMEM) /* Unexpected failure mode. */
++ if (errno == EACCES) /* PAX is enabled */
++ {
++ result = 0;
++ goto out;
++ }
++ else if (errno != ENOMEM) /* Unexpected failure mode. */
+ {
+ result = errno;
+ goto out;
+@@ -115,7 +123,12 @@ _dl_make_stack_executable (void **stack_
+ page += size;
+ else
+ {
+- if (errno != ENOMEM) /* Unexpected failure mode. */
++ if (errno == EACCES) /* PAX is enabled */
++ {
++ result = 0;
++ goto out;
++ }
++ else if (errno != ENOMEM) /* Unexpected failure mode. */
+ {
+ result = errno;
+ goto out;
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/3010_all_2.3.3_pre20040117-pt_pax.patch b/patches/glibc-2.8-20080811/generic/gentoo/3010_all_2.3.3_pre20040117-pt_pax.patch
new file mode 100644
index 0000000..e4e2c26
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/3010_all_2.3.3_pre20040117-pt_pax.patch
@@ -0,0 +1,35 @@
+---
+ elf/elf.h | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+Index: glibc-2.8-20080811/elf/elf.h
+===================================================================
+--- glibc-2.8-20080811.orig/elf/elf.h
++++ glibc-2.8-20080811/elf/elf.h
+@@ -571,6 +571,7 @@ typedef struct
+ #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
+ #define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
+ #define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
++#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */
+ #define PT_LOSUNW 0x6ffffffa
+ #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
+ #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
+@@ -584,6 +585,18 @@ typedef struct
+ #define PF_X (1 << 0) /* Segment is executable */
+ #define PF_W (1 << 1) /* Segment is writable */
+ #define PF_R (1 << 2) /* Segment is readable */
++#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
++#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
++#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
++#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
++#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
++#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
++#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
++#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
++#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
++#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
++#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
++#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
+ #define PF_MASKOS 0x0ff00000 /* OS-specific */
+ #define PF_MASKPROC 0xf0000000 /* Processor-specific */
+
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/6400_all_sh-glibc-2.3.2-fpscr_values.patch b/patches/glibc-2.8-20080811/generic/gentoo/6400_all_sh-glibc-2.3.2-fpscr_values.patch
new file mode 100644
index 0000000..3ba4378
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/6400_all_sh-glibc-2.3.2-fpscr_values.patch
@@ -0,0 +1,42 @@
+http://sources.redhat.com/ml/libc-alpha/2003-06/msg00027.html
+http://www.m17n.org/linux-sh/ml/linux-sh/2003-05/msg00010.html
+
+http://rpm.sh-linux.org/rpm-2004/target/SRPMS/glibc-2.3.3-27.12.src.rpm
+
+http://bugs.gentoo.org/100696
+
+---
+ sysdeps/unix/sysv/linux/sh/Versions | 1 +
+ sysdeps/unix/sysv/linux/sh/sysdep.S | 10 ++++++++++
+ 2 files changed, 11 insertions(+)
+
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/Versions
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/sh/Versions
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/Versions
+@@ -2,6 +2,7 @@ libc {
+ GLIBC_2.2 {
+ # functions used in other libraries
+ __xstat64; __fxstat64; __lxstat64;
++ __fpscr_values;
+
+ # a*
+ alphasort64;
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/sysdep.S
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/sh/sysdep.S
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/sysdep.S
+@@ -32,3 +32,13 @@ ENTRY (__syscall_error)
+
+ #define __syscall_error __syscall_error_1
+ #include <sysdeps/unix/sh/sysdep.S>
++
++ .data
++ .align 3
++ .globl ___fpscr_values
++ .type ___fpscr_values, @object
++ .size ___fpscr_values, 8
++___fpscr_values:
++ .long 0
++ .long 0x80000
++weak_alias (___fpscr_values, __fpscr_values)
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/6415_all_sh-glibc-2.5-no-asm-user-header.patch b/patches/glibc-2.8-20080811/generic/gentoo/6415_all_sh-glibc-2.5-no-asm-user-header.patch
new file mode 100644
index 0000000..54b51cc
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/6415_all_sh-glibc-2.5-no-asm-user-header.patch
@@ -0,0 +1,76 @@
+2007-03-13 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/unix/sysv/linux/sh/sys/user.h: Copy Linux's asm-sh/user.h.
+
+---
+ sysdeps/unix/sysv/linux/sh/sys/user.h | 56 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 53 insertions(+), 3 deletions(-)
+
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/sys/user.h
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/sh/sys/user.h
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/sys/user.h
+@@ -19,10 +19,60 @@
+ #ifndef _SYS_USER_H
+ #define _SYS_USER_H 1
+
+-#include <features.h>
++#include <unistd.h>
++#include <asm/ptrace.h>
+
+-#include <asm/user.h>
++/*
++ * Core file format: The core file is written in such a way that gdb
++ * can understand it and provide useful information to the user (under
++ * linux we use the `trad-core' bfd). The file contents are as follows:
++ *
++ * upage: 1 page consisting of a user struct that tells gdb
++ * what is present in the file. Directly after this is a
++ * copy of the task_struct, which is currently not used by gdb,
++ * but it may come in handy at some point. All of the registers
++ * are stored as part of the upage. The upage should always be
++ * only one page long.
++ * data: The data segment follows next. We use current->end_text to
++ * current->brk to pick up all of the user variables, plus any memory
++ * that may have been sbrk'ed. No attempt is made to determine if a
++ * page is demand-zero or if a page is totally unused, we just cover
++ * the entire range. All of the addresses are rounded in such a way
++ * that an integral number of pages is written.
++ * stack: We need the stack information in order to get a meaningful
++ * backtrace. We need to write the data from usp to
++ * current->start_stack, so we round each of these in order to be able
++ * to write an integer number of pages.
++ */
+
+-#undef start_thread
++struct user_fpu_struct {
++ unsigned long fp_regs[16];
++ unsigned long xfp_regs[16];
++ unsigned long fpscr;
++ unsigned long fpul;
++};
++
++struct user {
++ struct pt_regs regs; /* entire machine state */
++ struct user_fpu_struct fpu; /* Math Co-processor registers */
++ int u_fpvalid; /* True if math co-processor being used */
++ size_t u_tsize; /* text size (pages) */
++ size_t u_dsize; /* data size (pages) */
++ size_t u_ssize; /* stack size (pages) */
++ unsigned long start_code; /* text starting address */
++ unsigned long start_data; /* data starting address */
++ unsigned long start_stack; /* stack starting address */
++ long int signal; /* signal causing core dump */
++ struct regs * u_ar0; /* help gdb find registers */
++ struct user_fpu_struct* u_fpstate; /* Math Co-processor pointer */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#define NBPG getpagesize()
++#define UPAGES 1
++#define HOST_TEXT_START_ADDR (u.start_code)
++#define HOST_DATA_START_ADDR (u.start_data)
++#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
+
+ #endif /* sys/user.h */
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/6416_all_sh-glibc-2.5-no-asm-elf-header.patch b/patches/glibc-2.8-20080811/generic/gentoo/6416_all_sh-glibc-2.5-no-asm-elf-header.patch
new file mode 100644
index 0000000..e13d01f
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/6416_all_sh-glibc-2.5-no-asm-elf-header.patch
@@ -0,0 +1,33 @@
+2007-03-13 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/unix/sysv/linux/sh/sys/procfs.h: Copy Linux's asm-sh/elf.h types.
+
+---
+ sysdeps/unix/sysv/linux/sh/sys/procfs.h | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+Index: glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+===================================================================
+--- glibc-2.8-20080811.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h
++++ glibc-2.8-20080811/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+@@ -29,10 +29,19 @@
+ #include <sys/types.h>
+ #include <sys/ucontext.h>
+ #include <sys/user.h>
+-#include <asm/elf.h>
+
+ __BEGIN_DECLS
+
++/*
++ * ELF register definitions...
++ */
++typedef unsigned long elf_greg_t;
++
++#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++typedef struct user_fpu_struct elf_fpregset_t;
++
+ struct elf_siginfo
+ {
+ int si_signo; /* Signal number. */
diff --git a/patches/glibc-2.8-20080811/generic/gentoo/6645_all_glibc-mips_shn_undef-hack.patch b/patches/glibc-2.8-20080811/generic/gentoo/6645_all_glibc-mips_shn_undef-hack.patch
new file mode 100644
index 0000000..74579dc
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/gentoo/6645_all_glibc-mips_shn_undef-hack.patch
@@ -0,0 +1,29 @@
+ Hack from Debian to hopefully get sandbox working on mips
+
+<`Kumba> ths: given the SHN_UNDEF thing is a hack, what's the preferred solution?
+<ths> For fakeroot the simplest trigger is "fakeroot file /bin/ls".
+<ths> `Kumba: I haven't found a better one yet.
+<ths> Probably marker symbols around the stub section, and then exclude it from the link map.
+<ths> This needs a ld change.
+
+---
+ elf/do-lookup.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+Index: glibc-2.8-20080811/elf/do-lookup.h
+===================================================================
+--- glibc-2.8-20080811.orig/elf/do-lookup.h
++++ glibc-2.8-20080811/elf/do-lookup.h
+@@ -246,6 +246,12 @@ do_lookup_x (const char *undef_name, uin
+ }
+ /* FALLTHROUGH */
+ case STB_GLOBAL:
++#ifdef __mips__
++ /* HACK: MIPS marks its lazy evaluation stubs with SHN_UNDEF
++ symbols, we skip them. */
++ if (sym->st_shndx == SHN_UNDEF)
++ break;
++#endif
+ /* Global definition. Just what we need. */
+ result->s = sym;
+ result->m = (struct link_map *) map;
diff --git a/patches/glibc-2.8-20080811/generic/glibc-2.5_stdlib_longlong.h b/patches/glibc-2.8-20080811/generic/glibc-2.5_stdlib_longlong.h
new file mode 100644
index 0000000..f465c69
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/glibc-2.5_stdlib_longlong.h
@@ -0,0 +1,37 @@
+---
+ stdlib/longlong.h | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+Index: glibc-2.8-20080811/stdlib/longlong.h
+===================================================================
+--- glibc-2.8-20080811.orig/stdlib/longlong.h
++++ glibc-2.8-20080811/stdlib/longlong.h
+@@ -205,6 +205,14 @@ UDItype __umulsidi3 (USItype, USItype);
+ "rI" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+ "rI" ((USItype) (bl)) __CLOBBER_CC)
++/* v3m and all higher arches have long multiply support. */
++#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
++#define umul_ppmm(xh, xl, a, b) \
++ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
++#define UMUL_TIME 5
++#define smul_ppmm(xh, xl, a, b) \
++ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
++#else
+ #define umul_ppmm(xh, xl, a, b) \
+ {register USItype __t0, __t1, __t2; \
+ __asm__ ("%@ Inlined umul_ppmm\n" \
+@@ -226,7 +234,13 @@ UDItype __umulsidi3 (USItype, USItype);
+ : "r" ((USItype) (a)), \
+ "r" ((USItype) (b)) __CLOBBER_CC );}
+ #define UMUL_TIME 20
++#endif
+ #define UDIV_TIME 100
++#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
++#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
++#define COUNT_LEADING_ZEROS_0 32
++#endif
++
+ #endif /* __arm__ */
+
+ #if defined (__hppa) && W_TYPE_SIZE == 32
diff --git a/patches/glibc-2.8-20080811/generic/glibc-configure-apple-as.patch b/patches/glibc-2.8-20080811/generic/glibc-configure-apple-as.patch
new file mode 100644
index 0000000..13b7b23
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/glibc-configure-apple-as.patch
@@ -0,0 +1,47 @@
+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>
+
+---
+ configure | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: glibc-2.8-20080811/configure
+===================================================================
+--- glibc-2.8-20080811.orig/configure
++++ glibc-2.8-20080811/configure
+@@ -4527,7 +4527,7 @@ else
+ # 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]*)
+@@ -4538,7 +4538,7 @@ echo $ECHO_N "checking version of $AS...
+ { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+ echo "${ECHO_T}$ac_prog_version" >&6; }
+ fi
+-if test $ac_verc_fail = yes; then
++if test $ac_verc_fail = yes -a -z "$enable_hacker_mode"; then
+ AS=: critic_missing="$critic_missing as"
+ fi
+
+@@ -4601,7 +4601,7 @@ echo $ECHO_N "checking version of $LD...
+ { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+ echo "${ECHO_T}$ac_prog_version" >&6; }
+ fi
+-if test $ac_verc_fail = yes; then
++if test $ac_verc_fail = yes -a -z "$enable_hacker_mode"; then
+ LD=: critic_missing="$critic_missing ld"
+ fi
+
diff --git a/patches/glibc-2.8-20080811/generic/glibc-configure-old-gcc.patch b/patches/glibc-2.8-20080811/generic/glibc-configure-old-gcc.patch
new file mode 100644
index 0000000..3de4828
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/glibc-configure-old-gcc.patch
@@ -0,0 +1,17 @@
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: glibc-2.8-20080811/configure
+===================================================================
+--- glibc-2.8-20080811.orig/configure
++++ glibc-2.8-20080811/configure
+@@ -4719,7 +4719,7 @@ echo $ECHO_N "checking version of $CC...
+ { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+ echo "${ECHO_T}$ac_prog_version" >&6; }
+ fi
+-if test $ac_verc_fail = yes; then
++if test $ac_verc_fail = yes -a -z "$enable_hacker_mode"; then
+ critic_missing="$critic_missing gcc"
+ fi
+
diff --git a/patches/glibc-2.8-20080811/generic/make-install-lib-all.patch b/patches/glibc-2.8-20080811/generic/make-install-lib-all.patch
new file mode 100644
index 0000000..0daf7f9
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/make-install-lib-all.patch
@@ -0,0 +1,45 @@
+# --- T2-COPYRIGHT-NOTE-BEGIN ---
+# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
+#
+# T2 SDE: package/.../glibc32/make-install-lib-all.patch
+# Copyright (C) 2004 - 2005 The T2 SDE Project
+#
+# More information can be found in the files COPYING and README.
+#
+# This patch file is dual-licensed. It is available under the license the
+# patched project is licensed under, as long as it is an OpenSource license
+# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
+# of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+# --- T2-COPYRIGHT-NOTE-END ---
+---
+# Makerules | 8 ++++++++
+# 1 file changed, 8 insertions(+)
+#
+Index: glibc-2.8-20080811/Makerules
+===================================================================
+--- glibc-2.8-20080811.orig/Makerules
++++ glibc-2.8-20080811/Makerules
+@@ -853,6 +853,13 @@ endef
+ 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)
+@@ -876,6 +883,7 @@ endef
+ install-lib.so := $(filter %.so,$(install-lib:%_pic.a=%.so))
+ install-lib := $(filter-out %.so %_pic.a,$(install-lib))
+
++
+ ifeq (yes,$(build-shared))
+ # Find which .so's have versions.
+ versioned := $(strip $(foreach so,$(install-lib.so),\
diff --git a/patches/glibc-2.8-20080811/generic/series b/patches/glibc-2.8-20080811/generic/series
new file mode 100644
index 0000000..3606ad4
--- /dev/null
+++ b/patches/glibc-2.8-20080811/generic/series
@@ -0,0 +1,30 @@
+make-install-lib-all.patch
+glibc-configure-apple-as.patch
+glibc-configure-old-gcc.patch
+configure_in-sane_readelf.diff
+configure-sane_readelf.diff
+
+glibc-2.5_stdlib_longlong.h
+#cross_timezone.diff
+
+gentoo/0030_all_glibc-respect-env-CPPFLAGS.patch
+gentoo/0040_all_glibc-i586-chk.patch
+gentoo/0070_all_glibc-i386-x86_64-revert-clone-cfi.patch
+gentoo/1010_all_glibc-queue-header-updates.patch
+gentoo/1030_all_glibc-manual-no-perl.patch
+gentoo/1040_all_2.3.3-localedef-fix-trampoline.patch
+gentoo/1050_all_glibc-posix-awk.patch
+gentoo/1055_all_glibc-resolv-dynamic.patch
+gentoo/1075_all_glibc-section-comments.patch
+gentoo/1080_all_glibc-no-inline-gmon.patch
+gentoo/1090_all_glibc-2.3.6-fix-pr631.patch
+gentoo/1100_all_glibc-2.3.3-china.patch
+gentoo/1103_all_glibc-new-valencian-locale.patch
+gentoo/1120_all_glibc-2.5-strict-aliasing.patch
+gentoo/1130_all_glibc-2.4-undefine-__i686.patch
+gentoo/3000_all_2.3.6-dl_execstack-PaX-support.patch
+gentoo/3010_all_2.3.3_pre20040117-pt_pax.patch
+gentoo/6400_all_sh-glibc-2.3.2-fpscr_values.patch
+gentoo/6415_all_sh-glibc-2.5-no-asm-user-header.patch
+gentoo/6416_all_sh-glibc-2.5-no-asm-elf-header.patch
+gentoo/6645_all_glibc-mips_shn_undef-hack.patch
diff --git a/patches/glibc-2.8-ports-20080811/generic/gentoo/6224_all_glibc-2.7-lowlevellock-includes.patch b/patches/glibc-2.8-ports-20080811/generic/gentoo/6224_all_glibc-2.7-lowlevellock-includes.patch
new file mode 100644
index 0000000..4a33972
--- /dev/null
+++ b/patches/glibc-2.8-ports-20080811/generic/gentoo/6224_all_glibc-2.7-lowlevellock-includes.patch
@@ -0,0 +1,28 @@
+fix building on arm:
+
+armv4l-unknown-linux-gnu-gcc ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c -c -std=gnu99 -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -fno-strict-aliasing -mcpu=strongarm110 -pipe -Wstrict-prototypes -fPIC -I../include -I/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/nptl -I/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl -I../ports/sysdeps/arm/elf -I../ports/sysdeps/unix/sysv/linux/arm/nptl -I../ports/sysdeps/unix/sysv/linux/arm -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../ports/sysdeps/unix/sysv/linux -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../ports/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../ports/sysdeps/unix/arm -I../nptl/sysdeps/unix -I../ports/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../ports/sysdeps/arm/fpu -I../ports/sysdeps/arm/nptl -I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl -I../ports -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/armv4l-unknown-linux-gnu/4.1.2/include -isystem /usr/lib/gcc/armv4l-unknown-linux-gnu/4.1.2/include-fixed -isystem /usr/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DSHARED -DNOT_IN_libc=1 -DIS_IN_rtld=1 -o /var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os -MD -MP -MF /var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os.dt -MT /var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os
+In file included from ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c:21:
+../nptl/sysdeps/unix/sysv/linux/lowlevellock.c: In function '__lll_lock_wait_private':
+../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: warning: implicit declaration of function 'THREAD_GETMEM'
+../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: 'THREAD_SELF' undeclared (first use in this function)
+../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: (Each undeclared identifier is reported only once
+../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: for each function it appears in.)
+../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: 'header' undeclared (first use in this function)
+make[4]: *** [/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os] Error 1
+
+---
+ sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+Index: glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+===================================================================
+--- glibc-ports-2.7.orig/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
++++ glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+@@ -25,6 +25,7 @@
+ #include <atomic.h>
+ #include <sysdep.h>
+ #include <kernel-features.h>
++#include <tls.h>
+
+ #define FUTEX_WAIT 0
+ #define FUTEX_WAKE 1
diff --git a/patches/glibc-2.8-ports-20080811/generic/gentoo/6225_all_glibc-2.7-cargs6.patch b/patches/glibc-2.8-ports-20080811/generic/gentoo/6225_all_glibc-2.7-cargs6.patch
new file mode 100644
index 0000000..a0d0e93
--- /dev/null
+++ b/patches/glibc-2.8-ports-20080811/generic/gentoo/6225_all_glibc-2.7-cargs6.patch
@@ -0,0 +1,31 @@
+fix building on arm:
+
+(echo '#include <sysdep-cancel.h>'; \
+ echo 'PSEUDO (splice, splice, 6)'; \
+ echo ' ret'; \
+ echo 'PSEUDO_END(splice)'; \
+ echo 'libc_hidden_def (splice)'; \
+ ) | armv4l-unknown-linux-gnu-gcc -c -I../include -I/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/misc -I/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl -I../ports/sysdeps/arm/elf -I../ports/sysdeps/unix/sysv/linux/arm/nptl -I../ports/sysdeps/unix/sysv/linux/arm -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../ports/sysdeps/unix/sysv/linux -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../ports/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../ports/sysdeps/unix/arm -I../nptl/sysdeps/unix -I../ports/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../ports/sysdeps/arm/fpu -I../ports/sysdeps/arm/nptl -I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl -I../ports -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/armv4l-unknown-linux-gnu/4.1.2/include -isystem /usr/lib/gcc/armv4l-unknown-linux-gnu/4.1.2/include-fixed -isystem /usr/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DASSEMBLER -x assembler-with-cpp -o /var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/misc/splice.o -
+<stdin>: Assembler messages:
+<stdin>:2: Error: bad instruction `docargs_6'
+<stdin>:2: Error: bad instruction `undocargs_6'
+make[2]: *** [/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/misc/splice.o] Error 1
+
+---
+ sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+Index: glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-ports-2.7.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
++++ glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+@@ -73,6 +73,9 @@
+ # define DOCARGS_5 DOCARGS_4
+ # define UNDOCARGS_5 UNDOCARGS_4
+
++# define DOCARGS_6 DOCARGS_5
++# define UNDOCARGS_6 UNDOCARGS_5
++
+ # ifdef IS_IN_libpthread
+ # define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
+ # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
diff --git a/patches/glibc-2.8-ports-20080811/generic/gentoo/6605_all_glibc-2.4-fpu-cw-mips.patch b/patches/glibc-2.8-ports-20080811/generic/gentoo/6605_all_glibc-2.4-fpu-cw-mips.patch
new file mode 100644
index 0000000..832e84c
--- /dev/null
+++ b/patches/glibc-2.8-ports-20080811/generic/gentoo/6605_all_glibc-2.4-fpu-cw-mips.patch
@@ -0,0 +1,19 @@
+http://sourceware.org/ml/libc-alpha/2002-10/msg00392.html
+
+---
+ sysdeps/mips/fpu_control.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: glibc-ports-2.7/sysdeps/mips/fpu_control.h
+===================================================================
+--- glibc-ports-2.7.orig/sysdeps/mips/fpu_control.h
++++ glibc-ports-2.7/sysdeps/mips/fpu_control.h
+@@ -85,7 +85,7 @@ extern fpu_control_t __fpu_control;
+ #define _FPU_RC_UP 0x2
+ #define _FPU_RC_DOWN 0x3
+
+-#define _FPU_RESERVED 0xfe3c0000 /* Reserved bits in cw */
++#define _FPU_RESERVED 0xfebc0000 /* Reserved bits in cw */
+
+
+ /* The fdlibm code requires strict IEEE double precision arithmetic,
diff --git a/patches/glibc-2.8-ports-20080811/generic/glibc-2.5_ports_sysdeps_arm_mp_clz_tab.c b/patches/glibc-2.8-ports-20080811/generic/glibc-2.5_ports_sysdeps_arm_mp_clz_tab.c
new file mode 100644
index 0000000..ee2a6bf
--- /dev/null
+++ b/patches/glibc-2.8-ports-20080811/generic/glibc-2.5_ports_sysdeps_arm_mp_clz_tab.c
@@ -0,0 +1,33 @@
+---
+ ports/sysdeps/arm/mp_clz_tab.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+Index: glibc-ports-2.7/ports/sysdeps/arm/mp_clz_tab.c
+===================================================================
+--- /dev/null
++++ glibc-ports-2.7/ports/sysdeps/arm/mp_clz_tab.c
+@@ -0,0 +1,24 @@
++/* __clz_tab -- support for longlong.h
++ Copyright (C) 2004 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
++/* Nothing required. */
++#else
++#include <stdlib/mp_clz_tab.c>
++#endif
diff --git a/patches/glibc-2.8-ports-20080811/generic/series b/patches/glibc-2.8-ports-20080811/generic/series
new file mode 100644
index 0000000..b8473fc
--- /dev/null
+++ b/patches/glibc-2.8-ports-20080811/generic/series
@@ -0,0 +1,7 @@
+sysdeps_mips_mips32_Makefile-bootstrap.diff
+
+glibc-2.5_ports_sysdeps_arm_mp_clz_tab.c
+
+gentoo/6605_all_glibc-2.4-fpu-cw-mips.patch
+gentoo/6224_all_glibc-2.7-lowlevellock-includes.patch
+gentoo/6225_all_glibc-2.7-cargs6.patch
diff --git a/patches/glibc-2.8-ports-20080811/generic/sysdeps_mips_mips32_Makefile-bootstrap.diff b/patches/glibc-2.8-ports-20080811/generic/sysdeps_mips_mips32_Makefile-bootstrap.diff
new file mode 100644
index 0000000..a43709f
--- /dev/null
+++ b/patches/glibc-2.8-ports-20080811/generic/sysdeps_mips_mips32_Makefile-bootstrap.diff
@@ -0,0 +1,28 @@
+From: Marc Kleine-Budde <mkl@pengutronix.de>
+Subject: Hack around mips args to host-gcc
+
+originally From: "Steven J dot Hill" <sjhill at realitydiluted dot com>
+for Crosstool
+
+In OSELAS.Toolchain we pass -DBOOTSTRAP_GCC in CC. This patch fixes the
+header extraction from the glibc, by not passing mips specific flags to
+the HOST compiler.
+
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+
+---
+ sysdeps/mips/mips32/Makefile | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+Index: glibc-ports-2.7/sysdeps/mips/mips32/Makefile
+===================================================================
+--- glibc-ports-2.7.orig/sysdeps/mips/mips32/Makefile
++++ glibc-ports-2.7/sysdeps/mips/mips32/Makefile
+@@ -1,3 +1,7 @@
++ifeq ($(filter -DBOOTSTRAP_GCC,$(CC)),)
+ ifeq ($(filter -mabi=32,$(CC)),)
+ CC += -mabi=32
+ endif
++else
++CC += -D_MIPS_SZPTR=32
++endif