123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # uClibc dlopen tests
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- # rules need a little love to work with glibc ...
- export UCLIBC_ONLY := 1
- TESTS := dltest dltest2 dlstatic test1 test2 test3 dlundef dlafk dladdr \
- testscope nodelete nodelete1 tst-origin
- ifneq ($(HAVE_SHARED),y)
- TESTS_DISABLED := test3
- LDFLAGS_libtest.so := -lpthread
- endif
- CFLAGS_dltest := -DLIBNAME="\"./libtest.so\""
- CFLAGS_dltest2 := -DLIBNAME="\"./libtest3.so\""
- LDFLAGS_dlstatic := -ldl
- LDFLAGS_dltest := -ldl
- LDFLAGS_dltest2 := -ldl
- LDFLAGS_dlundef := -ldl
- LDFLAGS_dlafk := -ldl ./libafk.so -Wl,-rpath,.
- LDFLAGS_test1 := -ldl
- LDFLAGS_test2 := -ldl
- LDFLAGS_test3 := -ldl ./libtest1.so ./libtest2.so -Wl,-rpath,.
- LDFLAGS_dladdr := -ldl
- LDFLAGS_testscope:= -ldl
- LDFLAGS_tst-origin:= -ldl -Wl,-rpath,\$$ORIGIN/testlib
- DEBUG_LIBS := X
- WRAPPER := env $(DEBUG_LIBS)=all LD_LIBRARY_PATH="$$PWD:.:$(LD_LIBRARY_PATH)"
- testlib:
- @mkdir $@
- testlib/libtest31.so: libtest3.so | testlib
- @cp $^ $@
- EXTRA_DIRS := testlib
- # Build libC.so without -mprefergot compilation flag to force a
- # R_SH_JMP_SLOT relocation instead of R_SH_GLOB_DAT for _libC_fini. This is
- # needed to resolve the _libC_fini symbol when used (by libC.so destructor),
- # whereas with GLOB_DAT relocation the resolution happens in the GOT entry
- # when the libC is loaded, for the same reason remove also the "-z now"
- # linker flag.
- # These are needed to spot the issue test case want raise.
- ifeq ($(TARGET_ARCH),sh)
- CFLAGS-OMIT-libC.c = -mprefergot
- endif
- LDFLAGS-OMIT-libC.c = -Wl,-z,now
- dltest: libtest.so
- dltest2: libtest3.so
- dlstatic: libstatic.so
- dlundef: libundef.so
- dlafk: libafk.so
- testscope:libA.so
- libafk.so: libafk-temp.so
- LDFLAGS_libafk.so := ./libafk-temp.so -Wl,-rpath,.
- test1: libtest1.so
- test2: libtest1.so libtest2.so
- test3: libtest1.so libtest2.so
- tst-origin: testlib/libtest31.so
- libtest1.so: libtest2.so
- libB.so: libC.so
- libA.so: libB.so
- LDFLAGS_libtest.so := -lpthread
- LDFLAGS_libtest1.so := ./libtest2.so -Wl,-rpath,.
- LDFLAGS_libtest2.so := -Wl,-rpath,.
- LDFLAGS_libtest3.so := -lpthread -Wl,-rpath,.
- LDFLAGS_libC.so := -ldl
- LDFLAGS_libB.so := ./libC.so -Wl,-rpath,.
- LDFLAGS_libA.so := ./libB.so -Wl,-rpath,.
- nodelete: nodelmod1.so nodelmod2.so nodelmod3.so
- nodelmod3.so: nodelmod4.so
- LDFLAGS_nodelete := -rdynamic -ldl
- LDFLAGS_nodelmod1.so := -Wl,-z,nodelete
- LDFLAGS_nodelmod3.so := ./nodelmod4.so
- LDFLAGS_nodelmod4.so := -Wl,-z,nodelete
- nodelete1: nodelmod1.so nodelmod2.so
- LDFLAGS_nodelete1 := -rdynamic -ldl
|