diff options
-rw-r--r-- | test/dlopen/Makefile | 13 | ||||
-rw-r--r-- | test/dlopen/libtest1.c | 8 | ||||
-rw-r--r-- | test/dlopen/libtest2.c | 15 | ||||
-rw-r--r-- | test/dlopen/test3.c | 13 |
4 files changed, 33 insertions, 16 deletions
diff --git a/test/dlopen/Makefile b/test/dlopen/Makefile index 6e22d8bb6..cd8af9095 100644 --- a/test/dlopen/Makefile +++ b/test/dlopen/Makefile @@ -27,6 +27,9 @@ test1: test1.c test2: test2.c $(CC) $(CFLAGS) -o test2 test2.c -ldl +test3: test3.c + $(CC) $(CFLAGS) -o test3 test3.c -ldl ./libtest1.so ./libtest2.so + libtest1.o: libtest1.c $(CC) $(CFLAGS) -fPIC -c libtest1.c -o libtest1.o @@ -39,11 +42,13 @@ 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 +run: libtest2.so libtest1.so test1 test2 test3 @echo "----------running test 1--------------" - -LD_LIBRARY_PATH=`pwd`:. ./test1 + -LD_LIBRARY_PATH=`pwd`:. LD_DEBUG=all ./test1 @echo "----------running test 2--------------" - -LD_LIBRARY_PATH=`pwd`:. ./test2 + -LD_LIBRARY_PATH=`pwd`:. LD_DEBUG=all ./test2 + @echo "----------running test 3--------------" + -LD_LIBRARY_PATH=`pwd`:. LD_DEBUG=all ./test3 clean: - rm -f *.o libtest1.so* libtest2.so* test1 test2 + rm -f *.o libtest1.so* libtest2.so* test1 test2 test3 diff --git a/test/dlopen/libtest1.c b/test/dlopen/libtest1.c index c440d9b4a..f0dc9f537 100644 --- a/test/dlopen/libtest1.c +++ b/test/dlopen/libtest1.c @@ -5,22 +5,22 @@ extern int libtest2_func(const char *s); void __attribute__((constructor)) libtest1_ctor(void) { - printf("I am the libtest1 constructor!\n"); + printf("libtest1: constructor!\n"); } void __attribute__((destructor)) libtest1_dtor(void) { - printf("I am the libtest1 destructor!\n"); + printf("libtest1: destructor!\n"); } void __attribute__((weak)) function1(void) { - printf("libtest1: I am function1 from libtest1!\n"); + printf("libtest1: I am weak function1!\n"); } void function2(void) { - printf("libtest1: I am overriding function2!\n"); + printf("libtest1: I am function2!\n"); } diff --git a/test/dlopen/libtest2.c b/test/dlopen/libtest2.c index 448a5d902..b2eb02e88 100644 --- a/test/dlopen/libtest2.c +++ b/test/dlopen/libtest2.c @@ -6,33 +6,32 @@ extern int __pthread_mutex_init (void); void __attribute__((constructor)) libtest2_ctor(void) { - printf("I am the libtest2 constructor!\n"); + printf("libtest2: constructor!\n"); } void __attribute__((destructor)) libtest2_dtor(void) { - printf("I am the libtest2 destructor!\n"); + printf("libtest2: destructor!\n"); } void function1(void) { - printf("libtest2: I am overriding function1!\n"); + printf("libtest2: I am function1!\n"); } void __attribute__((weak)) function2(void) { - printf("libtest2: I am function2 from libtest2!\n"); + printf("libtest2: I am weak function2!\n"); } int libtest2_func(const char *s) { + printf( "libtest2: function1 = %p\n" + "libtest2: function2 = %p\n", + function1, function2); function1(); function2(); - printf( "libtest2: function1 = %p\n" - "libtest2: function2 = %p\n" - "libtest2: message from main() = '%s'\n", - function1, function2, s); return 0; } diff --git a/test/dlopen/test3.c b/test/dlopen/test3.c new file mode 100644 index 000000000..2f2dfc65c --- /dev/null +++ b/test/dlopen/test3.c @@ -0,0 +1,13 @@ +#include <fcntl.h> +#include <stdlib.h> +#include <stdio.h> +#include <dlfcn.h> + +extern int dltest(const char *s); + +int main(int argc, char **argv) +{ + dltest("hello world!"); + return EXIT_SUCCESS; +} + |