perf build: Fix build feature-dwarf_getlocations fail for old libdw
For libdw versions below 0.177, need to link libdl.a in addition to
libbebl.a during static compilation, otherwise
feature-dwarf_getlocations compilation will fail.
Before:
$ make LDFLAGS=-static
BUILD: Doing 'make -j20' parallel build
<SNIP>
Makefile.config:483: Old libdw.h, finding variables at given 'perf probe' point will not work, install elfutils-devel/libdw-dev >= 0.157
<SNIP>
$ cat ../build/feature/test-dwarf_getlocations.make.output
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libebl.a(eblclosebackend.o): in function `ebl_closebackend':
(.text+0x20): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
After:
$ make LDFLAGS=-static
<SNIP>
Auto-detecting system features:
... dwarf: [ on ]
<SNIP>
$ ./perf probe
Usage: perf probe [<options>] 'PROBEDEF' ['PROBEDEF' ...]
or: perf probe [<options>] --add 'PROBEDEF' [--add 'PROBEDEF' ...]
or: perf probe [<options>] --del '[GROUP:]EVENT' ...
or: perf probe --list [GROUP:]EVENT ...
<SNIP>
Fixes: 536661da6e
("perf: build: Only link libebl.a for old libdw")
Reviewed-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Yang Jihong <yangjihong@bytedance.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240919013513.118527-3-yangjihong@bytedance.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
43f6564f18
commit
a530337ba9
@ -181,6 +181,9 @@ ifeq ($(findstring -static,${LDFLAGS}),-static)
|
|||||||
ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)
|
ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)
|
||||||
DWARFLIBS += -lebl
|
DWARFLIBS += -lebl
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Must put -ldl after -lebl for dependency
|
||||||
|
DWARFLIBS += -ldl
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(OUTPUT)test-dwarf.bin:
|
$(OUTPUT)test-dwarf.bin:
|
||||||
|
@ -147,7 +147,7 @@ ifdef LIBDW_DIR
|
|||||||
endif
|
endif
|
||||||
DWARFLIBS := -ldw
|
DWARFLIBS := -ldw
|
||||||
ifeq ($(findstring -static,${LDFLAGS}),-static)
|
ifeq ($(findstring -static,${LDFLAGS}),-static)
|
||||||
DWARFLIBS += -lelf -ldl -lz -llzma -lbz2 -lzstd
|
DWARFLIBS += -lelf -lz -llzma -lbz2 -lzstd
|
||||||
|
|
||||||
LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw).0.0
|
LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw).0.0
|
||||||
LIBDW_VERSION_1 := $(word 1, $(subst ., ,$(LIBDW_VERSION)))
|
LIBDW_VERSION_1 := $(word 1, $(subst ., ,$(LIBDW_VERSION)))
|
||||||
@ -158,6 +158,9 @@ ifeq ($(findstring -static,${LDFLAGS}),-static)
|
|||||||
ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)
|
ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)
|
||||||
DWARFLIBS += -lebl
|
DWARFLIBS += -lebl
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Must put -ldl after -lebl for dependency
|
||||||
|
DWARFLIBS += -ldl
|
||||||
endif
|
endif
|
||||||
FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS)
|
FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS)
|
||||||
FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) $(DWARFLIBS)
|
FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) $(DWARFLIBS)
|
||||||
|
Loading…
Reference in New Issue
Block a user