# uClibc-ng dlopen tests # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. 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