From fec8e9db57394a77a9f757aab4c342baa098a1aa Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Mon, 1 Sep 2003 23:43:42 +0000 Subject: move the ldso tests to dlopen where they belong --- test/Makefile | 4 ++-- test/dlopen/.cvsignore | 5 +++++ test/dlopen/Makefile | 26 +++++++++++++++++++++++--- test/dlopen/dltest.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ test/dlopen/libtest.c | 16 ++++++++++++++++ test/ldso/.cvsignore | 4 ---- test/ldso/Makefile | 44 -------------------------------------------- test/ldso/dltest.c | 45 --------------------------------------------- test/ldso/libtest.c | 16 ---------------- 9 files changed, 91 insertions(+), 114 deletions(-) create mode 100644 test/dlopen/dltest.c create mode 100644 test/dlopen/libtest.c delete mode 100644 test/ldso/.cvsignore delete mode 100644 test/ldso/Makefile delete mode 100644 test/ldso/dltest.c delete mode 100644 test/ldso/libtest.c (limited to 'test') diff --git a/test/Makefile b/test/Makefile index 1c7af473f..2a0f3c0a2 100644 --- a/test/Makefile +++ b/test/Makefile @@ -22,7 +22,7 @@ TOPDIR=../ .EXPORT_ALL_VARIABLES: -ALL_SUBDIRS = args assert ctype ldso pwd_grp signal silly stdlib string unistd crypt #misc +ALL_SUBDIRS = args assert ctype dlopen pwd_grp signal silly stdlib string unistd crypt #misc DIRS = $(ALL_SUBDIRS) #ifeq ($(TARGET_ARCH), $(HOST_ARCH)) # DIRS = $(ALL_SUBDIRS) @@ -31,7 +31,7 @@ DIRS = $(ALL_SUBDIRS) #endif ifeq ($(strip $(HAVE_SHARED)),true) ifeq ($(strip $(DODYNAMIC)),true) - DIRS += ldso + DIRS += dlopen endif endif ifeq ($(strip $(INCLUDE_THREADS)),true) diff --git a/test/dlopen/.cvsignore b/test/dlopen/.cvsignore index 373baecfa..406a0ac40 100644 --- a/test/dlopen/.cvsignore +++ b/test/dlopen/.cvsignore @@ -6,3 +6,8 @@ dlttest2 test1 test2 test3 +dltest +dltest2 +libtest.so +libtest3.so +.gdbinit diff --git a/test/dlopen/Makefile b/test/dlopen/Makefile index cd8af9095..8ac46503e 100644 --- a/test/dlopen/Makefile +++ b/test/dlopen/Makefile @@ -1,6 +1,6 @@ # Makefile for uClibc # -# Copyright (C) 2000,2001 Erik Andersen +# Copyright (C) 2000-2003 Erik Andersen # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU Library General Public License as published by the Free @@ -15,6 +15,7 @@ # You should have received a copy of the GNU Library General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Makefile for uClibc TESTDIR=../ include $(TESTDIR)/Rules.mak @@ -42,13 +43,32 @@ libtest1.so: libtest1.o libtest2.so: libtest2.o $(CC) $(CFLAGS) -fPIC -shared -o libtest2.so -Wl,-soname,libtest2.so libtest2.o -run: libtest2.so libtest1.so test1 test2 test3 +dltest: dltest.c + $(CC) $(CFLAGS) -DLIBNAME="\"./libtest.so\"" dltest.c -ldl -lpthread -o dltest + +libtest.so: libtest.c + $(CC) $(CFLAGS) -fPIC -shared -Wl,-soname,libtest.so libtest.c -o libtest.so + +# Second time, directly link libtest3.so with libpthread +dltest2: dltest.c + $(CC) $(CFLAGS) -DLIBNAME="\"./libtest3.so\"" dltest.c -ldl -lpthread -o dltest2 + +libtest3.so: libtest.c + $(CC) $(CFLAGS) -fPIC -shared -Wl,-soname,libtest3.so libtest.c -o libtest3.so -lpthread + +run: libtest2.so libtest1.so test1 test2 test3 dltest libtest.so dltest2 libtest3.so @echo "----------running test 1--------------" -LD_LIBRARY_PATH=`pwd`:. LD_DEBUG=all ./test1 @echo "----------running test 2--------------" -LD_LIBRARY_PATH=`pwd`:. LD_DEBUG=all ./test2 @echo "----------running test 3--------------" -LD_LIBRARY_PATH=`pwd`:. LD_DEBUG=all ./test3 + @echo "----------running test 3--------------" + -LD_DEBUG=all ./dltest2 + @echo "----------running test 4--------------" + -LD_DEBUG=all ./dltest clean: - rm -f *.o libtest1.so* libtest2.so* test1 test2 test3 + rm -f *.o libtest1.so* libtest2.so* test1 test2 test3 \ + dltest dltest2 libtest.so libtest3.so + diff --git a/test/dlopen/dltest.c b/test/dlopen/dltest.c new file mode 100644 index 000000000..244f3b76b --- /dev/null +++ b/test/dlopen/dltest.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +#ifdef __UCLIBC__ +extern void _dlinfo(void); +#endif + +int main(int argc, char **argv) +{ + int ret = EXIT_SUCCESS; + void *handle; + void (*mydltest)(void *value1, void *value2); + char *error; + uint32_t *value1, *value2; + + handle = dlopen (LIBNAME, RTLD_LAZY); + if (!handle) { + fprintf(stderr, "Could not open ./libtest.so: %s\n", dlerror()); + exit(1); + } + + mydltest = dlsym(handle, "dltest"); + if ((error = dlerror()) != NULL) { + fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); + exit(1); + } + + mydltest(&value1, &value2); + printf("dltest: __pthread_return_0=%p\n", value1); + printf("dltest: pthread_self=%p\n", value2); + if (value1 == value2) { + ret = EXIT_FAILURE; + printf("dltest: values should NOT be equal Weak values resolved incorrectly!\n"); + } else { + printf("dltest: weak symbols resoved correctly.\n"); + } + + dlclose(handle); + + return ret; +} + diff --git a/test/dlopen/libtest.c b/test/dlopen/libtest.c new file mode 100644 index 000000000..cdb37403d --- /dev/null +++ b/test/dlopen/libtest.c @@ -0,0 +1,16 @@ +#include +#include +#include + +extern int __pthread_return_0(void); + +void dltest(uint32_t **value1, uint32_t **value2) +{ + *value1 = (uint32_t *) __pthread_return_0; + *value2 = (uint32_t *) pthread_self; +#if 0 + printf("dltest: __pthread_return_0=%p\n", __pthread_return_0); + printf("dltest: pthread_self=%p\n", pthread_self); +#endif +} + diff --git a/test/ldso/.cvsignore b/test/ldso/.cvsignore deleted file mode 100644 index 7232c47f9..000000000 --- a/test/ldso/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -dltest -dltest2 -libtest.so -libtest2.so diff --git a/test/ldso/Makefile b/test/ldso/Makefile deleted file mode 100644 index bfd8444c7..000000000 --- a/test/ldso/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# Makefile for uClibc -# -# Copyright (C) 2000-2003 Erik Andersen -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU Library General Public License as published by the Free -# Software Foundation; either version 2 of the License, or (at your option) any -# later version. -# -# This program 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 Library General Public License for more -# details. -# -# You should have received a copy of the GNU Library General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -TESTDIR=../ -include $(TESTDIR)/Rules.mak - -all: run - - -dltest: dltest.c - $(CC) $(CFLAGS) -DLIBNAME="\"./libtest.so\"" dltest.c -ldl -lpthread -o dltest - -libtest.so: libtest.c - $(CC) $(CFLAGS) -fPIC -shared -Wl,-soname,libtest.so libtest.c -o libtest.so - -# Second time, directly link libtest2.so with libpthread -dltest2: dltest.c - $(CC) $(CFLAGS) -DLIBNAME="\"./libtest2.so\"" dltest.c -ldl -lpthread -o dltest2 - -libtest2.so: libtest.c - $(CC) $(CFLAGS) -fPIC -shared -Wl,-soname,libtest2.so libtest.c -o libtest2.so -lpthread - -run: dltest libtest.so dltest2 libtest2.so - ./dltest2 - ./dltest - -clean: - rm -f *.o dltest dltest2 libtest.so libtest2.so - diff --git a/test/ldso/dltest.c b/test/ldso/dltest.c deleted file mode 100644 index 244f3b76b..000000000 --- a/test/ldso/dltest.c +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include -#include - -#ifdef __UCLIBC__ -extern void _dlinfo(void); -#endif - -int main(int argc, char **argv) -{ - int ret = EXIT_SUCCESS; - void *handle; - void (*mydltest)(void *value1, void *value2); - char *error; - uint32_t *value1, *value2; - - handle = dlopen (LIBNAME, RTLD_LAZY); - if (!handle) { - fprintf(stderr, "Could not open ./libtest.so: %s\n", dlerror()); - exit(1); - } - - mydltest = dlsym(handle, "dltest"); - if ((error = dlerror()) != NULL) { - fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); - exit(1); - } - - mydltest(&value1, &value2); - printf("dltest: __pthread_return_0=%p\n", value1); - printf("dltest: pthread_self=%p\n", value2); - if (value1 == value2) { - ret = EXIT_FAILURE; - printf("dltest: values should NOT be equal Weak values resolved incorrectly!\n"); - } else { - printf("dltest: weak symbols resoved correctly.\n"); - } - - dlclose(handle); - - return ret; -} - diff --git a/test/ldso/libtest.c b/test/ldso/libtest.c deleted file mode 100644 index cdb37403d..000000000 --- a/test/ldso/libtest.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include -#include - -extern int __pthread_return_0(void); - -void dltest(uint32_t **value1, uint32_t **value2) -{ - *value1 = (uint32_t *) __pthread_return_0; - *value2 = (uint32_t *) pthread_self; -#if 0 - printf("dltest: __pthread_return_0=%p\n", __pthread_return_0); - printf("dltest: pthread_self=%p\n", pthread_self); -#endif -} - -- cgit v1.2.3