[uClibc-cvs] uClibc/test/dlopen dltest.c, NONE, 1.1 libtest.c, NONE, 1.1 .cvsignore, 1.1, 1.2 Makefile, 1.2, 1.3
Erik Andersen
andersen at uclibc.org
Mon Sep 1 23:43:30 UTC 2003
- Previous message: [uClibc-cvs] uClibc/test/ldso .cvsignore, 1.4, NONE Makefile, 1.12, NONE dltest.c, 1.2, NONE libtest.c, 1.1, NONE
- Next message: [uClibc-cvs] uClibc/test Makefile,1.26,1.27
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/cvs/uClibc/test/dlopen
In directory winder:/tmp/cvs-serv17231/dlopen
Modified Files:
.cvsignore Makefile
Added Files:
dltest.c libtest.c
Log Message:
move the ldso tests to dlopen where they belong
Index: .cvsignore
===================================================================
RCS file: /var/cvs/uClibc/test/dlopen/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- .cvsignore 19 Aug 2003 14:25:45 -0000 1.1
+++ .cvsignore 1 Sep 2003 23:43:27 -0000 1.2
@@ -6,3 +6,8 @@
test1
test2
test3
+dltest
+dltest2
+libtest.so
+libtest3.so
+.gdbinit
Index: Makefile
===================================================================
RCS file: /var/cvs/uClibc/test/dlopen/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Makefile 19 Aug 2003 14:24:14 -0000 1.2
+++ Makefile 1 Sep 2003 23:43:27 -0000 1.3
@@ -1,6 +1,6 @@
# Makefile for uClibc
#
-# Copyright (C) 2000,2001 Erik Andersen <andersen at uclibc.org>
+# Copyright (C) 2000-2003 Erik Andersen <andersen at uclibc.org>
#
# 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 @@
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
+
--- NEW FILE: libtest.c ---
#include <stdio.h>
#include <pthread.h>
#include <stdint.h>
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
}
--- NEW FILE: dltest.c ---
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
#include <stdint.h>
#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;
}
- Previous message: [uClibc-cvs] uClibc/test/ldso .cvsignore, 1.4, NONE Makefile, 1.12, NONE dltest.c, 1.2, NONE libtest.c, 1.1, NONE
- Next message: [uClibc-cvs] uClibc/test Makefile,1.26,1.27
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the uClibc-cvs
mailing list