diff options
Diffstat (limited to 'tools/perf/config')
-rw-r--r-- | tools/perf/config/Makefile | 14 | ||||
-rw-r--r-- | tools/perf/config/feature-checks/Makefile | 1 | ||||
-rw-r--r-- | tools/perf/config/feature-checks/test-all.c | 4 | ||||
-rw-r--r-- | tools/perf/config/feature-checks/test-libunwind-debug-frame.c | 16 |
4 files changed, 32 insertions, 3 deletions
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile index 58b2d37ae23..f5905f2b197 100644 --- a/tools/perf/config/Makefile +++ b/tools/perf/config/Makefile @@ -31,6 +31,10 @@ ifeq ($(ARCH),x86_64) endif NO_PERF_REGS := 0 endif +ifeq ($(ARCH),arm) + NO_PERF_REGS := 0 + LIBUNWIND_LIBS = -lunwind -lunwind-arm +endif ifeq ($(NO_PERF_REGS),0) CFLAGS += -DHAVE_PERF_REGS_SUPPORT @@ -305,8 +309,7 @@ ifndef NO_LIBELF endif # NO_DWARF endif # NO_LIBELF -# There's only x86 (both 32 and 64) support for CFI unwind so far -ifneq ($(ARCH),x86) +ifeq ($(LIBUNWIND_LIBS),) NO_LIBUNWIND := 1 endif @@ -322,8 +325,13 @@ ifndef NO_LIBUNWIND endif ifneq ($(feature-libunwind), 1) - msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99); + msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 1.1); NO_LIBUNWIND := 1 + else + ifneq ($(feature-libunwind-debug-frame), 1) + msg := $(warning No debug_frame support found in libunwind); + CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME + endif endif endif diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile index c803f17fb98..e8e195f49a4 100644 --- a/tools/perf/config/feature-checks/Makefile +++ b/tools/perf/config/feature-checks/Makefile @@ -23,6 +23,7 @@ FILES= \ test-libpython-version \ test-libslang \ test-libunwind \ + test-libunwind-debug-frame \ test-on-exit \ test-stackprotector-all \ test-stackprotector \ diff --git a/tools/perf/config/feature-checks/test-all.c b/tools/perf/config/feature-checks/test-all.c index 59e7a705e14..799865b6077 100644 --- a/tools/perf/config/feature-checks/test-all.c +++ b/tools/perf/config/feature-checks/test-all.c @@ -49,6 +49,10 @@ # include "test-libunwind.c" #undef main +#define main main_test_libunwind_debug_frame +# include "test-libunwind-debug-frame.c" +#undef main + #define main main_test_libaudit # include "test-libaudit.c" #undef main diff --git a/tools/perf/config/feature-checks/test-libunwind-debug-frame.c b/tools/perf/config/feature-checks/test-libunwind-debug-frame.c new file mode 100644 index 00000000000..0ef8087a104 --- /dev/null +++ b/tools/perf/config/feature-checks/test-libunwind-debug-frame.c @@ -0,0 +1,16 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int +UNW_OBJ(dwarf_find_debug_frame) (int found, unw_dyn_info_t *di_debug, + unw_word_t ip, unw_word_t segbase, + const char *obj_name, unw_word_t start, + unw_word_t end); + +#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) + +int main(void) +{ + dwarf_find_debug_frame(0, NULL, 0, 0, NULL, 0, 0); + return 0; +} |