|
|
@@ -159,7 +159,8 @@ CORE_FEATURE_TESTS = \
|
|
|
libunwind \
|
|
|
on-exit \
|
|
|
stackprotector-all \
|
|
|
- timerfd
|
|
|
+ timerfd \
|
|
|
+ libdw-dwarf-unwind
|
|
|
|
|
|
LIB_FEATURE_TESTS = \
|
|
|
dwarf \
|
|
|
@@ -172,7 +173,8 @@ LIB_FEATURE_TESTS = \
|
|
|
libperl \
|
|
|
libpython \
|
|
|
libslang \
|
|
|
- libunwind
|
|
|
+ libunwind \
|
|
|
+ libdw-dwarf-unwind
|
|
|
|
|
|
VF_FEATURE_TESTS = \
|
|
|
backtrace \
|
|
|
@@ -280,6 +282,12 @@ else
|
|
|
msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static);
|
|
|
endif
|
|
|
else
|
|
|
+ ifndef NO_LIBDW_DWARF_UNWIND
|
|
|
+ ifneq ($(feature-libdw-dwarf-unwind),1)
|
|
|
+ NO_LIBDW_DWARF_UNWIND := 1
|
|
|
+ msg := $(warning No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR);
|
|
|
+ endif
|
|
|
+ endif
|
|
|
ifneq ($(feature-dwarf), 1)
|
|
|
msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
|
|
|
NO_DWARF := 1
|
|
|
@@ -315,25 +323,51 @@ endif # NO_LIBELF
|
|
|
|
|
|
ifndef NO_LIBUNWIND
|
|
|
ifneq ($(feature-libunwind), 1)
|
|
|
- msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR);
|
|
|
+ msg := $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR);
|
|
|
NO_LIBUNWIND := 1
|
|
|
+ endif
|
|
|
+endif
|
|
|
+
|
|
|
+dwarf-post-unwind := 1
|
|
|
+dwarf-post-unwind-text := BUG
|
|
|
+
|
|
|
+# setup DWARF post unwinder
|
|
|
+ifdef NO_LIBUNWIND
|
|
|
+ ifdef NO_LIBDW_DWARF_UNWIND
|
|
|
+ msg := $(warning Disabling post unwind, no support found.);
|
|
|
+ dwarf-post-unwind := 0
|
|
|
else
|
|
|
- ifeq ($(ARCH),arm)
|
|
|
- $(call feature_check,libunwind-debug-frame)
|
|
|
- ifneq ($(feature-libunwind-debug-frame), 1)
|
|
|
- msg := $(warning No debug_frame support found in libunwind);
|
|
|
- CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
|
|
|
- endif
|
|
|
- else
|
|
|
- # non-ARM has no dwarf_find_debug_frame() function:
|
|
|
+ dwarf-post-unwind-text := libdw
|
|
|
+ endif
|
|
|
+else
|
|
|
+ dwarf-post-unwind-text := libunwind
|
|
|
+ # Enable libunwind support by default.
|
|
|
+ ifndef NO_LIBDW_DWARF_UNWIND
|
|
|
+ NO_LIBDW_DWARF_UNWIND := 1
|
|
|
+ endif
|
|
|
+endif
|
|
|
+
|
|
|
+ifeq ($(dwarf-post-unwind),1)
|
|
|
+ CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT
|
|
|
+else
|
|
|
+ NO_DWARF_UNWIND := 1
|
|
|
+endif
|
|
|
+
|
|
|
+ifndef NO_LIBUNWIND
|
|
|
+ ifeq ($(ARCH),arm)
|
|
|
+ $(call feature_check,libunwind-debug-frame)
|
|
|
+ ifneq ($(feature-libunwind-debug-frame), 1)
|
|
|
+ msg := $(warning No debug_frame support found in libunwind);
|
|
|
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
|
|
|
endif
|
|
|
-
|
|
|
- CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT -DHAVE_LIBUNWIND_SUPPORT
|
|
|
- EXTLIBS += $(LIBUNWIND_LIBS)
|
|
|
- CFLAGS += $(LIBUNWIND_CFLAGS)
|
|
|
- LDFLAGS += $(LIBUNWIND_LDFLAGS)
|
|
|
- endif # ifneq ($(feature-libunwind), 1)
|
|
|
+ else
|
|
|
+ # non-ARM has no dwarf_find_debug_frame() function:
|
|
|
+ CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
|
|
|
+ endif
|
|
|
+ CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
|
|
|
+ EXTLIBS += $(LIBUNWIND_LIBS)
|
|
|
+ CFLAGS += $(LIBUNWIND_CFLAGS)
|
|
|
+ LDFLAGS += $(LIBUNWIND_LDFLAGS)
|
|
|
endif
|
|
|
|
|
|
ifndef NO_LIBAUDIT
|
|
|
@@ -620,6 +654,10 @@ endef
|
|
|
PERF_FEATURES := $(foreach feat,$(LIB_FEATURE_TESTS),feature-$(feat)($(feature-$(feat))))
|
|
|
PERF_FEATURES_FILE := $(shell touch $(OUTPUT)PERF-FEATURES; cat $(OUTPUT)PERF-FEATURES)
|
|
|
|
|
|
+ifeq ($(dwarf-post-unwind),1)
|
|
|
+ PERF_FEATURES += dwarf-post-unwind($(dwarf-post-unwind-text))
|
|
|
+endif
|
|
|
+
|
|
|
# The $(display_lib) controls the default detection message
|
|
|
# output. It's set if:
|
|
|
# - detected features differes from stored features from
|
|
|
@@ -650,6 +688,10 @@ ifeq ($(display_lib),1)
|
|
|
$(info )
|
|
|
$(info Auto-detecting system features:)
|
|
|
$(foreach feat,$(LIB_FEATURE_TESTS),$(call feature_print_status,$(feat),))
|
|
|
+
|
|
|
+ ifeq ($(dwarf-post-unwind),1)
|
|
|
+ $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
|
|
|
+ endif
|
|
|
endif
|
|
|
|
|
|
ifeq ($(display_vf),1)
|
|
|
@@ -659,6 +701,8 @@ ifeq ($(display_vf),1)
|
|
|
$(call feature_print_var,bindir)
|
|
|
$(call feature_print_var,libdir)
|
|
|
$(call feature_print_var,sysconfdir)
|
|
|
+ $(call feature_print_var,LIBUNWIND_DIR)
|
|
|
+ $(call feature_print_var,LIBDW_DIR)
|
|
|
endif
|
|
|
|
|
|
ifeq ($(display_lib),1)
|