From c335c709f7b1e5296dbcdb4a76fa53aa54a51166 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 1 Jul 2012 09:45:04 +0200 Subject: [PATCH] glibc: add 2 patches from Arch, remove useless patches, rebuild against kernel 3.4. --- srcpkgs/glibc/glibc-devel.template | 2 +- srcpkgs/glibc/patches/disable_timezone.diff | 11 - ...-ignore-origin-of-privileged-program.patch | 26 -- .../glibc-2.15-fix-res_query-assert.patch | 51 ++++ .../patches/glibc-2.15-revert-c5a0802a.patch | 223 ++++++++++++++++++ srcpkgs/glibc/patches/glibc-__i686.patch | 13 - srcpkgs/glibc/patches/xattr.h-dupdefs.diff | 12 - srcpkgs/glibc/template | 4 +- 8 files changed, 277 insertions(+), 65 deletions(-) delete mode 100644 srcpkgs/glibc/patches/disable_timezone.diff delete mode 100644 srcpkgs/glibc/patches/glibc-2.12.2-ignore-origin-of-privileged-program.patch create mode 100644 srcpkgs/glibc/patches/glibc-2.15-fix-res_query-assert.patch create mode 100644 srcpkgs/glibc/patches/glibc-2.15-revert-c5a0802a.patch delete mode 100644 srcpkgs/glibc/patches/glibc-__i686.patch delete mode 100644 srcpkgs/glibc/patches/xattr.h-dupdefs.diff diff --git a/srcpkgs/glibc/glibc-devel.template b/srcpkgs/glibc/glibc-devel.template index 7ec9e6d760b..0c05fc1ebf3 100644 --- a/srcpkgs/glibc/glibc-devel.template +++ b/srcpkgs/glibc/glibc-devel.template @@ -1,6 +1,6 @@ # Template file for 'glibc-devel'. # -depends="kernel-libc-headers>=3.2.6<3.3 glibc>=$version" +depends="kernel-libc-headers>=3.4<3.5 glibc>=$version" short_desc="${short_desc} (development files)" long_desc="${long_desc} diff --git a/srcpkgs/glibc/patches/disable_timezone.diff b/srcpkgs/glibc/patches/disable_timezone.diff deleted file mode 100644 index fd9ecec649e..00000000000 --- a/srcpkgs/glibc/patches/disable_timezone.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- Makeconfig.orig 2009-06-07 06:17:04.561863100 +0200 -+++ Makeconfig 2009-06-07 06:17:43.384890260 +0200 -@@ -918,7 +918,7 @@ all-subdirs = csu assert ctype locale in - stdlib stdio-common libio malloc string wcsmbs time dirent \ - grp pwd posix io termios resource misc socket sysvipc gmon \ - gnulib iconv iconvdata wctype manual shadow gshadow po argp \ -- crypt nss localedata timezone rt conform debug \ -+ crypt nss localedata rt conform debug \ - $(add-on-subdirs) $(dlfcn) $(binfmt-subdir) - - ifndef avoid-generated diff --git a/srcpkgs/glibc/patches/glibc-2.12.2-ignore-origin-of-privileged-program.patch b/srcpkgs/glibc/patches/glibc-2.12.2-ignore-origin-of-privileged-program.patch deleted file mode 100644 index 978f78cabeb..00000000000 --- a/srcpkgs/glibc/patches/glibc-2.12.2-ignore-origin-of-privileged-program.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d14e6b09d60d52cc12f0396c3106b14e1bd0fe8f Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Thu, 9 Dec 2010 15:00:59 +0100 -Subject: [PATCH 1/1] Ignore origin of privileged program - ---- - ChangeLog | 5 +++++ - elf/dl-object.c | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -diff --git a/elf/dl-object.c b/elf/dl-object.c -index 22a1635..7674d49 100644 ---- elf/dl-object.c.orig -+++ elf/dl-object.c -@@ -214,6 +214,9 @@ _dl_new_object (char *realname, const char *libname, int type, - out: - new->l_origin = origin; - } -+ else if (INTUSE(__libc_enable_secure) && type == lt_executable) -+ /* The origin of a privileged program cannot be trusted. */ -+ new->l_origin = (char *) -1; - - return new; - } --- -1.7.2 diff --git a/srcpkgs/glibc/patches/glibc-2.15-fix-res_query-assert.patch b/srcpkgs/glibc/patches/glibc-2.15-fix-res_query-assert.patch new file mode 100644 index 00000000000..73c58dea438 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-2.15-fix-res_query-assert.patch @@ -0,0 +1,51 @@ +--- resolv/res_query.c ++++ resolv/res_query.c +@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp, + int *resplen2) + { + HEADER *hp = (HEADER *) answer; ++ HEADER *hp2; + int n, use_malloc = 0; + u_int oflags = statp->_flags; + +@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp, + /* __libc_res_nsend might have reallocated the buffer. */ + hp = (HEADER *) *answerp; + +- /* We simplify the following tests by assigning HP to HP2. It +- is easy to verify that this is the same as ignoring all +- tests of HP2. */ +- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp; +- +- if (n < (int) sizeof (HEADER) && answerp2 != NULL +- && *resplen2 > (int) sizeof (HEADER)) ++ /* We simplify the following tests by assigning HP to HP2 or ++ vice versa. It is easy to verify that this is the same as ++ ignoring all tests of HP or HP2. */ ++ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER)) + { +- /* Special case of partial answer. */ +- assert (hp != hp2); +- hp = hp2; ++ hp2 = hp; + } +- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) +- && n > (int) sizeof (HEADER)) ++ else + { +- /* Special case of partial answer. */ +- assert (hp != hp2); +- hp2 = hp; ++ hp2 = (HEADER *) *answerp2; ++ if (n < (int) sizeof (HEADER)) ++ { ++ hp = hp2; ++ } + } + ++ /* Make sure both hp and hp2 are defined */ ++ assert((hp != NULL) && (hp2 != NULL)); ++ + if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0) + && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) { + #ifdef DEBUG diff --git a/srcpkgs/glibc/patches/glibc-2.15-revert-c5a0802a.patch b/srcpkgs/glibc/patches/glibc-2.15-revert-c5a0802a.patch new file mode 100644 index 00000000000..f18520e4310 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-2.15-revert-c5a0802a.patch @@ -0,0 +1,223 @@ +--- nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:12.937212834 +0000 ++++ nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:42.104222278 +0000 +@@ -137,7 +137,6 @@ __pthread_cond_wait: + cmpl $PI_BIT, %eax + jne 18f + +-90: + movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx + movl %ebp, %edx + xorl %esi, %esi +@@ -151,9 +150,6 @@ __pthread_cond_wait: + sete 16(%esp) + je 19f + +- cmpl $-EAGAIN, %eax +- je 91f +- + /* Normal and PI futexes dont mix. Use normal futex functions only + if the kernel does not support the PI futex functions. */ + cmpl $-ENOSYS, %eax +@@ -398,78 +394,6 @@ __pthread_cond_wait: + #endif + call __lll_unlock_wake + jmp 11b +- +-91: +-.LcleanupSTART2: +- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to +- call it again. */ +- +- /* Get internal lock. */ +- movl $1, %edx +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %edx, (%ebx) +-#else +- cmpxchgl %edx, cond_lock(%ebx) +-#endif +- jz 92f +- +-#if cond_lock == 0 +- movl %ebx, %edx +-#else +- leal cond_lock(%ebx), %edx +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_lock_wait +- +-92: +- /* Increment the cond_futex value again, so it can be used as a new +- expected value. */ +- addl $1, cond_futex(%ebx) +- movl cond_futex(%ebx), %ebp +- +- /* Unlock. */ +- LOCK +-#if cond_lock == 0 +- subl $1, (%ebx) +-#else +- subl $1, cond_lock(%ebx) +-#endif +- je 93f +-#if cond_lock == 0 +- movl %ebx, %eax +-#else +- leal cond_lock(%ebx), %eax +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_unlock_wake +- +-93: +- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ +- xorl %ecx, %ecx +- movl dep_mutex(%ebx), %edi +- jmp 90b +-.LcleanupEND2: +- + .size __pthread_cond_wait, .-__pthread_cond_wait + versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, + GLIBC_2_3_2) +@@ -642,10 +566,6 @@ __condvar_w_cleanup: + .long .LcleanupEND-.Lsub_cond_futex + .long __condvar_w_cleanup-.LSTARTCODE + .uleb128 0 +- .long .LcleanupSTART2-.LSTARTCODE +- .long .LcleanupEND2-.LcleanupSTART2 +- .long __condvar_w_cleanup-.LSTARTCODE +- .uleb128 0 + .long .LcallUR-.LSTARTCODE + .long .LENDCODE-.LcallUR + .long 0 +--- nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:04:12.941212837 +0000 ++++ nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:05:05.155229737 +0000 +@@ -23,7 +23,6 @@ + #include + #include + #include +-#include + #include + + #include +@@ -137,14 +136,11 @@ __pthread_cond_wait: + cmpl $PI_BIT, %eax + jne 61f + +-90: + movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi + movl $SYS_futex, %eax + syscall + + movl $1, %r8d +- cmpq $-EAGAIN, %rax +- je 91f + #ifdef __ASSUME_REQUEUE_PI + jmp 62f + #else +@@ -331,70 +327,6 @@ __pthread_cond_wait: + + 13: movq %r10, %rax + jmp 14b +- +-91: +-.LcleanupSTART2: +- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to +- call it again. */ +- movq 8(%rsp), %rdi +- +- /* Get internal lock. */ +- movl $1, %esi +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %esi, (%rdi) +-#else +- cmpxchgl %esi, cond_lock(%rdi) +-#endif +- jz 92f +- +-#if cond_lock != 0 +- addq $cond_lock, %rdi +-#endif +- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi) +- movl $LLL_PRIVATE, %eax +- movl $LLL_SHARED, %esi +- cmovne %eax, %esi +- callq __lll_lock_wait +-#if cond_lock != 0 +- subq $cond_lock, %rdi +-#endif +-92: +- /* Increment the cond_futex value again, so it can be used as a new +- expected value. */ +- incl cond_futex(%rdi) +- movl cond_futex(%rdi), %edx +- +- /* Release internal lock. */ +- LOCK +-#if cond_lock == 0 +- decl (%rdi) +-#else +- decl cond_lock(%rdi) +-#endif +- jz 93f +- +-#if cond_lock != 0 +- addq $cond_lock, %rdi +-#endif +- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi) +- movl $LLL_PRIVATE, %eax +- movl $LLL_SHARED, %esi +- cmovne %eax, %esi +- /* The call preserves %rdx. */ +- callq __lll_unlock_wake +-#if cond_lock != 0 +- subq $cond_lock, %rdi +-#endif +-93: +- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ +- xorq %r10, %r10 +- mov dep_mutex(%rdi), %R8_LP +- leaq cond_futex(%rdi), %rdi +- jmp 90b +-.LcleanupEND2: +- + .size __pthread_cond_wait, .-__pthread_cond_wait + versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, + GLIBC_2_3_2) +@@ -547,15 +479,11 @@ __condvar_cleanup1: + .uleb128 .LcleanupSTART-.LSTARTCODE + .uleb128 .LcleanupEND-.LcleanupSTART + .uleb128 __condvar_cleanup1-.LSTARTCODE +- .uleb128 0 +- .uleb128 .LcleanupSTART2-.LSTARTCODE +- .uleb128 .LcleanupEND2-.LcleanupSTART2 +- .uleb128 __condvar_cleanup1-.LSTARTCODE +- .uleb128 0 ++ .uleb128 0 + .uleb128 .LcallUR-.LSTARTCODE + .uleb128 .LENDCODE-.LcallUR + .uleb128 0 +- .uleb128 0 ++ .uleb128 0 + .Lcstend: + diff --git a/srcpkgs/glibc/patches/glibc-__i686.patch b/srcpkgs/glibc/patches/glibc-__i686.patch deleted file mode 100644 index 91ed1c91d1b..00000000000 --- a/srcpkgs/glibc/patches/glibc-__i686.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naur glibc-old//sysdeps/i386/Makefile glibc//sysdeps/i386/Makefile ---- sysdeps/i386/Makefile.orig 2010-03-18 11:52:30.000000000 +1000 -+++ sysdeps/i386/Makefile 2010-04-16 15:05:50.000000000 +1000 -@@ -1,6 +1,7 @@ - # The mpn functions need a #define for asm syntax flavor. --# Every i386 port in use uses gas syntax (I think). --asm-CPPFLAGS += -DGAS_SYNTAX -+# Every i386 port in use uses gas syntax (I think). Don't replace -+# __i686 in __i686.get_pc_thunk.bx. -+asm-CPPFLAGS += -DGAS_SYNTAX -U __i686 - - # The i386 `long double' is a distinct type we support. - long-double-fcts = yes diff --git a/srcpkgs/glibc/patches/xattr.h-dupdefs.diff b/srcpkgs/glibc/patches/xattr.h-dupdefs.diff deleted file mode 100644 index 821a2cb28fe..00000000000 --- a/srcpkgs/glibc/patches/xattr.h-dupdefs.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- misc/sys/xattr.h.orig 2009-04-24 15:56:12.517504626 +0200 -+++ misc/sys/xattr.h 2009-04-24 15:56:27.825593128 +0200 -@@ -30,9 +30,7 @@ __BEGIN_DECLS - enum - { - XATTR_CREATE = 1, /* set value, fail if attr already exists. */ --#define XATTR_CREATE XATTR_CREATE - XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */ --#define XATTR_REPLACE XATTR_REPLACE - }; - - /* Set the attribute NAME of the file pointed to by PATH to VALUE (which diff --git a/srcpkgs/glibc/template b/srcpkgs/glibc/template index fb5465075a3..4a69a0479e9 100644 --- a/srcpkgs/glibc/template +++ b/srcpkgs/glibc/template @@ -1,7 +1,7 @@ # Template file for 'glibc' pkgname=glibc version=2.16.0 -revision=1 +revision=2 short_desc="The GNU C library" maintainer="Juan RP " homepage="http://www.gnu.org/software/libc" @@ -10,7 +10,7 @@ nostrip_files="ld-$version.so libc-$version.so libpthread-$version.so libthread_ conf_files="/etc/rpc /etc/ld.so.conf /etc/nsswitch.conf" subpackages="glibc-devel glibc-locales nscd" depends="base-files libgcc glibc-locales" -makedepends="bison perl" +makedepends="bison perl kernel-libc-headers>=3.4<3.5" replaces="glibc>=0" softreplace=yes distfiles="http://ftp.gnu.org/gnu/glibc/glibc-${version}.tar.xz"