-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
perf tests: Add dwarf unwind test on ARM
Adding dwarf unwind test, that setups live machine data over the perf test thread and does the remote unwind. Need to use -fno-optimize-sibling-calls for test compilation, otherwise 'krava_*' function calls are optimized into jumps and omitted from the stack unwind. So far it was enabled only for x86. Signed-off-by: Jean Pihet <jean.pihet@linaro.org> Reviewed-by: Will Deacon <will.deacon@arm.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1400229672-16104-3-git-send-email-jean.pihet@linaro.org Signed-off-by: Jiri Olsa <jolsa@kernel.org>
- Loading branch information
Jean Pihet
authored and
Jiri Olsa
committed
May 16, 2014
1 parent
3418f96
commit 90fa9de
Showing
7 changed files
with
69 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
#include <string.h> | ||
#include "perf_regs.h" | ||
#include "thread.h" | ||
#include "map.h" | ||
#include "event.h" | ||
#include "tests/tests.h" | ||
|
||
#define STACK_SIZE 8192 | ||
|
||
static int sample_ustack(struct perf_sample *sample, | ||
struct thread *thread, u64 *regs) | ||
{ | ||
struct stack_dump *stack = &sample->user_stack; | ||
struct map *map; | ||
unsigned long sp; | ||
u64 stack_size, *buf; | ||
|
||
buf = malloc(STACK_SIZE); | ||
if (!buf) { | ||
pr_debug("failed to allocate sample uregs data\n"); | ||
return -1; | ||
} | ||
|
||
sp = (unsigned long) regs[PERF_REG_ARM_SP]; | ||
|
||
map = map_groups__find(thread->mg, MAP__VARIABLE, (u64) sp); | ||
if (!map) { | ||
pr_debug("failed to get stack map\n"); | ||
free(buf); | ||
return -1; | ||
} | ||
|
||
stack_size = map->end - sp; | ||
stack_size = stack_size > STACK_SIZE ? STACK_SIZE : stack_size; | ||
|
||
memcpy(buf, (void *) sp, stack_size); | ||
stack->data = (char *) buf; | ||
stack->size = stack_size; | ||
return 0; | ||
} | ||
|
||
int test__arch_unwind_sample(struct perf_sample *sample, | ||
struct thread *thread) | ||
{ | ||
struct regs_dump *regs = &sample->user_regs; | ||
u64 *buf; | ||
|
||
buf = calloc(1, sizeof(u64) * PERF_REGS_MAX); | ||
if (!buf) { | ||
pr_debug("failed to allocate sample uregs data\n"); | ||
return -1; | ||
} | ||
|
||
perf_regs_load(buf); | ||
regs->abi = PERF_SAMPLE_REGS_ABI; | ||
regs->regs = buf; | ||
regs->mask = PERF_REGS_MASK; | ||
|
||
return sample_ustack(sample, thread, buf); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters