diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | elf/Makefile | 8 | ||||
-rw-r--r-- | elf/resolvfail.c | 25 | ||||
-rw-r--r-- | linuxthreads/ChangeLog | 5 | ||||
-rw-r--r-- | linuxthreads/Versions | 7 |
5 files changed, 48 insertions, 1 deletions
@@ -1,5 +1,9 @@ 1999-08-01 Ulrich Drepper <drepper@cygnus.com> + * elf/Makefile (tests): Add resolvfail. Add rules to build the + program. + * elf/resolvfail.c: New file. + * elf/dl-sym.c (_dl_sym): Always determine module of the caller to pass it to _dl_lookup_symbol. diff --git a/elf/Makefile b/elf/Makefile index 5cecc2b..cd0f390 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -71,7 +71,7 @@ install-rootsbin += ldconfig endif ifeq (yes,$(build-shared)) -tests = loadtest restest1 preloadtest loadfail multiload origtest +tests = loadtest restest1 preloadtest loadfail multiload origtest resolvfail endif modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ testobj1_1 failobj @@ -237,3 +237,9 @@ $(objpfx)multiload.out: $(objpfx)testobj1.so $(objpfx)origtest: $(libdl) $(objpfx)origtest.out: $(objpfx)testobj1.so + +ifeq ($(have-thread-library),yes) +$(objpfx)resolvfail: $(libdl) $(shared-thread-library) +else +$(objpfx)resolvfail: $(libdl) +endif diff --git a/elf/resolvfail.c b/elf/resolvfail.c new file mode 100644 index 0000000..9dd5cbe --- /dev/null +++ b/elf/resolvfail.c @@ -0,0 +1,25 @@ +#include <dlfcn.h> + +static const char obj[] = "testobj1.so"; + +int +main (void) +{ + void *d = dlopen (obj, RTLD_LAZY); + int n; + + if (d == NULL) + { + printf ("cannot load %s: %s\n", obj, dlerror ()); + return 1; + } + + for (n = 0; n < 10000; ++n) + if (dlsym (d, "does not exist") != NULL) + { + puts ("dlsym() did not fail"); + return 1; + } + + return 0; +} diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 09a2238..50c9e01 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,8 @@ +1999-08-01 Ulrich Drepper <drepper@cygnus.com> + + * Versions [ld.so] (GLIBC_2.0): Export __libc_internal_tsd_get and + __libc_internal_tsd_set. + 1999-07-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manager.c: Remove inclusion of <linux/tasks.h> since it's not diff --git a/linuxthreads/Versions b/linuxthreads/Versions index 66a8f46..5ec3dac 100644 --- a/linuxthreads/Versions +++ b/linuxthreads/Versions @@ -22,6 +22,13 @@ libc { } } +ld.so { + GLIBC_2.0 { + # Internal libc interface to libpthread + __libc_internal_tsd_get; __libc_internal_tsd_set; + } +} + libpthread { GLIBC_2.0 { # Hidden entry point (through macros). |