mirror of
https://gitdl.cn/https://github.com/chakralinux/lib32.git
synced 2025-02-15 23:40:27 +08:00
lib32-glibc: edit, build failed
This commit is contained in:
parent
0899983cbf
commit
3cd0af936d
@ -1,34 +1,25 @@
|
||||
# maintainer: Manuel Tortosa <manutortoasa@chakra-project.org>
|
||||
|
||||
# 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
|
||||
}
|
||||
|
@ -1,196 +0,0 @@
|
||||
From 2f811bf88bed4a6c0dec8778847ba441736d509d Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schwab <schwab@redhat.com>
|
||||
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 <dlfcn.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+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 <dlfcn.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+
|
||||
+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
|
||||
|
@ -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)
|
@ -1,26 +0,0 @@
|
||||
From 032c0ee3ee28841d684950e33a77210118697566 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schwab <schwab@redhat.com>
|
||||
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
|
||||
|
@ -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
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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 */
|
1
lib32-glibc/lib32-glibc.conf
Normal file
1
lib32-glibc/lib32-glibc.conf
Normal file
@ -0,0 +1 @@
|
||||
/usr/lib32
|
Loading…
Reference in New Issue
Block a user