From 5c3513f68921cc15231af7ae6806c1f61c517c7c Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 29 Mar 2019 17:20:16 +1100 Subject: Link tools and tests against libfdt shared library Currently the libfdt based tools (fdtput, fdtget, etc.) and all the test binaries using libfdt are linked against the static version of libfdt. That's made it very easy in the past to forget to properly update the version.lds file which is needed to make functions publicaly accessible from the shared library. To avoid problems like that in future, alter the build so that we link and run the tests against the shared library version of libfdt. That immediately points out several important symbols that are still missing from the version.lds, so fix those as well. Signed-off-by: David Gibson --- Makefile | 9 +++++---- libfdt/.gitignore | 1 + libfdt/Makefile.libfdt | 2 ++ libfdt/version.lds | 3 +++ tests/Makefile.tests | 6 +++--- tests/run_tests.sh | 3 +++ 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 libfdt/.gitignore diff --git a/Makefile b/Makefile index ff2b4d1..95c2662 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,7 @@ endif # LIBFDT_dir = libfdt LIBFDT_archive = $(LIBFDT_dir)/libfdt.a -LIBFDT_lib = $(LIBFDT_dir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) +LIBFDT_lib = $(LIBFDT_dir)/$(LIBFDT_LIB) LIBFDT_include = $(addprefix $(LIBFDT_dir)/,$(LIBFDT_INCLUDES)) LIBFDT_version = $(addprefix $(LIBFDT_dir)/,$(LIBFDT_VERSION)) @@ -199,6 +199,7 @@ $(LIBFDT_lib): $(addprefix $(LIBFDT_dir)/,$(LIBFDT_OBJS)) $(LIBFDT_version) @$(VECHO) LD $@ $(CC) $(LDFLAGS) $(SHAREDLIB_LDFLAGS)$(LIBFDT_soname) -o $(LIBFDT_lib) \ $(addprefix $(LIBFDT_dir)/,$(LIBFDT_OBJS)) + ln -s $(LIBFDT_LIB) $(LIBFDT_dir)/$(LIBFDT_soname) ifneq ($(DEPTARGETS),) -include $(LIBFDT_OBJS:%.o=$(LIBFDT_dir)/%.d) @@ -250,11 +251,11 @@ convert-dtsv0: $(CONVERT_OBJS) fdtdump: $(FDTDUMP_OBJS) -fdtget: $(FDTGET_OBJS) $(LIBFDT_archive) +fdtget: $(FDTGET_OBJS) $(LIBFDT_lib) -fdtput: $(FDTPUT_OBJS) $(LIBFDT_archive) +fdtput: $(FDTPUT_OBJS) $(LIBFDT_lib) -fdtoverlay: $(FDTOVERLAY_OBJS) $(LIBFDT_archive) +fdtoverlay: $(FDTOVERLAY_OBJS) $(LIBFDT_lib) dist: git archive --format=tar --prefix=dtc-$(dtc_version)/ HEAD \ diff --git a/libfdt/.gitignore b/libfdt/.gitignore new file mode 100644 index 0000000..fed4603 --- /dev/null +++ b/libfdt/.gitignore @@ -0,0 +1 @@ +libfdt.so.1 diff --git a/libfdt/Makefile.libfdt b/libfdt/Makefile.libfdt index 3af3656..193da8c 100644 --- a/libfdt/Makefile.libfdt +++ b/libfdt/Makefile.libfdt @@ -9,7 +9,9 @@ LIBFDT_VERSION = version.lds LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c fdt_empty_tree.c \ fdt_addresses.c fdt_overlay.c LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o) +LIBFDT_LIB = libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) libfdt_clean: @$(VECHO) CLEAN "(libfdt)" rm -f $(STD_CLEANFILES:%=$(LIBFDT_dir)/%) + rm -f $(LIBFDT_dir)/$(LIBFDT_soname) diff --git a/libfdt/version.lds b/libfdt/version.lds index fbee212..9a92652 100644 --- a/libfdt/version.lds +++ b/libfdt/version.lds @@ -71,6 +71,9 @@ LIBFDT_1.2 { fdt_check_full; fdt_setprop_placeholder; fdt_property_placeholder; + fdt_header_size_; + fdt_appendprop_addrrange; + fdt_setprop_inplace_namelen_partial; local: *; }; diff --git a/tests/Makefile.tests b/tests/Makefile.tests index b77f121..1f8feed 100644 --- a/tests/Makefile.tests +++ b/tests/Makefile.tests @@ -58,17 +58,17 @@ TESTS_CLEANDIRS = $(TESTS_CLEANDIRS_L:%=$(TESTS_PREFIX)%) .PHONY: tests tests: $(TESTS) $(TESTS_TREES) -$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive) +$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_lib) # Not necessary on all platforms; allow -ldl to be excluded instead of forcing # other platforms to patch it out. LIBDL = -ldl -$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive) +$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_lib) @$(VECHO) LD [libdl] $@ $(LINK.c) -o $@ $^ $(LIBDL) $(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o \ - util.o $(LIBFDT_archive) + util.o $(LIBFDT_lib) $(TESTS_PREFIX)dumptrees: $(TESTS_PREFIX)trees.o diff --git a/tests/run_tests.sh b/tests/run_tests.sh index e951959..489a3d2 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -18,6 +18,9 @@ if [ -z "$STATSZ" ]; then fi fi +# Help things find the libfdt shared object +export LD_LIBRARY_PATH=../libfdt + export QUIET_TEST=1 STOP_ON_FAIL=0 -- cgit v1.2.1