Skip to content

Commit

Permalink
perf build: Add build-test for libunwind cross-platforms support
Browse files Browse the repository at this point in the history
Currently only test for local libunwind. We should check all supported
platforms so we can use them to parse perf.data with callchain info on
different machines.

Signed-off-by: He Kuang <hekuang@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1462866037-30382-4-git-send-email-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
He Kuang authored and acmel committed May 11, 2016
1 parent 83302e7 commit b1d9600
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 0 deletions.
4 changes: 4 additions & 0 deletions tools/build/Makefile.feature
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ FEATURE_TESTS_BASIC := \
libslang \
libcrypto \
libunwind \
libunwind-x86 \
libunwind-x86_64 \
libunwind-arm \
libunwind-aarch64 \
pthread-attr-setaffinity-np \
stackprotector-all \
timerfd \
Expand Down
16 changes: 16 additions & 0 deletions tools/build/feature/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ FILES= \
test-libcrypto.bin \
test-libunwind.bin \
test-libunwind-debug-frame.bin \
test-libunwind-x86.bin \
test-libunwind-x86_64.bin \
test-libunwind-arm.bin \
test-libunwind-aarch64.bin \
test-pthread-attr-setaffinity-np.bin \
test-stackprotector-all.bin \
test-timerfd.bin \
Expand Down Expand Up @@ -103,6 +107,18 @@ $(OUTPUT)test-libunwind.bin:

$(OUTPUT)test-libunwind-debug-frame.bin:
$(BUILD) -lelf
$(OUTPUT)test-libunwind-x86.bin:
$(BUILD) -lelf -lunwind-x86

$(OUTPUT)test-libunwind-x86_64.bin:
$(BUILD) -lelf -lunwind-x86_64

$(OUTPUT)test-libunwind-arm.bin:
$(BUILD) -lelf -lunwind-arm

$(OUTPUT)test-libunwind-aarch64.bin:
$(BUILD) -lelf -lunwind-aarch64


$(OUTPUT)test-libaudit.bin:
$(BUILD) -laudit
Expand Down
26 changes: 26 additions & 0 deletions tools/build/feature/test-libunwind-aarch64.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include <libunwind-aarch64.h>
#include <stdlib.h>

extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
unw_word_t ip,
unw_dyn_info_t *di,
unw_proc_info_t *pi,
int need_unwind_info, void *arg);

#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)

static unw_accessors_t accessors;

int main(void)
{
unw_addr_space_t addr_space;

addr_space = unw_create_addr_space(&accessors, 0);
if (addr_space)
return 0;

unw_init_remote(NULL, addr_space, NULL);
dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);

return 0;
}
27 changes: 27 additions & 0 deletions tools/build/feature/test-libunwind-arm.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include <libunwind-arm.h>
#include <stdlib.h>

extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
unw_word_t ip,
unw_dyn_info_t *di,
unw_proc_info_t *pi,
int need_unwind_info, void *arg);


#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)

static unw_accessors_t accessors;

int main(void)
{
unw_addr_space_t addr_space;

addr_space = unw_create_addr_space(&accessors, 0);
if (addr_space)
return 0;

unw_init_remote(NULL, addr_space, NULL);
dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);

return 0;
}
27 changes: 27 additions & 0 deletions tools/build/feature/test-libunwind-x86.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include <libunwind-x86.h>
#include <stdlib.h>

extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
unw_word_t ip,
unw_dyn_info_t *di,
unw_proc_info_t *pi,
int need_unwind_info, void *arg);


#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)

static unw_accessors_t accessors;

int main(void)
{
unw_addr_space_t addr_space;

addr_space = unw_create_addr_space(&accessors, 0);
if (addr_space)
return 0;

unw_init_remote(NULL, addr_space, NULL);
dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);

return 0;
}
27 changes: 27 additions & 0 deletions tools/build/feature/test-libunwind-x86_64.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include <libunwind-x86_64.h>
#include <stdlib.h>

extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
unw_word_t ip,
unw_dyn_info_t *di,
unw_proc_info_t *pi,
int need_unwind_info, void *arg);


#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)

static unw_accessors_t accessors;

int main(void)
{
unw_addr_space_t addr_space;

addr_space = unw_create_addr_space(&accessors, 0);
if (addr_space)
return 0;

unw_init_remote(NULL, addr_space, NULL);
dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);

return 0;
}

0 comments on commit b1d9600

Please sign in to comment.