diff --git a/glibc/trunk/PKGBUILD b/glibc/trunk/PKGBUILD
index ee22dbf..26d7bf8 100644
--- a/glibc/trunk/PKGBUILD
+++ b/glibc/trunk/PKGBUILD
@@ -22,13 +22,17 @@ options=('!strip' 'staticlibs')
install=glibc.install
source=(git://sourceware.org/git/glibc.git#commit=${_commit}
locale.gen.txt
- locale-gen)
+ locale-gen
+ wink.patch)
md5sums=('SKIP'
'07ac979b6ab5eeb778d55f041529d623'
- '476e9113489f93b348b21e144b6a8fcf')
+ '476e9113489f93b348b21e144b6a8fcf'
+ 'fc3e1c5c43c44e290aa4085eb81cfe0c')
prepare() {
mkdir glibc-build
+ cd glibc
+ patch -Np1 <../wink.patch
}
build() {
diff --git a/glibc/trunk/wink.patch b/glibc/trunk/wink.patch
new file mode 100644
index 0000000..7761553
--- /dev/null
+++ b/glibc/trunk/wink.patch
@@ -0,0 +1,150 @@
+diff --git a/elf/Makefile b/elf/Makefile
+index 593403c..509ecba 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -149,7 +149,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
+ tst-nodelete) \
+ tst-initorder tst-initorder2 tst-relsort1 tst-null-argv \
+ tst-ptrguard1 tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
+- tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error
++ tst-nodelete2 tst-audit11 tst-audit12
+ # reldep9
+ ifeq ($(build-hardcoded-path-in-tests),yes)
+ tests += tst-dlopen-aout
+@@ -1266,4 +1266,3 @@ $(objpfx)tst-ldconfig-X.out : tst-ldconfig-X.sh $(objpfx)ldconfig
+ $(SHELL) $< '$(common-objpfx)' '$(test-wrapper)' '$(test-wrapper-env)' > $@; \
+ $(evaluate-test)
+
+-$(objpfx)tst-dlsym-error: $(libdl)
+diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
+index 52c994e..0573265 100644
+--- a/elf/dl-lookup.c
++++ b/elf/dl-lookup.c
+@@ -862,6 +862,7 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
+ if (__glibc_unlikely (current_value.s == NULL))
+ {
+ if ((*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK)
++ && skip_map == NULL
+ && !(GLRO(dl_debug_mask) & DL_DEBUG_UNUSED))
+ {
+ /* We could find no value for a strong reference. */
+diff --git a/elf/tst-dlsym-error.c b/elf/tst-dlsym-error.c
+deleted file mode 100644
+index fb084c5..0000000
+--- a/elf/tst-dlsym-error.c
++++ /dev/null
+@@ -1,114 +0,0 @@
+-/* Test error reporting for dlsym, dlvsym failures.
+- Copyright (C) 2016 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
+- . */
+-
+-#include
+-#include
+-#include
+-#include
+-#include
+-
+-/* Used to disambiguate symbol names. */
+-static int counter;
+-
+-static void
+-test_one (void *handle, const char *name, void *(func) (void *, const char *),
+- const char *suffix)
+-{
+- ++counter;
+- char symbol[32];
+- snprintf (symbol, sizeof (symbol), "no_such_symbol_%d", counter);
+- char *expected_message;
+- if (asprintf (&expected_message, ": undefined symbol: %s%s",
+- symbol, suffix) < 0)
+- {
+- printf ("error: asprintf: %m\n");
+- abort ();
+- }
+-
+- void *addr = func (handle, symbol);
+- if (addr != NULL)
+- {
+- printf ("error: %s: found symbol \"no_such_symbol\"\n", name);
+- abort ();
+- }
+- const char *message = dlerror ();
+- if (message == NULL)
+- {
+- printf ("error: %s: missing error message\n", name);
+- abort ();
+- }
+- const char *message_without_path = strchrnul (message, ':');
+- if (strcmp (message_without_path, expected_message) != 0)
+- {
+- printf ("error: %s: unexpected error message: %s\n", name, message);
+- abort ();
+- }
+- free (expected_message);
+-
+- message = dlerror ();
+- if (message != NULL)
+- {
+- printf ("error: %s: unexpected error message: %s\n", name, message);
+- abort ();
+- }
+-}
+-
+-static void
+-test_handles (const char *name, void *(func) (void *, const char *),
+- const char *suffix)
+-{
+- test_one (RTLD_DEFAULT, name, func, suffix);
+- test_one (RTLD_NEXT, name, func, suffix);
+-
+- void *handle = dlopen (LIBC_SO, RTLD_LAZY);
+- if (handle == NULL)
+- {
+- printf ("error: cannot dlopen %s: %s\n", LIBC_SO, dlerror ());
+- abort ();
+- }
+- test_one (handle, name, func, suffix);
+- dlclose (handle);
+-}
+-
+-static void *
+-dlvsym_no_such_version (void *handle, const char *name)
+-{
+- return dlvsym (handle, name, "NO_SUCH_VERSION");
+-}
+-
+-static void *
+-dlvsym_glibc_private (void *handle, const char *name)
+-{
+- return dlvsym (handle, name, "GLIBC_PRIVATE");
+-}
+-
+-static int
+-do_test (void)
+-{
+- test_handles ("dlsym", dlsym, "");
+- test_handles ("dlvsym", dlvsym_no_such_version,
+- ", version NO_SUCH_VERSION");
+- test_handles ("dlvsym", dlvsym_glibc_private,
+- ", version GLIBC_PRIVATE");
+-
+- return 0;
+-}
+-
+-
+-#define TEST_FUNCTION do_test ()
+-#include "../test-skeleton.c"