diff --git a/lib32-glibc/PKGBUILD b/lib32-glibc/PKGBUILD index 15b3562..76ddfef 100644 --- a/lib32-glibc/PKGBUILD +++ b/lib32-glibc/PKGBUILD @@ -1,34 +1,25 @@ -# maintainer: Manuel Tortosa - # toolchain build order: # lib32-glibc > binutils-multilib > gcc-multilib > binutils-multilib > lib32-glibc _pkgbasename=glibc pkgname=lib32-$_pkgbasename -pkgver=2.22 +pkgver=2.24 pkgrel=1 pkgdesc="GNU C Library (32-bit)" arch=('x86_64') url="http://www.gnu.org/software/libc" license=('GPL' 'LGPL') -#depends=($_pkgbasename=$pkgver) -makedepends=('gcc-multilib>=4.9') -source=(http://ftp.gnu.org/gnu/libc/${_pkgbasename}-${pkgver}.tar.xz{,.sig} - dtv_surplus.patch - lib32-glibc.conf -) -md5sums=('e51e02bf552a0a1fbbdc948fb2f5e83c' - 'SKIP' - '6469cba12e2252e16e32db0353ed3f21' +depends=($_pkgbasename=$pkgver) +makedepends=('gcc>=5.2' 'git' 'lib32-gcc-libs') +options=('!strip' 'staticlibs') +source=(git://sourceware.org/git/glibc.git#commit=fdfc9260 + lib32-glibc.conf) +md5sums=('SKIP' '6e052f1cb693d5d3203f50f9d4e8c33b') validpgpkeys=('F37CDAB708E65EA183FD1AF625EF0A436C2A4AFF') # Carlos O'Donell prepare() { - cd ${srcdir}/glibc-${pkgver} - - # http://chakraos.org/bugtracker/index.php?do=details&task_id=1060&project=8 - patch -p1 -i $srcdir/dtv_surplus.patch - + cd ${srcdir}/glibc mkdir ${srcdir}/glibc-build } @@ -43,24 +34,21 @@ build() { export CC="gcc -m32" export CXX="g++ -m32" - # remove hardening options for building libraries CFLAGS=${CFLAGS/-fstack-protector-strong/} CPPFLAGS=${CPPFLAGS/-D_FORTIFY_SOURCE=2/} - ${srcdir}/${_pkgbasename}-${pkgver}/configure --prefix=/usr \ + ${srcdir}/glibc/configure --prefix=/usr \ --libdir=/usr/lib32 --libexecdir=/usr/lib32 \ --with-headers=/usr/include \ - --with-bugurl=https://chakraos.org/bugtracker \ + --with-bugurl=https://chakralinux.org/bugtracker \ --enable-add-ons \ - --enable-obsolete-rpc \ --enable-kernel=2.6.32 \ --enable-bind-now --disable-profile \ --enable-stackguard-randomization \ --enable-multi-arch \ --disable-werror \ --enable-multi-arch i686-unknown-linux-gnu -# --enable-lock-elision \ # build libraries with hardening disabled echo "build-programs=no" >> configparms @@ -71,18 +59,14 @@ build() { echo "CC += -fstack-protector-strong -D_FORTIFY_SOURCE=2" >> configparms echo "CXX += -fstack-protector-strong -D_FORTIFY_SOURCE=2" >> configparms make - - # remove harding in preparation to run test-suite - sed -i '5,7d' configparms - } check() { - # the linker commands need to be reordered - fixed in 2.19 - LDFLAGS=${LDFLAGS/--as-needed,/} - cd ${srcdir}/glibc-build + # remove harding in preparation to run test-suite + sed -i '/FORTIFY/d' configparms + # tst-cleanupx4 failure on i686 is "expected" make check || true } diff --git a/lib32-glibc/glibc-2.13-dlclose-search-reset.patch b/lib32-glibc/glibc-2.13-dlclose-search-reset.patch deleted file mode 100644 index 3ad8b41..0000000 --- a/lib32-glibc/glibc-2.13-dlclose-search-reset.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 2f811bf88bed4a6c0dec8778847ba441736d509d Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Wed, 26 May 2010 18:28:59 +0200 -Subject: [PATCH] Fix scope handling during dl_close - ---- - ChangeLog | 12 ++++++++++++ - elf/Makefile | 10 +++++++++- - elf/dl-close.c | 7 +++++++ - elf/unload8.c | 33 +++++++++++++++++++++++++++++++++ - elf/unload8mod1.c | 7 +++++++ - elf/unload8mod1x.c | 1 + - elf/unload8mod2.c | 7 +++++++ - elf/unload8mod3.c | 27 +++++++++++++++++++++++++++ - 8 files changed, 103 insertions(+), 1 deletions(-) - create mode 100644 elf/unload8.c - create mode 100644 elf/unload8mod1.c - create mode 100644 elf/unload8mod1x.c - create mode 100644 elf/unload8mod2.c - create mode 100644 elf/unload8mod3.c - -diff --git a/elf/Makefile b/elf/Makefile -index 59e835f..65b6deb 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -89,6 +89,7 @@ distribute := rtld-Rules \ - unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \ - unload6mod1.c unload6mod2.c unload6mod3.c \ - unload7mod1.c unload7mod2.c \ -+ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \ - tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \ - tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \ - tst-auditmod4a.c tst-auditmod4b.c \ -@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ -- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \ -+ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ - tst-audit1 tst-audit2 \ - tst-stackguard1 tst-addr1 tst-thrlock \ - tst-unique1 tst-unique2 -@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - unload4mod1 unload4mod2 unload4mod3 unload4mod4 \ - unload6mod1 unload6mod2 unload6mod3 \ - unload7mod1 unload7mod2 \ -+ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ - tst-unique2mod1 tst-unique2mod2 -@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl) - $(objpfx)unload6mod3.so: $(libdl) - $(objpfx)unload7mod1.so: $(libdl) - $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so -+$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so -+$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so -+$(objpfx)unload8mod3.so: $(libdl) - $(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so - $(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so - $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so -@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl) - $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so - unload7-ENV = MALLOC_PERTURB_=85 - -+$(objpfx)unload8: $(libdl) -+$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so -+ - ifdef libdl - $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a - $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so -diff --git a/elf/dl-close.c b/elf/dl-close.c -index 700e765..f47d5f8 100644 ---- a/elf/dl-close.c -+++ b/elf/dl-close.c -@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map) - - imap->l_scope_max = new_size; - } -+ else if (new_list != NULL) -+ { -+ /* We didn't change the scope array, so reset the search -+ list. */ -+ imap->l_searchlist.r_list = NULL; -+ imap->l_searchlist.r_nlist = 0; -+ } - - /* The loader is gone, so mark the object as not having one. - Note: l_idx != IDX_STILL_USED -> object will be removed. */ -diff --git a/elf/unload8.c b/elf/unload8.c -new file mode 100644 -index 0000000..f984a38 ---- /dev/null -+++ b/elf/unload8.c -@@ -0,0 +1,33 @@ -+#include -+#include -+ -+int -+main (void) -+{ -+ void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY); -+ if (h == NULL) -+ { -+ puts ("dlopen unload8mod1.so failed"); -+ return 1; -+ } -+ -+ void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY); -+ if (h2 == NULL) -+ { -+ puts ("dlopen unload8mod1x.so failed"); -+ return 1; -+ } -+ dlclose (h2); -+ -+ int (*mod1) (void) = dlsym (h, "mod1"); -+ if (mod1 == NULL) -+ { -+ puts ("dlsym failed"); -+ return 1; -+ } -+ -+ mod1 (); -+ dlclose (h); -+ -+ return 0; -+} -diff --git a/elf/unload8mod1.c b/elf/unload8mod1.c -new file mode 100644 -index 0000000..fe7e81c ---- /dev/null -+++ b/elf/unload8mod1.c -@@ -0,0 +1,7 @@ -+extern void mod2 (void); -+ -+void -+mod1 (void) -+{ -+ mod2 (); -+} -diff --git a/elf/unload8mod1x.c b/elf/unload8mod1x.c -new file mode 100644 -index 0000000..835b634 ---- /dev/null -+++ b/elf/unload8mod1x.c -@@ -0,0 +1 @@ -+int mod1x; -diff --git a/elf/unload8mod2.c b/elf/unload8mod2.c -new file mode 100644 -index 0000000..2fd8b67 ---- /dev/null -+++ b/elf/unload8mod2.c -@@ -0,0 +1,7 @@ -+extern void mod3 (void); -+ -+void -+mod2 (void) -+{ -+ mod3 (); -+} -diff --git a/elf/unload8mod3.c b/elf/unload8mod3.c -new file mode 100644 -index 0000000..d49e22b ---- /dev/null -+++ b/elf/unload8mod3.c -@@ -0,0 +1,27 @@ -+#include -+#include -+#include -+ -+void -+mod3_fini2 (void) -+{ -+} -+ -+void -+mod3_fini (void) -+{ -+ mod3_fini2 (); -+} -+ -+void -+mod3 (void) -+{ -+ void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY); -+ if (h == NULL) -+ { -+ puts ("dlopen unload8mod2.so failed"); -+ exit (1); -+ } -+ -+ atexit (mod3_fini); -+} --- -1.7.3.4 - diff --git a/lib32-glibc/glibc-2.13-futex.patch b/lib32-glibc/glibc-2.13-futex.patch deleted file mode 100644 index 9b9c3ac..0000000 --- a/lib32-glibc/glibc-2.13-futex.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -+++ a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -@@ -210,7 +210,7 @@ pthread_rwlock_timedrdlock: - cfi_restore(%r12) - retq - --#ifdef __ASSUME_PRIVATE_FUTEX -+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME - cfi_adjust_cfa_offset(16) - cfi_rel_offset(%r12, 8) - cfi_rel_offset(%r13, 0) ---- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -+++ a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -@@ -192,7 +192,7 @@ pthread_rwlock_timedwrlock: - - 7: movq %rdx, %rax - --#ifndef __ASSUME_PRIVATE_FUTEX -+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME - addq $16, %rsp - cfi_adjust_cfa_offset(-16) - popq %r14 -@@ -207,7 +207,7 @@ pthread_rwlock_timedwrlock: - cfi_restore(%r12) - retq - --#ifdef __ASSUME_PRIVATE_FUTEX -+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME - cfi_adjust_cfa_offset(16) - cfi_rel_offset(%r12, 8) - cfi_rel_offset(%r13, 0) diff --git a/lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch b/lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch deleted file mode 100644 index ef91116..0000000 --- a/lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 032c0ee3ee28841d684950e33a77210118697566 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Thu, 1 Sep 2011 10:46:14 +0200 -Subject: [PATCH] Avoid assertion failure when first DNS answer was empty - ---- - ChangeLog | 4 ++++ - resolv/res_query.c | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -diff --git a/resolv/res_query.c b/resolv/res_query.c -index 2f7cfaa..2ded9fb 100644 ---- a/resolv/res_query.c -+++ b/resolv/res_query.c -@@ -248,7 +248,7 @@ __libc_res_nquery(res_state statp, - && *resplen2 > (int) sizeof (HEADER)) - { - /* Special case of partial answer. */ -- assert (hp != hp2); -+ assert (n == 0 || hp != hp2); - hp = hp2; - } - else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) --- -1.7.3.4 - diff --git a/lib32-glibc/glibc-2.20-do_ftell_wide-memleak.patch b/lib32-glibc/glibc-2.20-do_ftell_wide-memleak.patch deleted file mode 100644 index 0896a64..0000000 --- a/lib32-glibc/glibc-2.20-do_ftell_wide-memleak.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/libio/wfileops.c b/libio/wfileops.c -index f123add..ebc06e8 100644 ---- a/libio/wfileops.c -+++ b/libio/wfileops.c -@@ -711,6 +711,7 @@ do_ftell_wide (_IO_FILE *fp) - return WEOF; - - offset += outstop - out; -+ free (out); - } - - /* We don't trust _IO_read_end to represent the current file offset diff --git a/lib32-glibc/glibc-2.20-getifaddrs_internal-segfault.patch b/lib32-glibc/glibc-2.20-getifaddrs_internal-segfault.patch deleted file mode 100644 index 57c84f8..0000000 --- a/lib32-glibc/glibc-2.20-getifaddrs_internal-segfault.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c -index 2c04e17..a47b2ed 100644 ---- a/sysdeps/unix/sysv/linux/ifaddrs.c -+++ b/sysdeps/unix/sysv/linux/ifaddrs.c -@@ -770,20 +770,17 @@ getifaddrs_internal (struct ifaddrs **ifap) - - if (cp != NULL) - { -- char c; - unsigned int preflen; - -- if ((max_prefixlen > 0) && -- (ifam->ifa_prefixlen > max_prefixlen)) -+ if (ifam->ifa_prefixlen > max_prefixlen) - preflen = max_prefixlen; - else - preflen = ifam->ifa_prefixlen; - -- for (i = 0; i < ((preflen - 1) / 8); i++) -+ for (i = 0; i < preflen / 8; i++) - *cp++ = 0xff; -- c = 0xff; -- c <<= ((128 - preflen) % 8); -- *cp = c; -+ if (preflen % 8) -+ *cp = 0xff << (8 - preflen % 8); - } - } - } diff --git a/lib32-glibc/glibc-2.20-linux-3.16-additions.patch b/lib32-glibc/glibc-2.20-linux-3.16-additions.patch deleted file mode 100644 index be57a38..0000000 --- a/lib32-glibc/glibc-2.20-linux-3.16-additions.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/sysdeps/gnu/netinet/udp.h b/sysdeps/gnu/netinet/udp.h -index 32159cd..8cc1c60 100644 ---- a/sysdeps/gnu/netinet/udp.h -+++ b/sysdeps/gnu/netinet/udp.h -@@ -78,6 +78,10 @@ struct udphdr - #define UDP_CORK 1 /* Never send partially complete segments. */ - #define UDP_ENCAP 100 /* Set the socket to accept - encapsulated packets. */ -+#define UDP_NO_CHECK6_TX 101 /* Disable sending checksum for UDP -+ over IPv6. */ -+#define UDP_NO_CHECK6_RX 102 /* Disable accepting checksum for UDP -+ over IPv6. */ - - /* UDP encapsulation types */ - #define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */ diff --git a/lib32-glibc/lib32-glibc.conf b/lib32-glibc/lib32-glibc.conf new file mode 100644 index 0000000..9b08c3f --- /dev/null +++ b/lib32-glibc/lib32-glibc.conf @@ -0,0 +1 @@ +/usr/lib32