summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/dlopen/Makefile13
-rw-r--r--test/dlopen/libtest1.c8
-rw-r--r--test/dlopen/libtest2.c15
-rw-r--r--test/dlopen/test3.c13
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;
+}
+