* [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 [not found] ` <9B701F46-6AEA-48D8-9103-71D35C83776D@cisco.com> @ 2018-03-09 3:10 ` Kim Phillips 2018-03-09 15:06 ` Arnaldo Carvalho de Melo 2018-03-20 6:20 ` [tip:perf/core] " tip-bot for Kim Phillips 0 siblings, 2 replies; 13+ messages in thread From: Kim Phillips @ 2018-03-09 3:10 UTC (permalink / raw) To: Christian Hansen (chansen3), Arnaldo Carvalho de Melo Cc: linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel Based on prior work: https://lkml.org/lkml/2014/5/6/395 and how other arches add libdw unwind support. Includes support for running the unwind test, e.g., on a system with only elfutils' libdw 0.170, the test now runs, and successfully: $ ./perf test unwind 56: Test dwarf unwind : Ok Reported-by: Christian Hansen <chansen3@cisco.com> Originally-by: Jean Pihet <jean.pihet@linaro.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: linux-kernel@vger.kernel.org Cc: linux-perf-users@vger.kernel.org Signed-off-by: Kim Phillips <kim.phillips@arm.com> --- tools/perf/Makefile.config | 2 +- tools/perf/arch/arm64/include/arch-tests.h | 12 ++++++ tools/perf/arch/arm64/tests/Build | 3 ++ tools/perf/arch/arm64/tests/arch-tests.c | 16 ++++++++ tools/perf/arch/arm64/util/Build | 1 + tools/perf/arch/arm64/util/unwind-libdw.c | 60 ++++++++++++++++++++++++++++++ 6 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 tools/perf/arch/arm64/include/arch-tests.h create mode 100644 tools/perf/arch/arm64/tests/arch-tests.c create mode 100644 tools/perf/arch/arm64/util/unwind-libdw.c diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index 89cb2a36b8ff..98ff73648b51 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -75,7 +75,7 @@ endif # Disable it on all other architectures in case libdw unwind # support is detected in system. Add supported architectures # to the check. -ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm powerpc s390)) +ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm arm64 powerpc s390)) NO_LIBDW_DWARF_UNWIND := 1 endif diff --git a/tools/perf/arch/arm64/include/arch-tests.h b/tools/perf/arch/arm64/include/arch-tests.h new file mode 100644 index 000000000000..90ec4c8cb880 --- /dev/null +++ b/tools/perf/arch/arm64/include/arch-tests.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef ARCH_TESTS_H +#define ARCH_TESTS_H + +#ifdef HAVE_DWARF_UNWIND_SUPPORT +struct thread; +struct perf_sample; +#endif + +extern struct test arch_tests[]; + +#endif diff --git a/tools/perf/arch/arm64/tests/Build b/tools/perf/arch/arm64/tests/Build index b30eff9bcc83..ca5630e73474 100644 --- a/tools/perf/arch/arm64/tests/Build +++ b/tools/perf/arch/arm64/tests/Build @@ -1,2 +1,5 @@ libperf-y += regs_load.o libperf-y += dwarf-unwind.o + +libperf-y += arch-tests.o + diff --git a/tools/perf/arch/arm64/tests/arch-tests.c b/tools/perf/arch/arm64/tests/arch-tests.c new file mode 100644 index 000000000000..5b1543c98022 --- /dev/null +++ b/tools/perf/arch/arm64/tests/arch-tests.c @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <string.h> +#include "tests/tests.h" +#include "arch-tests.h" + +struct test arch_tests[] = { +#ifdef HAVE_DWARF_UNWIND_SUPPORT + { + .desc = "DWARF unwind", + .func = test__dwarf_unwind, + }, +#endif + { + .func = NULL, + }, +}; diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build index c0b8dfef98ba..68f8a8eb3ad0 100644 --- a/tools/perf/arch/arm64/util/Build +++ b/tools/perf/arch/arm64/util/Build @@ -2,6 +2,7 @@ libperf-y += header.o libperf-y += sym-handling.o libperf-$(CONFIG_DWARF) += dwarf-regs.o libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o +libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o libperf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \ ../../arm/util/auxtrace.o \ diff --git a/tools/perf/arch/arm64/util/unwind-libdw.c b/tools/perf/arch/arm64/util/unwind-libdw.c new file mode 100644 index 000000000000..7623d85e77f3 --- /dev/null +++ b/tools/perf/arch/arm64/util/unwind-libdw.c @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <elfutils/libdwfl.h> +#include "../../util/unwind-libdw.h" +#include "../../util/perf_regs.h" +#include "../../util/event.h" + +bool libdw__arch_set_initial_registers(Dwfl_Thread *thread, void *arg) +{ + struct unwind_info *ui = arg; + struct regs_dump *user_regs = &ui->sample->user_regs; + Dwarf_Word dwarf_regs[PERF_REG_ARM64_MAX], dwarf_pc; + +#define REG(r) ({ \ + Dwarf_Word val = 0; \ + perf_reg_value(&val, user_regs, PERF_REG_ARM64_##r); \ + val; \ +}) + + dwarf_regs[0] = REG(X0); + dwarf_regs[1] = REG(X1); + dwarf_regs[2] = REG(X2); + dwarf_regs[3] = REG(X3); + dwarf_regs[4] = REG(X4); + dwarf_regs[5] = REG(X5); + dwarf_regs[6] = REG(X6); + dwarf_regs[7] = REG(X7); + dwarf_regs[8] = REG(X8); + dwarf_regs[9] = REG(X9); + dwarf_regs[10] = REG(X10); + dwarf_regs[11] = REG(X11); + dwarf_regs[12] = REG(X12); + dwarf_regs[13] = REG(X13); + dwarf_regs[14] = REG(X14); + dwarf_regs[15] = REG(X15); + dwarf_regs[16] = REG(X16); + dwarf_regs[17] = REG(X17); + dwarf_regs[18] = REG(X18); + dwarf_regs[19] = REG(X19); + dwarf_regs[20] = REG(X20); + dwarf_regs[21] = REG(X21); + dwarf_regs[22] = REG(X22); + dwarf_regs[23] = REG(X23); + dwarf_regs[24] = REG(X24); + dwarf_regs[25] = REG(X25); + dwarf_regs[26] = REG(X26); + dwarf_regs[27] = REG(X27); + dwarf_regs[28] = REG(X28); + dwarf_regs[29] = REG(X29); + dwarf_regs[30] = REG(LR); + dwarf_regs[31] = REG(SP); + + if (!dwfl_thread_state_registers(thread, 0, PERF_REG_ARM64_MAX, + dwarf_regs)) + return false; + + dwarf_pc = REG(PC); + dwfl_thread_state_register_pc(thread, dwarf_pc); + + return true; +} -- 2.16.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 3:10 ` [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 Kim Phillips @ 2018-03-09 15:06 ` Arnaldo Carvalho de Melo 2018-03-09 18:07 ` Kim Phillips 2018-03-20 6:20 ` [tip:perf/core] " tip-bot for Kim Phillips 1 sibling, 1 reply; 13+ messages in thread From: Arnaldo Carvalho de Melo @ 2018-03-09 15:06 UTC (permalink / raw) To: Kim Phillips, Jean Pihet Cc: Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel Em Thu, Mar 08, 2018 at 09:10:30PM -0600, Kim Phillips escreveu: > Based on prior work: > > https://lkml.org/lkml/2014/5/6/395 Thanks, looks good, applying. Jean, is everything ok with you on this? - Arnaldo > and how other arches add libdw unwind support. Includes support for > running the unwind test, e.g., on a system with only elfutils' libdw > 0.170, the test now runs, and successfully: > > $ ./perf test unwind > 56: Test dwarf unwind : Ok > > Reported-by: Christian Hansen <chansen3@cisco.com> > Originally-by: Jean Pihet <jean.pihet@linaro.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Arnaldo Carvalho de Melo <acme@kernel.org> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > Cc: Jiri Olsa <jolsa@redhat.com> > Cc: Namhyung Kim <namhyung@kernel.org> > Cc: linux-kernel@vger.kernel.org > Cc: linux-perf-users@vger.kernel.org > Signed-off-by: Kim Phillips <kim.phillips@arm.com> > --- > tools/perf/Makefile.config | 2 +- > tools/perf/arch/arm64/include/arch-tests.h | 12 ++++++ > tools/perf/arch/arm64/tests/Build | 3 ++ > tools/perf/arch/arm64/tests/arch-tests.c | 16 ++++++++ > tools/perf/arch/arm64/util/Build | 1 + > tools/perf/arch/arm64/util/unwind-libdw.c | 60 ++++++++++++++++++++++++++++++ > 6 files changed, 93 insertions(+), 1 deletion(-) > create mode 100644 tools/perf/arch/arm64/include/arch-tests.h > create mode 100644 tools/perf/arch/arm64/tests/arch-tests.c > create mode 100644 tools/perf/arch/arm64/util/unwind-libdw.c > > diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config > index 89cb2a36b8ff..98ff73648b51 100644 > --- a/tools/perf/Makefile.config > +++ b/tools/perf/Makefile.config > @@ -75,7 +75,7 @@ endif > # Disable it on all other architectures in case libdw unwind > # support is detected in system. Add supported architectures > # to the check. > -ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm powerpc s390)) > +ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm arm64 powerpc s390)) > NO_LIBDW_DWARF_UNWIND := 1 > endif > > diff --git a/tools/perf/arch/arm64/include/arch-tests.h b/tools/perf/arch/arm64/include/arch-tests.h > new file mode 100644 > index 000000000000..90ec4c8cb880 > --- /dev/null > +++ b/tools/perf/arch/arm64/include/arch-tests.h > @@ -0,0 +1,12 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef ARCH_TESTS_H > +#define ARCH_TESTS_H > + > +#ifdef HAVE_DWARF_UNWIND_SUPPORT > +struct thread; > +struct perf_sample; > +#endif > + > +extern struct test arch_tests[]; > + > +#endif > diff --git a/tools/perf/arch/arm64/tests/Build b/tools/perf/arch/arm64/tests/Build > index b30eff9bcc83..ca5630e73474 100644 > --- a/tools/perf/arch/arm64/tests/Build > +++ b/tools/perf/arch/arm64/tests/Build > @@ -1,2 +1,5 @@ > libperf-y += regs_load.o > libperf-y += dwarf-unwind.o > + > +libperf-y += arch-tests.o > + > diff --git a/tools/perf/arch/arm64/tests/arch-tests.c b/tools/perf/arch/arm64/tests/arch-tests.c > new file mode 100644 > index 000000000000..5b1543c98022 > --- /dev/null > +++ b/tools/perf/arch/arm64/tests/arch-tests.c > @@ -0,0 +1,16 @@ > +// SPDX-License-Identifier: GPL-2.0 > +#include <string.h> > +#include "tests/tests.h" > +#include "arch-tests.h" > + > +struct test arch_tests[] = { > +#ifdef HAVE_DWARF_UNWIND_SUPPORT > + { > + .desc = "DWARF unwind", > + .func = test__dwarf_unwind, > + }, > +#endif > + { > + .func = NULL, > + }, > +}; > diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build > index c0b8dfef98ba..68f8a8eb3ad0 100644 > --- a/tools/perf/arch/arm64/util/Build > +++ b/tools/perf/arch/arm64/util/Build > @@ -2,6 +2,7 @@ libperf-y += header.o > libperf-y += sym-handling.o > libperf-$(CONFIG_DWARF) += dwarf-regs.o > libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o > +libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o > > libperf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \ > ../../arm/util/auxtrace.o \ > diff --git a/tools/perf/arch/arm64/util/unwind-libdw.c b/tools/perf/arch/arm64/util/unwind-libdw.c > new file mode 100644 > index 000000000000..7623d85e77f3 > --- /dev/null > +++ b/tools/perf/arch/arm64/util/unwind-libdw.c > @@ -0,0 +1,60 @@ > +// SPDX-License-Identifier: GPL-2.0 > +#include <elfutils/libdwfl.h> > +#include "../../util/unwind-libdw.h" > +#include "../../util/perf_regs.h" > +#include "../../util/event.h" > + > +bool libdw__arch_set_initial_registers(Dwfl_Thread *thread, void *arg) > +{ > + struct unwind_info *ui = arg; > + struct regs_dump *user_regs = &ui->sample->user_regs; > + Dwarf_Word dwarf_regs[PERF_REG_ARM64_MAX], dwarf_pc; > + > +#define REG(r) ({ \ > + Dwarf_Word val = 0; \ > + perf_reg_value(&val, user_regs, PERF_REG_ARM64_##r); \ > + val; \ > +}) > + > + dwarf_regs[0] = REG(X0); > + dwarf_regs[1] = REG(X1); > + dwarf_regs[2] = REG(X2); > + dwarf_regs[3] = REG(X3); > + dwarf_regs[4] = REG(X4); > + dwarf_regs[5] = REG(X5); > + dwarf_regs[6] = REG(X6); > + dwarf_regs[7] = REG(X7); > + dwarf_regs[8] = REG(X8); > + dwarf_regs[9] = REG(X9); > + dwarf_regs[10] = REG(X10); > + dwarf_regs[11] = REG(X11); > + dwarf_regs[12] = REG(X12); > + dwarf_regs[13] = REG(X13); > + dwarf_regs[14] = REG(X14); > + dwarf_regs[15] = REG(X15); > + dwarf_regs[16] = REG(X16); > + dwarf_regs[17] = REG(X17); > + dwarf_regs[18] = REG(X18); > + dwarf_regs[19] = REG(X19); > + dwarf_regs[20] = REG(X20); > + dwarf_regs[21] = REG(X21); > + dwarf_regs[22] = REG(X22); > + dwarf_regs[23] = REG(X23); > + dwarf_regs[24] = REG(X24); > + dwarf_regs[25] = REG(X25); > + dwarf_regs[26] = REG(X26); > + dwarf_regs[27] = REG(X27); > + dwarf_regs[28] = REG(X28); > + dwarf_regs[29] = REG(X29); > + dwarf_regs[30] = REG(LR); > + dwarf_regs[31] = REG(SP); > + > + if (!dwfl_thread_state_registers(thread, 0, PERF_REG_ARM64_MAX, > + dwarf_regs)) > + return false; > + > + dwarf_pc = REG(PC); > + dwfl_thread_state_register_pc(thread, dwarf_pc); > + > + return true; > +} > -- > 2.16.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 15:06 ` Arnaldo Carvalho de Melo @ 2018-03-09 18:07 ` Kim Phillips 0 siblings, 0 replies; 13+ messages in thread From: Kim Phillips @ 2018-03-09 18:07 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin), Martin Vuille On Fri, 9 Mar 2018 12:06:27 -0300 Arnaldo Carvalho de Melo <acme@kernel.org> wrote: Hi Arnaldo, > Em Thu, Mar 08, 2018 at 09:10:30PM -0600, Kim Phillips escreveu: > > Based on prior work: > > > > https://lkml.org/lkml/2014/5/6/395 > > Thanks, looks good, applying. > > Jean, is everything ok with you on this? By now your email to Jean should have bounced with "The email account that you tried to reach does not exist." Removing Jean from Cc. It seems like you're applying patches. There are a couple that have slipped through the cracks: Can you please take a look at applying them? - "perf tools: Fixing uninitialised variable" https://patchwork.kernel.org/patch/10179381/ - "perf unwind: Report error from dwfl_attach_state" https://patchwork.kernel.org/patch/10211483/ [Martin, I guess it would help if you replied-all that patch and added your signed-off-by.] - "perf unwind: Unwind with libdw doesn't take symfs into account" https://patchwork.kernel.org/patch/10211599/ Thanks, Kim ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 @ 2018-03-09 18:07 ` Kim Phillips 0 siblings, 0 replies; 13+ messages in thread From: Kim Phillips @ 2018-03-09 18:07 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin), Martin Vuille On Fri, 9 Mar 2018 12:06:27 -0300 Arnaldo Carvalho de Melo <acme@kernel.org> wrote: Hi Arnaldo, > Em Thu, Mar 08, 2018 at 09:10:30PM -0600, Kim Phillips escreveu: > > Based on prior work: > > > > https://lkml.org/lkml/2014/5/6/395 > > Thanks, looks good, applying. > > Jean, is everything ok with you on this? By now your email to Jean should have bounced with "The email account that you tried to reach does not exist." Removing Jean from Cc. It seems like you're applying patches. There are a couple that have slipped through the cracks: Can you please take a look at applying them? - "perf tools: Fixing uninitialised variable" https://patchwork.kernel.org/patch/10179381/ - "perf unwind: Report error from dwfl_attach_state" https://patchwork.kernel.org/patch/10211483/ [Martin, I guess it would help if you replied-all that patch and added your signed-off-by.] - "perf unwind: Unwind with libdw doesn't take symfs into account" https://patchwork.kernel.org/patch/10211599/ Thanks, Kim ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 18:07 ` Kim Phillips (?) @ 2018-03-09 18:24 ` Arnaldo Carvalho de Melo 2018-03-09 18:49 ` Martin Vuille 2018-03-13 15:23 ` Martin Vuille -1 siblings, 2 replies; 13+ messages in thread From: Arnaldo Carvalho de Melo @ 2018-03-09 18:24 UTC (permalink / raw) To: Kim Phillips, Jiri Olsa Cc: Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin), Martin Vuille Em Fri, Mar 09, 2018 at 12:07:20PM -0600, Kim Phillips escreveu: > On Fri, 9 Mar 2018 12:06:27 -0300 > Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > Hi Arnaldo, > > > Em Thu, Mar 08, 2018 at 09:10:30PM -0600, Kim Phillips escreveu: > > > Based on prior work: > > > > > > https://lkml.org/lkml/2014/5/6/395 > > > > Thanks, looks good, applying. > > > > Jean, is everything ok with you on this? > > By now your email to Jean should have bounced with "The email account > that you tried to reach does not exist." Removing Jean from Cc. > > It seems like you're applying patches. There are a couple that have > slipped through the cracks: Can you please take a look at applying them? > > - "perf tools: Fixing uninitialised variable" > https://patchwork.kernel.org/patch/10179381/ [acme@jouet perf]$ git tag --contains d2785de15f1bd42d613d56bbac5a007e7293b874 perf-core-for-mingo-4.17-20180216 commit d2785de15f1bd42d613d56bbac5a007e7293b874 Author: Mathieu Poirier <mathieu.poirier@linaro.org> AuthorDate: Mon Feb 12 13:32:37 2018 -0700 Commit: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Fri Feb 16 14:55:40 2018 -0300 perf auxtrace arm: Fixing uninitialised variable When working natively on arm64 the compiler gets pesky and complains that variable 'i' is uninitialised, something that breaks the compilation. Here no further checks are needed since variable 'found_spe' can only be true if variable 'i' has been initialised as part of the for loop. Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1518467557-18505-4-git-send-email-mathieu.poirier@linaro.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c index 2323581b157d..fa639e3e52ac 100644 --- a/tools/perf/arch/arm/util/auxtrace.c +++ b/tools/perf/arch/arm/util/auxtrace.c @@ -68,7 +68,7 @@ struct auxtrace_record bool found_spe = false; static struct perf_pmu **arm_spe_pmus = NULL; static int nr_spes = 0; - int i; + int i = 0; > - "perf unwind: Report error from dwfl_attach_state" > https://patchwork.kernel.org/patch/10211483/ > [Martin, I guess it would help if you replied-all that patch and > added your signed-off-by.] Right, the S-o-B is needed > - "perf unwind: Unwind with libdw doesn't take symfs into account" > https://patchwork.kernel.org/patch/10211599/ This one has the S-o-B, applying, Jiri, holler if you disagree, - Arnaldo > Thanks, > > Kim ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 18:24 ` Arnaldo Carvalho de Melo @ 2018-03-09 18:49 ` Martin Vuille 2018-03-09 19:15 ` Kim Phillips 2018-03-09 19:29 ` Arnaldo Carvalho de Melo 2018-03-13 15:23 ` Martin Vuille 1 sibling, 2 replies; 13+ messages in thread From: Martin Vuille @ 2018-03-09 18:49 UTC (permalink / raw) To: Arnaldo Carvalho de Melo, Kim Phillips, Jiri Olsa Cc: Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) Hi, I made two other submissions that may also have been overlooked: https://patchwork.kernel.org/patch/10211401/ -- This one has the S-o-B https://patchwork.kernel.org/patch/10211473/ -- RFC, was looking for comments, has the S-o-B For https://patchwork.kernel.org/patch/10211483/, I'm not sure how to go about doing a reply to all. I had some email problems and was cut-off from the list for a while. MV On 03/09/18 13:24, Arnaldo Carvalho de Melo wrote: > Em Fri, Mar 09, 2018 at 12:07:20PM -0600, Kim Phillips escreveu: >> On Fri, 9 Mar 2018 12:06:27 -0300 >> Arnaldo Carvalho de Melo <acme@kernel.org> wrote: >> >> Hi Arnaldo, >> >>> Em Thu, Mar 08, 2018 at 09:10:30PM -0600, Kim Phillips escreveu: >>>> Based on prior work: >>>> >>>> https://lkml.org/lkml/2014/5/6/395 >>> Thanks, looks good, applying. >>> >>> Jean, is everything ok with you on this? >> By now your email to Jean should have bounced with "The email account >> that you tried to reach does not exist." Removing Jean from Cc. >> >> It seems like you're applying patches. There are a couple that have >> slipped through the cracks: Can you please take a look at applying them? >> >> - "perf tools: Fixing uninitialised variable" >> https://patchwork.kernel.org/patch/10179381/ > [acme@jouet perf]$ git tag --contains d2785de15f1bd42d613d56bbac5a007e7293b874 > perf-core-for-mingo-4.17-20180216 > > commit d2785de15f1bd42d613d56bbac5a007e7293b874 > Author: Mathieu Poirier <mathieu.poirier@linaro.org> > AuthorDate: Mon Feb 12 13:32:37 2018 -0700 > Commit: Arnaldo Carvalho de Melo <acme@redhat.com> > CommitDate: Fri Feb 16 14:55:40 2018 -0300 > > perf auxtrace arm: Fixing uninitialised variable > > When working natively on arm64 the compiler gets pesky and complains > that variable 'i' is uninitialised, something that breaks the > compilation. Here no further checks are needed since variable > 'found_spe' can only be true if variable 'i' has been initialised as > part of the for loop. > > Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > Cc: Jin Yao <yao.jin@linux.intel.com> > Cc: Namhyung Kim <namhyung@kernel.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: linux-arm-kernel@lists.infradead.org > Link: http://lkml.kernel.org/r/1518467557-18505-4-git-send-email-mathieu.poirier@linaro.org > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c > index 2323581b157d..fa639e3e52ac 100644 > --- a/tools/perf/arch/arm/util/auxtrace.c > +++ b/tools/perf/arch/arm/util/auxtrace.c > @@ -68,7 +68,7 @@ struct auxtrace_record > bool found_spe = false; > static struct perf_pmu **arm_spe_pmus = NULL; > static int nr_spes = 0; > - int i; > + int i = 0; > >> - "perf unwind: Report error from dwfl_attach_state" >> https://patchwork.kernel.org/patch/10211483/ >> [Martin, I guess it would help if you replied-all that patch and >> added your signed-off-by.] > Right, the S-o-B is needed > >> - "perf unwind: Unwind with libdw doesn't take symfs into account" >> https://patchwork.kernel.org/patch/10211599/ > This one has the S-o-B, applying, Jiri, holler if you disagree, > > - Arnaldo > >> Thanks, >> >> Kim > -- > To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 18:49 ` Martin Vuille @ 2018-03-09 19:15 ` Kim Phillips 2018-03-09 19:29 ` Arnaldo Carvalho de Melo 1 sibling, 0 replies; 13+ messages in thread From: Kim Phillips @ 2018-03-09 19:15 UTC (permalink / raw) To: Martin Vuille Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) On Fri, 9 Mar 2018 13:49:50 -0500 Martin Vuille <jpmv27@aim.com> wrote: > For https://patchwork.kernel.org/patch/10211483/, I'm not sure how to go about doing a reply to all. Hit reply-all from the copy in your Sent folder. Kim ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 @ 2018-03-09 19:15 ` Kim Phillips 0 siblings, 0 replies; 13+ messages in thread From: Kim Phillips @ 2018-03-09 19:15 UTC (permalink / raw) To: Martin Vuille Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) On Fri, 9 Mar 2018 13:49:50 -0500 Martin Vuille <jpmv27@aim.com> wrote: > For https://patchwork.kernel.org/patch/10211483/, I'm not sure how to go about doing a reply to all. Hit reply-all from the copy in your Sent folder. Kim ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 19:15 ` Kim Phillips (?) @ 2018-03-09 19:17 ` Martin Vuille -1 siblings, 0 replies; 13+ messages in thread From: Martin Vuille @ 2018-03-09 19:17 UTC (permalink / raw) To: Kim Phillips Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) Yes, thought of doing that. Unfortunately it was sent directly from git, so I do not have a copy of the message that was sent. MV On 03/09/18 14:15, Kim Phillips wrote: > On Fri, 9 Mar 2018 13:49:50 -0500 > Martin Vuille <jpmv27@aim.com> wrote: > >> For https://patchwork.kernel.org/patch/10211483/, I'm not sure how to go about doing a reply to all. > Hit reply-all from the copy in your Sent folder. > > Kim > -- > To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 18:49 ` Martin Vuille 2018-03-09 19:15 ` Kim Phillips @ 2018-03-09 19:29 ` Arnaldo Carvalho de Melo 2018-03-09 19:35 ` Martin Vuille 1 sibling, 1 reply; 13+ messages in thread From: Arnaldo Carvalho de Melo @ 2018-03-09 19:29 UTC (permalink / raw) To: Martin Vuille Cc: Kim Phillips, Jiri Olsa, Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) Em Fri, Mar 09, 2018 at 01:49:50PM -0500, Martin Vuille escreveu: > Hi, > > I made two other submissions that may also have been overlooked: > > https://patchwork.kernel.org/patch/10211401/ -- This one has the S-o-B Ok, replied to that one, I can't see where is it that the symfs is being first appended, please clarify that in the patch commit log message. > https://patchwork.kernel.org/patch/10211473/ -- RFC, was looking for comments, has the S-o-B [RFC,1/1] perf annotate: Don't prepend symfs path to vmlinux path So, lemme try to provide the precise steps to reproduce this problem: [root@jouet ~]# perf record -F 10000 sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.017 MB perf.data (11 samples) ] [root@jouet ~]# perf buildid-list 44d954246227536955cb1ecbe9ef2a05665876b6 /lib/modules/4.16.0-rc4/build/vmlinux 87ae276466bc68e958c9817f11d5e09f14510585 [vdso] 3113881229974f02113945e92c1a4d4f146e061c /usr/lib64/libc-2.26.so [root@jouet ~]# then we go on and remove that buildid from the cache: [root@jouet ~]# perf record -F 10000 sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.017 MB perf.data (10 samples) ] [root@jouet ~]# perf report --dso \[kernel.vmlinux\] | grep -v ^# | head -5 38.00% sleep [k] filemap_map_pages 19.68% sleep [k] elf_map 2.69% perf [k] perf_iterate_ctx 0.29% perf [k] end_repeat_nmi 0.04% perf [k] native_sched_clock [root@jouet ~]# [root@jouet ~]# perf buildid-list 44d954246227536955cb1ecbe9ef2a05665876b6 /lib/modules/4.16.0-rc4/build/vmlinux 87ae276466bc68e958c9817f11d5e09f14510585 [vdso] 3113881229974f02113945e92c1a4d4f146e061c /usr/lib64/libc-2.26.so [root@jouet ~]# ls -la ~/.debug/.build-id/44/d954246227536955cb1ecbe9ef2a05665876b6 lrwxrwxrwx. 1 root root 77 Mar 9 16:14 /root/.debug/.build-id/44/d954246227536955cb1ecbe9ef2a05665876b6 -> ../../home/build/v4.16.0-rc4/vmlinux/44d954246227536955cb1ecbe9ef2a05665876b6 [root@jouet ~]# ls -la ~/.debug/home/build/v4.16.0-rc4/vmlinux/44d954246227536955cb1ecbe9ef2a05665876b6/ total 510840 drwxr-xr-x. 2 root root 4096 Mar 9 16:14 . drwxr-xr-x. 3 root root 4096 Mar 6 11:35 .. -rwxr-xr-x. 1 root root 523085744 Mar 6 11:35 elf -rw-r--r--. 1 root root 0 Mar 9 16:14 probes [root@jouet ~]# perf buildid-cache --remove /lib/modules/4.16.0-rc4/build/vmlinux [root@jouet ~]# ls -la ~/.debug/.build-id/44/d954246227536955cb1ecbe9ef2a05665876b6 ls: cannot access '/root/.debug/.build-id/44/d954246227536955cb1ecbe9ef2a05665876b6': No such file or directory [root@jouet ~]# ls -la ~/.debug/home/build/v4.16.0-rc4/vmlinux/44d954246227536955cb1ecbe9ef2a05665876b6/ ls: cannot access '/root/.debug/home/build/v4.16.0-rc4/vmlinux/44d954246227536955cb1ecbe9ef2a05665876b6/': No such file or directory [root@jouet ~]# Ok, so now I do: [root@jouet ~]# perf annotate --stdio --vmlinux /lib/modules/4.16.0-rc4/build/vmlinux filemap_map_pages Failed to open [kernel.kallsyms]_text, continuing without symbols Error: The perf.data file has no samples! [root@jouet ~]# But I ran out of time today, this one needs a bit more investigation, I couldn't get to that dso__disassemble_filename() in the above case :-\ > For https://patchwork.kernel.org/patch/10211483/, I'm not sure how to go about doing a reply to all. So, no need for that, just state here that you provide your Signed-off-by: to it and I'll add it, which is what I'm doing now since this seems to be your intent, right? I'll just add another Link: tag pointing to your reply to -this- message, if it comes with a S-o-B for https://patchwork.kernel.org/patch/10211483/, ok? - Arnaldo > I had some email problems and was cut-off from the list for a while. > > MV > > > On 03/09/18 13:24, Arnaldo Carvalho de Melo wrote: > > Em Fri, Mar 09, 2018 at 12:07:20PM -0600, Kim Phillips escreveu: > > > On Fri, 9 Mar 2018 12:06:27 -0300 > > > Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > > > > > Hi Arnaldo, > > > > > > > Em Thu, Mar 08, 2018 at 09:10:30PM -0600, Kim Phillips escreveu: > > > > > Based on prior work: > > > > > > > > > > https://lkml.org/lkml/2014/5/6/395 > > > > Thanks, looks good, applying. > > > > > > > > Jean, is everything ok with you on this? > > > By now your email to Jean should have bounced with "The email account > > > that you tried to reach does not exist." Removing Jean from Cc. > > > > > > It seems like you're applying patches. There are a couple that have > > > slipped through the cracks: Can you please take a look at applying them? > > > > > > - "perf tools: Fixing uninitialised variable" > > > https://patchwork.kernel.org/patch/10179381/ > > [acme@jouet perf]$ git tag --contains d2785de15f1bd42d613d56bbac5a007e7293b874 > > perf-core-for-mingo-4.17-20180216 > > > > commit d2785de15f1bd42d613d56bbac5a007e7293b874 > > Author: Mathieu Poirier <mathieu.poirier@linaro.org> > > AuthorDate: Mon Feb 12 13:32:37 2018 -0700 > > Commit: Arnaldo Carvalho de Melo <acme@redhat.com> > > CommitDate: Fri Feb 16 14:55:40 2018 -0300 > > > > perf auxtrace arm: Fixing uninitialised variable > > When working natively on arm64 the compiler gets pesky and complains > > that variable 'i' is uninitialised, something that breaks the > > compilation. Here no further checks are needed since variable > > 'found_spe' can only be true if variable 'i' has been initialised as > > part of the for loop. > > Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> > > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > > Cc: Jin Yao <yao.jin@linux.intel.com> > > Cc: Namhyung Kim <namhyung@kernel.org> > > Cc: Peter Zijlstra <peterz@infradead.org> > > Cc: linux-arm-kernel@lists.infradead.org > > Link: http://lkml.kernel.org/r/1518467557-18505-4-git-send-email-mathieu.poirier@linaro.org > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > > > diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c > > index 2323581b157d..fa639e3e52ac 100644 > > --- a/tools/perf/arch/arm/util/auxtrace.c > > +++ b/tools/perf/arch/arm/util/auxtrace.c > > @@ -68,7 +68,7 @@ struct auxtrace_record > > bool found_spe = false; > > static struct perf_pmu **arm_spe_pmus = NULL; > > static int nr_spes = 0; > > - int i; > > + int i = 0; > > > - "perf unwind: Report error from dwfl_attach_state" > > > https://patchwork.kernel.org/patch/10211483/ > > > [Martin, I guess it would help if you replied-all that patch and > > > added your signed-off-by.] > > Right, the S-o-B is needed > > > - "perf unwind: Unwind with libdw doesn't take symfs into account" > > > https://patchwork.kernel.org/patch/10211599/ > > This one has the S-o-B, applying, Jiri, holler if you disagree, > > > > - Arnaldo > > > Thanks, > > > > > > Kim > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 19:29 ` Arnaldo Carvalho de Melo @ 2018-03-09 19:35 ` Martin Vuille 0 siblings, 0 replies; 13+ messages in thread From: Martin Vuille @ 2018-03-09 19:35 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Kim Phillips, Jiri Olsa, Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) Thanks. I replied to your message with additional information. I will update the commit message and resubmit the patch. MV On 03/09/18 14:29, Arnaldo Carvalho de Melo wrote: > Em Fri, Mar 09, 2018 at 01:49:50PM -0500, Martin Vuille escreveu: >> Hi, >> >> I made two other submissions that may also have been overlooked: >> >> https://patchwork.kernel.org/patch/10211401/ -- This one has the S-o-B > Ok, replied to that one, I can't see where is it that the symfs is being > first appended, please clarify that in the patch commit log message. > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 18:24 ` Arnaldo Carvalho de Melo 2018-03-09 18:49 ` Martin Vuille @ 2018-03-13 15:23 ` Martin Vuille 1 sibling, 0 replies; 13+ messages in thread From: Martin Vuille @ 2018-03-13 15:23 UTC (permalink / raw) To: Arnaldo Carvalho de Melo, Kim Phillips, Jiri Olsa Cc: Christian Hansen (chansen3), linux-perf-users, Peter Zijlstra, Ingo Molnar, Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-kernel, Mathieu Poirier, Vuille, Martin (Martin) On 03/09/18 13:24, Arnaldo Carvalho de Melo wrote: > >> - "perf unwind: Report error from dwfl_attach_state" >> https://patchwork.kernel.org/patch/10211483/ >> [Martin, I guess it would help if you replied-all that patch and >> added your signed-off-by.] > Right, the S-o-B is needed S-o-B has been provided by reply to this email. If you prefer, I can resubmit the patch with the S-o-B included. > >> - "perf unwind: Unwind with libdw doesn't take symfs into account" >> https://patchwork.kernel.org/patch/10211599/ > This one has the S-o-B, applying, Jiri, holler if you disagree, > > - Arnaldo > Thanks. Regards, MV ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] perf tools arm64: Add libdw DWARF post unwind support for ARM64 2018-03-09 3:10 ` [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 Kim Phillips 2018-03-09 15:06 ` Arnaldo Carvalho de Melo @ 2018-03-20 6:20 ` tip-bot for Kim Phillips 1 sibling, 0 replies; 13+ messages in thread From: tip-bot for Kim Phillips @ 2018-03-20 6:20 UTC (permalink / raw) To: linux-tip-commits Cc: alexander.shishkin, peterz, hpa, linux-kernel, jolsa, namhyung, acme, jean.pihet, tglx, mingo, chansen3, kim.phillips Commit-ID: 744e9a91cf898bf027dbe65cc61a5d7565335cba Gitweb: https://git.kernel.org/tip/744e9a91cf898bf027dbe65cc61a5d7565335cba Author: Kim Phillips <kim.phillips@arm.com> AuthorDate: Thu, 8 Mar 2018 21:10:30 -0600 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Fri, 16 Mar 2018 13:53:46 -0300 perf tools arm64: Add libdw DWARF post unwind support for ARM64 Based on prior work: https://lkml.org/lkml/2014/5/6/395 and on how other arches add libdw unwind support. Includes support for running the unwind test, e.g., on a system with only elfutils' libdw 0.170, the test now runs, and successfully: $ ./perf test unwind 56: Test dwarf unwind : Ok Originally-by: Jean Pihet <jean.pihet@linaro.org> Reported-by: Christian Hansen <chansen3@cisco.com> Signed-off-by: Kim Phillips <kim.phillips@arm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20180308211030.4ee4a0d6ff6dc5cda1b567d4@arm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Makefile.config | 2 +- tools/perf/arch/arm64/include/arch-tests.h | 12 ++++++ tools/perf/arch/arm64/tests/Build | 2 + tools/perf/arch/arm64/tests/arch-tests.c | 16 ++++++++ tools/perf/arch/arm64/util/Build | 1 + tools/perf/arch/arm64/util/unwind-libdw.c | 60 ++++++++++++++++++++++++++++++ 6 files changed, 92 insertions(+), 1 deletion(-) diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index 89cb2a36b8ff..98ff73648b51 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -75,7 +75,7 @@ endif # Disable it on all other architectures in case libdw unwind # support is detected in system. Add supported architectures # to the check. -ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm powerpc s390)) +ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm arm64 powerpc s390)) NO_LIBDW_DWARF_UNWIND := 1 endif diff --git a/tools/perf/arch/arm64/include/arch-tests.h b/tools/perf/arch/arm64/include/arch-tests.h new file mode 100644 index 000000000000..90ec4c8cb880 --- /dev/null +++ b/tools/perf/arch/arm64/include/arch-tests.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef ARCH_TESTS_H +#define ARCH_TESTS_H + +#ifdef HAVE_DWARF_UNWIND_SUPPORT +struct thread; +struct perf_sample; +#endif + +extern struct test arch_tests[]; + +#endif diff --git a/tools/perf/arch/arm64/tests/Build b/tools/perf/arch/arm64/tests/Build index b30eff9bcc83..883c57ff0c08 100644 --- a/tools/perf/arch/arm64/tests/Build +++ b/tools/perf/arch/arm64/tests/Build @@ -1,2 +1,4 @@ libperf-y += regs_load.o libperf-y += dwarf-unwind.o + +libperf-y += arch-tests.o diff --git a/tools/perf/arch/arm64/tests/arch-tests.c b/tools/perf/arch/arm64/tests/arch-tests.c new file mode 100644 index 000000000000..5b1543c98022 --- /dev/null +++ b/tools/perf/arch/arm64/tests/arch-tests.c @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <string.h> +#include "tests/tests.h" +#include "arch-tests.h" + +struct test arch_tests[] = { +#ifdef HAVE_DWARF_UNWIND_SUPPORT + { + .desc = "DWARF unwind", + .func = test__dwarf_unwind, + }, +#endif + { + .func = NULL, + }, +}; diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build index c0b8dfef98ba..68f8a8eb3ad0 100644 --- a/tools/perf/arch/arm64/util/Build +++ b/tools/perf/arch/arm64/util/Build @@ -2,6 +2,7 @@ libperf-y += header.o libperf-y += sym-handling.o libperf-$(CONFIG_DWARF) += dwarf-regs.o libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o +libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o libperf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \ ../../arm/util/auxtrace.o \ diff --git a/tools/perf/arch/arm64/util/unwind-libdw.c b/tools/perf/arch/arm64/util/unwind-libdw.c new file mode 100644 index 000000000000..7623d85e77f3 --- /dev/null +++ b/tools/perf/arch/arm64/util/unwind-libdw.c @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <elfutils/libdwfl.h> +#include "../../util/unwind-libdw.h" +#include "../../util/perf_regs.h" +#include "../../util/event.h" + +bool libdw__arch_set_initial_registers(Dwfl_Thread *thread, void *arg) +{ + struct unwind_info *ui = arg; + struct regs_dump *user_regs = &ui->sample->user_regs; + Dwarf_Word dwarf_regs[PERF_REG_ARM64_MAX], dwarf_pc; + +#define REG(r) ({ \ + Dwarf_Word val = 0; \ + perf_reg_value(&val, user_regs, PERF_REG_ARM64_##r); \ + val; \ +}) + + dwarf_regs[0] = REG(X0); + dwarf_regs[1] = REG(X1); + dwarf_regs[2] = REG(X2); + dwarf_regs[3] = REG(X3); + dwarf_regs[4] = REG(X4); + dwarf_regs[5] = REG(X5); + dwarf_regs[6] = REG(X6); + dwarf_regs[7] = REG(X7); + dwarf_regs[8] = REG(X8); + dwarf_regs[9] = REG(X9); + dwarf_regs[10] = REG(X10); + dwarf_regs[11] = REG(X11); + dwarf_regs[12] = REG(X12); + dwarf_regs[13] = REG(X13); + dwarf_regs[14] = REG(X14); + dwarf_regs[15] = REG(X15); + dwarf_regs[16] = REG(X16); + dwarf_regs[17] = REG(X17); + dwarf_regs[18] = REG(X18); + dwarf_regs[19] = REG(X19); + dwarf_regs[20] = REG(X20); + dwarf_regs[21] = REG(X21); + dwarf_regs[22] = REG(X22); + dwarf_regs[23] = REG(X23); + dwarf_regs[24] = REG(X24); + dwarf_regs[25] = REG(X25); + dwarf_regs[26] = REG(X26); + dwarf_regs[27] = REG(X27); + dwarf_regs[28] = REG(X28); + dwarf_regs[29] = REG(X29); + dwarf_regs[30] = REG(LR); + dwarf_regs[31] = REG(SP); + + if (!dwfl_thread_state_registers(thread, 0, PERF_REG_ARM64_MAX, + dwarf_regs)) + return false; + + dwarf_pc = REG(PC); + dwfl_thread_state_register_pc(thread, dwarf_pc); + + return true; +} ^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-03-20 6:21 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <A5E405FE-1BA3-46FC-9A43-CF19A4B369C5@cisco.com> [not found] ` <20180226142726.cd413c792d0782f77b60a23e@arm.com> [not found] ` <20180226174040.6998bd3c0a79b2f19c491e4d@arm.com> [not found] ` <9B701F46-6AEA-48D8-9103-71D35C83776D@cisco.com> 2018-03-09 3:10 ` [PATCH] perf tools arm64: Add libdw DWARF post unwind support for ARM64 Kim Phillips 2018-03-09 15:06 ` Arnaldo Carvalho de Melo 2018-03-09 18:07 ` Kim Phillips 2018-03-09 18:07 ` Kim Phillips 2018-03-09 18:24 ` Arnaldo Carvalho de Melo 2018-03-09 18:49 ` Martin Vuille 2018-03-09 19:15 ` Kim Phillips 2018-03-09 19:15 ` Kim Phillips 2018-03-09 19:17 ` Martin Vuille 2018-03-09 19:29 ` Arnaldo Carvalho de Melo 2018-03-09 19:35 ` Martin Vuille 2018-03-13 15:23 ` Martin Vuille 2018-03-20 6:20 ` [tip:perf/core] " tip-bot for Kim Phillips
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.