summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz2018-08-10 16:10:02 -0400
committerEli Schwartz2018-08-10 16:10:02 -0400
commitc127c7b5f7952d6d7bda8e2c0088494ba144d724 (patch)
tree23747d0c21646d584b1c561f95e3d3932ecca5b6
parentd52f61dabf2ec4308c100ca3183926345f7039f6 (diff)
downloadaur-c127c7b5f7952d6d7bda8e2c0088494ba144d724.tar.gz
upgpkg: glibc-git 2.28.r46.g2ce7ba7d15-1
merge upstream changes to core/glibc work around electron apps being badly broken
-rw-r--r--.SRCINFO4
-rw-r--r--0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch189
-rw-r--r--PKGBUILD15
3 files changed, 205 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f68817cf4c3d..6a197e0c8f9a 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = glibc-git
pkgdesc = GNU C Library
- pkgver = 2.28.r24.g92a4cba760
+ pkgver = 2.28.r46.g2ce7ba7d15
pkgrel = 1
url = https://www.gnu.org/software/libc/
install = glibc-git.install
@@ -21,9 +21,11 @@ pkgbase = glibc-git
backup = etc/nscd.conf
source = git+https://sourceware.org/git/glibc.git
source = locale-gen
+ source = 0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch
source = bz20338.patch
sha256sums = SKIP
sha256sums = 05fbb88877cdddc99ef25e48304d6e5ac236660c20925d461cb4e90ebcb3b7de
+ sha256sums = 3b764c4e5658486d1f9e98a36043eb51705c4eebc9abe3f9edc5049dd5dcdc47
sha256sums = 959d4f41edd004bddd9091c4d8c8c3aa07d79a04bfdb89d59f9f26fe5a74d32a
pkgname = glibc-git
diff --git a/0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch b/0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch
new file mode 100644
index 000000000000..251cdf160927
--- /dev/null
+++ b/0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch
@@ -0,0 +1,189 @@
+From ef9302f7608a62980ad850596dc8bfd40346a8e7 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@archlinux.org>
+Date: Wed, 8 Aug 2018 21:02:26 +0000
+Subject: [PATCH] Revert "elf: Correct absolute (SHN_ABS) symbol run-time
+ calculation [BZ #19818]"
+
+This reverts commit e7feec374c635b6a29d65c39ae5e1855528fed39.
+---
+ elf/Makefile | 8 ++------
+ elf/dl-addr.c | 2 --
+ elf/tst-absolute-sym-lib.c | 25 ------------------------
+ elf/tst-absolute-sym-lib.lds | 19 ------------------
+ elf/tst-absolute-sym.c | 38 ------------------------------------
+ sysdeps/generic/ldsodefs.h | 3 +--
+ 6 files changed, 3 insertions(+), 92 deletions(-)
+ delete mode 100644 elf/tst-absolute-sym-lib.c
+ delete mode 100644 elf/tst-absolute-sym-lib.lds
+ delete mode 100644 elf/tst-absolute-sym.c
+
+diff --git a/elf/Makefile b/elf/Makefile
+index cd0771307f..f7484a81ef 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -186,7 +186,7 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \
+ tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
+ tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error tst-noload \
+ tst-latepthread tst-tls-manydynamic tst-nodelete-dlclose \
+- tst-debug1 tst-main1 tst-absolute-sym tst-absolute-zero tst-big-note
++ tst-debug1 tst-main1 tst-absolute-zero tst-big-note
+ # reldep9
+ tests-internal += loadtest unload unload2 circleload1 \
+ neededtest neededtest2 neededtest3 neededtest4 \
+@@ -272,7 +272,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
+ tst-audit12mod1 tst-audit12mod2 tst-audit12mod3 tst-auditmod12 \
+ tst-latepthreadmod $(tst-tls-many-dynamic-modules) \
+ tst-nodelete-dlclose-dso tst-nodelete-dlclose-plugin \
+- tst-main1mod tst-libc_dlvsym-dso tst-absolute-sym-lib \
++ tst-main1mod tst-libc_dlvsym-dso \
+ tst-absolute-zero-lib tst-big-note-lib
+
+ ifeq (yes,$(have-mtls-dialect-gnu2))
+@@ -1465,10 +1465,6 @@ tst-main1-no-pie = yes
+ LDLIBS-tst-main1 = $(libsupport)
+ tst-main1mod.so-no-z-defs = yes
+
+-LDLIBS-tst-absolute-sym-lib.so = tst-absolute-sym-lib.lds
+-$(objpfx)tst-absolute-sym-lib.so: $(LDLIBS-tst-absolute-sym-lib.so)
+-$(objpfx)tst-absolute-sym: $(objpfx)tst-absolute-sym-lib.so
+-
+ LDLIBS-tst-absolute-zero-lib.so = tst-absolute-zero-lib.lds
+ $(objpfx)tst-absolute-zero-lib.so: $(LDLIBS-tst-absolute-zero-lib.so)
+ $(objpfx)tst-absolute-zero: $(objpfx)tst-absolute-zero-lib.so
+diff --git a/elf/dl-addr.c b/elf/dl-addr.c
+index e6c7d02094..2250617a73 100644
+--- a/elf/dl-addr.c
++++ b/elf/dl-addr.c
+@@ -59,7 +59,6 @@ determine_info (const ElfW(Addr) addr, struct link_map *match, Dl_info *info,
+ we can omit that test here. */
+ if ((symtab[symndx].st_shndx != SHN_UNDEF
+ || symtab[symndx].st_value != 0)
+- && symtab[symndx].st_shndx != SHN_ABS
+ && ELFW(ST_TYPE) (symtab[symndx].st_info) != STT_TLS
+ && DL_ADDR_SYM_MATCH (match, &symtab[symndx],
+ matchsym, addr)
+@@ -92,7 +91,6 @@ determine_info (const ElfW(Addr) addr, struct link_map *match, Dl_info *info,
+ && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS
+ && (symtab->st_shndx != SHN_UNDEF
+ || symtab->st_value != 0)
+- && symtab->st_shndx != SHN_ABS
+ && DL_ADDR_SYM_MATCH (match, symtab, matchsym, addr)
+ && symtab->st_name < strtabsize)
+ matchsym = (ElfW(Sym) *) symtab;
+diff --git a/elf/tst-absolute-sym-lib.c b/elf/tst-absolute-sym-lib.c
+deleted file mode 100644
+index 912cb0048a..0000000000
+--- a/elf/tst-absolute-sym-lib.c
++++ /dev/null
+@@ -1,25 +0,0 @@
+-/* BZ #19818 absolute symbol calculation shared module.
+- Copyright (C) 2018 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, see
+- <http://www.gnu.org/licenses/>. */
+-
+-extern char absolute;
+-
+-void *
+-get_absolute (void)
+-{
+- return &absolute;
+-}
+diff --git a/elf/tst-absolute-sym-lib.lds b/elf/tst-absolute-sym-lib.lds
+deleted file mode 100644
+index d4a4128514..0000000000
+--- a/elf/tst-absolute-sym-lib.lds
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* BZ #19818 absolute symbol calculation linker script.
+- Copyright (C) 2018 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, see
+- <http://www.gnu.org/licenses/>. */
+-
+-"absolute" = 0x55aa;
+diff --git a/elf/tst-absolute-sym.c b/elf/tst-absolute-sym.c
+deleted file mode 100644
+index 111491d159..0000000000
+--- a/elf/tst-absolute-sym.c
++++ /dev/null
+@@ -1,38 +0,0 @@
+-/* BZ #19818 absolute symbol calculation main executable.
+- Copyright (C) 2018 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, see
+- <http://www.gnu.org/licenses/>. */
+-
+-#include <support/check.h>
+-#include <support/support.h>
+-#include <support/test-driver.h>
+-
+-void *get_absolute (void);
+-
+-static int
+-do_test (void)
+-{
+- void *ref = (void *) 0x55aa;
+- void *ptr;
+-
+- ptr = get_absolute ();
+- if (ptr != ref)
+- FAIL_EXIT1 ("Got %p, expected %p\n", ptr, ref);
+-
+- return 0;
+-}
+-
+-#include <support/test-driver.c>
+diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
+index 95dc87519b..3cac4fa362 100644
+--- a/sysdeps/generic/ldsodefs.h
++++ b/sysdeps/generic/ldsodefs.h
+@@ -72,8 +72,7 @@ typedef struct link_map *lookup_t;
+ if non-NULL. Don't check for NULL map if MAP_SET is TRUE. */
+ #define SYMBOL_ADDRESS(map, ref, map_set) \
+ ((ref) == NULL ? 0 \
+- : (__glibc_unlikely ((ref)->st_shndx == SHN_ABS) ? 0 \
+- : LOOKUP_VALUE_ADDRESS (map, map_set)) + (ref)->st_value)
++ : LOOKUP_VALUE_ADDRESS (map, map_set) + (ref)->st_value)
+
+ /* On some architectures a pointer to a function is not just a pointer
+ to the actual code of the function but rather an architecture
+--
+2.18.0
+
diff --git a/PKGBUILD b/PKGBUILD
index 46599e752128..1c83a8dde2d9 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -4,7 +4,7 @@
# All my PKGBUILDs are managed at https://github.com/eli-schwartz/pkgbuilds
pkgname=glibc-git
-pkgver=2.28.r24.g92a4cba760
+pkgver=2.28.r46.g2ce7ba7d15
pkgrel=1
pkgdesc='GNU C Library'
arch=('i686' 'x86_64')
@@ -22,9 +22,11 @@ options=('staticlibs')
install='glibc-git.install'
source=('git+https://sourceware.org/git/glibc.git'
'locale-gen'
+ '0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch'
'bz20338.patch')
sha256sums=('SKIP'
'05fbb88877cdddc99ef25e48304d6e5ac236660c20925d461cb4e90ebcb3b7de'
+ '3b764c4e5658486d1f9e98a36043eb51705c4eebc9abe3f9edc5049dd5dcdc47'
'959d4f41edd004bddd9091c4d8c8c3aa07d79a04bfdb89d59f9f26fe5a74d32a')
pkgver() {
@@ -38,7 +40,12 @@ prepare() {
cd glibc
# https://sourceware.org/bugzilla/show_bug.cgi?id=20338
- patch -p1 < ../bz20338.patch
+ patch -p1 -i ../bz20338.patch
+ # revert commit breaking proprietary electron apps for now; this is lld's fault
+ # but it's too serious a regression to break software in the wild until users
+ # have a solution. See https://bugs.archlinux.org/task/59550 and
+ # https://github.com/electron/electron/issues/13972#issuecomment-411532741
+ patch -p1 -i ../0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch
}
build() {
@@ -66,6 +73,7 @@ build() {
--with-bugurl=https://bugs.archlinux.org/ \
--enable-add-ons \
--enable-bind-now \
+ --enable-cet \
--enable-lock-elision \
--enable-multi-arch \
--enable-stack-protector=strong \
@@ -110,6 +118,9 @@ package() {
# We generate these in the post-install with ldconfig -r .
rm "$pkgdir"/etc/ld.so.cache
+ # Shipped in tzdata
+ rm -f "$pkgdir"/usr/bin/{tzselect,zdump,zic}
+
# handle selectively stripping unless debug packages are requested
if check_option 'debug' n; then
options+=('!strip')