diff options
author | Robert Schwebel <r.schwebel@pengutronix.de> | 2010-08-11 23:37:38 +0200 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2011-02-22 11:26:06 +0100 |
commit | c453882ee4c97746814d10410062cec0476244bb (patch) | |
tree | 9626f8fe6835d2e76433f658e4df0eb89392df8c /patches | |
parent | 4f50b89cfbf9b74386869cd2577dff3076a5cf92 (diff) | |
download | OSELAS.Toolchain-c453882ee4c97746814d10410062cec0476244bb.tar.gz OSELAS.Toolchain-c453882ee4c97746814d10410062cec0476244bb.tar.xz |
[glibc] add patches for 2.12.1
Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Diffstat (limited to 'patches')
23 files changed, 1107 insertions, 0 deletions
diff --git a/patches/glibc-2.12.1/0001-install-lib-all.patch b/patches/glibc-2.12.1/0001-install-lib-all.patch new file mode 100644 index 0000000..41bd255 --- /dev/null +++ b/patches/glibc-2.12.1/0001-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.12.1/Makerules +=================================================================== +--- glibc-2.12.1.orig/Makerules ++++ glibc-2.12.1/Makerules +@@ -868,6 +868,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) +@@ -891,6 +898,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.12.1/0002-fix-build-with-static-nss.patch b/patches/glibc-2.12.1/0002-fix-build-with-static-nss.patch new file mode 100644 index 0000000..e2854db --- /dev/null +++ b/patches/glibc-2.12.1/0002-fix-build-with-static-nss.patch @@ -0,0 +1,55 @@ +From: Dan Kegel <dank@kegel.com> +Subject: [patch] fix build error with static-nss +Date: Wed Jun 15 09:12:43 PDT 2005 + +This patch 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 + +Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de> + +--- + Makeconfig | 2 +- + elf/Makefile | 7 +++++++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +Index: glibc-2.12.1/Makeconfig +=================================================================== +--- glibc-2.12.1.orig/Makeconfig ++++ glibc-2.12.1/Makeconfig +@@ -531,7 +531,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.12.1/elf/Makefile +=================================================================== +--- glibc-2.12.1.orig/elf/Makefile ++++ glibc-2.12.1/elf/Makefile +@@ -146,6 +146,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.12.1/0003-glibc-configure-old-gcc.patch b/patches/glibc-2.12.1/0003-glibc-configure-old-gcc.patch new file mode 100644 index 0000000..e5575f6 --- /dev/null +++ b/patches/glibc-2.12.1/0003-glibc-configure-old-gcc.patch @@ -0,0 +1,17 @@ +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: glibc-2.12.1/configure +=================================================================== +--- glibc-2.12.1.orig/configure ++++ glibc-2.12.1/configure +@@ -5087,7 +5087,7 @@ $as_echo_n "checking version of $CC... " + { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5 + $as_echo "$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.12.1/0004-configure-in-sane-readelf.patch b/patches/glibc-2.12.1/0004-configure-in-sane-readelf.patch new file mode 100644 index 0000000..7ad67ab --- /dev/null +++ b/patches/glibc-2.12.1/0004-configure-in-sane-readelf.patch @@ -0,0 +1,35 @@ +--- + configure.in | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: glibc-2.12.1/configure.in +=================================================================== +--- glibc-2.12.1.orig/configure.in ++++ glibc-2.12.1/configure.in +@@ -1491,6 +1491,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 +@@ -1502,7 +1504,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 +@@ -1687,7 +1689,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.12.1/0005-stdlib-longlong.patch b/patches/glibc-2.12.1/0005-stdlib-longlong.patch new file mode 100644 index 0000000..5b6f6ae --- /dev/null +++ b/patches/glibc-2.12.1/0005-stdlib-longlong.patch @@ -0,0 +1,37 @@ +--- + stdlib/longlong.h | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +Index: glibc-2.12.1/stdlib/longlong.h +=================================================================== +--- glibc-2.12.1.orig/stdlib/longlong.h ++++ glibc-2.12.1/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(__arm__) diff --git a/patches/glibc-2.12.1/0006-respect-env-CPPFLAGS.patch b/patches/glibc-2.12.1/0006-respect-env-CPPFLAGS.patch new file mode 100644 index 0000000..0a6a5e3 --- /dev/null +++ b/patches/glibc-2.12.1/0006-respect-env-CPPFLAGS.patch @@ -0,0 +1,36 @@ +Respect environment CPPFLAGS when we run ./configure so we can inject +random -D things without having to set CFLAGS/ASFLAGS + +This patch was taken from gentoo. + +Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de> + +--- + Makeconfig | 1 + + config.make.in | 1 + + 2 files changed, 2 insertions(+) + +Index: glibc-2.12.1/Makeconfig +=================================================================== +--- glibc-2.12.1.orig/Makeconfig ++++ glibc-2.12.1/Makeconfig +@@ -697,6 +697,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.12.1/config.make.in +=================================================================== +--- glibc-2.12.1.orig/config.make.in ++++ glibc-2.12.1/config.make.in +@@ -107,6 +107,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.12.1/0007-i586-chk.patch b/patches/glibc-2.12.1/0007-i586-chk.patch new file mode 100644 index 0000000..25139c8 --- /dev/null +++ b/patches/glibc-2.12.1/0007-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.12.1/0008-i386-x86_64-revert-clone-cfi.patch b/patches/glibc-2.12.1/0008-i386-x86_64-revert-clone-cfi.patch new file mode 100644 index 0000000..e79e024 --- /dev/null +++ b/patches/glibc-2.12.1/0008-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.12.1/0009-queue-header-updates.patch b/patches/glibc-2.12.1/0009-queue-header-updates.patch new file mode 100644 index 0000000..9110f1c --- /dev/null +++ b/patches/glibc-2.12.1/0009-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.12.1/0010-manual-no-perl.patch b/patches/glibc-2.12.1/0010-manual-no-perl.patch new file mode 100644 index 0000000..5b11ce0 --- /dev/null +++ b/patches/glibc-2.12.1/0010-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.12.1/0011-localedef-fix-trampoline.patch b/patches/glibc-2.12.1/0011-localedef-fix-trampoline.patch new file mode 100644 index 0000000..636dda6 --- /dev/null +++ b/patches/glibc-2.12.1/0011-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.12.1/0012-posix-awk.patch b/patches/glibc-2.12.1/0012-posix-awk.patch new file mode 100644 index 0000000..caa3815 --- /dev/null +++ b/patches/glibc-2.12.1/0012-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.12.1/elf/Makefile +=================================================================== +--- glibc-2.12.1.orig/elf/Makefile ++++ glibc-2.12.1/elf/Makefile +@@ -379,7 +379,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.12.1/0013-resolv-dynamic.patch b/patches/glibc-2.12.1/0013-resolv-dynamic.patch new file mode 100644 index 0000000..19e1966 --- /dev/null +++ b/patches/glibc-2.12.1/0013-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.12.1/resolv/res_libc.c +=================================================================== +--- glibc-2.12.1.orig/resolv/res_libc.c ++++ glibc-2.12.1/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.12.1/0014-section-comments.patch b/patches/glibc-2.12.1/0014-section-comments.patch new file mode 100644 index 0000000..1b7dc3f --- /dev/null +++ b/patches/glibc-2.12.1/0014-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.12.1/include/libc-symbols.h +=================================================================== +--- glibc-2.12.1.orig/include/libc-symbols.h ++++ glibc-2.12.1/include/libc-symbols.h +@@ -239,12 +239,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.12.1/0015-no-inline-gmon.patch b/patches/glibc-2.12.1/0015-no-inline-gmon.patch new file mode 100644 index 0000000..623df27 --- /dev/null +++ b/patches/glibc-2.12.1/0015-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 <kazu@codesourcery.com> + + * 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.12.1/0016-china.patch b/patches/glibc-2.12.1/0016-china.patch new file mode 100644 index 0000000..3be9ea0 --- /dev/null +++ b/patches/glibc-2.12.1/0016-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.12.1/0017-new-valencian-locale.patch b/patches/glibc-2.12.1/0017-new-valencian-locale.patch new file mode 100644 index 0000000..df9d623 --- /dev/null +++ b/patches/glibc-2.12.1/0017-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.12.1/0018-strict-aliasing.patch b/patches/glibc-2.12.1/0018-strict-aliasing.patch new file mode 100644 index 0000000..6e1ff6e --- /dev/null +++ b/patches/glibc-2.12.1/0018-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.12.1/libio/Makefile +=================================================================== +--- glibc-2.12.1.orig/libio/Makefile ++++ glibc-2.12.1/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.12.1/nis/Makefile +=================================================================== +--- glibc-2.12.1.orig/nis/Makefile ++++ glibc-2.12.1/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.12.1/nptl/Makefile +=================================================================== +--- glibc-2.12.1.orig/nptl/Makefile ++++ glibc-2.12.1/nptl/Makefile +@@ -195,6 +195,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.12.1/nss/Makefile +=================================================================== +--- glibc-2.12.1.orig/nss/Makefile ++++ glibc-2.12.1/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.12.1/sunrpc/Makefile +=================================================================== +--- glibc-2.12.1.orig/sunrpc/Makefile ++++ glibc-2.12.1/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.12.1/0019-undefine-__i686.patch b/patches/glibc-2.12.1/0019-undefine-__i686.patch new file mode 100644 index 0000000..6a2e833 --- /dev/null +++ b/patches/glibc-2.12.1/0019-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.12.1/0020-dl_execstack-PaX-support.patch b/patches/glibc-2.12.1/0020-dl_execstack-PaX-support.patch new file mode 100644 index 0000000..4a13b02 --- /dev/null +++ b/patches/glibc-2.12.1/0020-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.12.1/nptl/allocatestack.c +=================================================================== +--- glibc-2.12.1.orig/nptl/allocatestack.c ++++ glibc-2.12.1/nptl/allocatestack.c +@@ -329,7 +329,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.12.1/sysdeps/unix/sysv/linux/dl-execstack.c +=================================================================== +--- glibc-2.12.1.orig/sysdeps/unix/sysv/linux/dl-execstack.c ++++ glibc-2.12.1/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.12.1/0021-pre20040117-pt_pax.patch b/patches/glibc-2.12.1/0021-pre20040117-pt_pax.patch new file mode 100644 index 0000000..fdb72e4 --- /dev/null +++ b/patches/glibc-2.12.1/0021-pre20040117-pt_pax.patch @@ -0,0 +1,35 @@ +--- + elf/elf.h | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +Index: glibc-2.12.1/elf/elf.h +=================================================================== +--- glibc-2.12.1.orig/elf/elf.h ++++ glibc-2.12.1/elf/elf.h +@@ -580,6 +580,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 */ +@@ -593,6 +594,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.12.1/0022-fpscr_values.patch b/patches/glibc-2.12.1/0022-fpscr_values.patch new file mode 100644 index 0000000..40f8142 --- /dev/null +++ b/patches/glibc-2.12.1/0022-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.12.1/sysdeps/unix/sysv/linux/sh/Versions +=================================================================== +--- glibc-2.12.1.orig/sysdeps/unix/sysv/linux/sh/Versions ++++ glibc-2.12.1/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.12.1/sysdeps/unix/sysv/linux/sh/sysdep.S +=================================================================== +--- glibc-2.12.1.orig/sysdeps/unix/sysv/linux/sh/sysdep.S ++++ glibc-2.12.1/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.12.1/series b/patches/glibc-2.12.1/series new file mode 100644 index 0000000..619dd56 --- /dev/null +++ b/patches/glibc-2.12.1/series @@ -0,0 +1,22 @@ +0001-install-lib-all.patch +0002-fix-build-with-static-nss.patch +0003-glibc-configure-old-gcc.patch +0004-configure-in-sane-readelf.patch +0005-stdlib-longlong.patch +0006-respect-env-CPPFLAGS.patch +0007-i586-chk.patch +0008-i386-x86_64-revert-clone-cfi.patch +0009-queue-header-updates.patch +0010-manual-no-perl.patch +0011-localedef-fix-trampoline.patch +0012-posix-awk.patch +0013-resolv-dynamic.patch +0014-section-comments.patch +0015-no-inline-gmon.patch +0016-china.patch +0017-new-valencian-locale.patch +0018-strict-aliasing.patch +0019-undefine-__i686.patch +0020-dl_execstack-PaX-support.patch +0021-pre20040117-pt_pax.patch +0022-fpscr_values.patch |