* [PATCH] perf unwind: Set userdata for all __report_module paths @ 2021-02-18 16:56 d.rigby 2021-02-18 16:58 ` Dave Rigby 2021-02-18 17:22 ` Jan Kratochvil 0 siblings, 2 replies; 6+ messages in thread From: d.rigby @ 2021-02-18 16:56 UTC (permalink / raw) To: d.rigby Cc: linux-perf-users, Arnaldo Carvalho de Melo, Jan Kratochvil, Jiri Olsa From: Dave Rigby <d.rigby@me.com> When locating the dwarf module for a given address, __find_debuginfo() requires a 'struct dso' passed via the userdata argument. However, this field is only set in __report_module() if the module is found in via dwfl_addrmodule(), not if it is found later via dwfl_report_elf(). Set userdata irrespective of how the dwarf module was found, as long as we found a module. Fixes: bf53fc6b5f41 ("perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder") Cc: linux-perf-users@vger.kernel.org Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Jan Kratochvil <jan.kratochvil@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> --- tools/perf/util/unwind-libdw.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c index 0ada907..a74b517 100644 --- a/tools/perf/util/unwind-libdw.c +++ b/tools/perf/util/unwind-libdw.c @@ -60,10 +60,8 @@ static int __report_module(struct addr_location *al, u64 ip, mod = dwfl_addrmodule(ui->dwfl, ip); if (mod) { Dwarf_Addr s; - void **userdatap; - dwfl_module_info(mod, &userdatap, &s, NULL, NULL, NULL, NULL, NULL); - *userdatap = dso; + dwfl_module_info(mod, NULL, &s, NULL, NULL, NULL, NULL, NULL); if (s != al->map->start - al->map->pgoff) mod = 0; } @@ -79,6 +77,13 @@ static int __report_module(struct addr_location *al, u64 ip, al->map->start - al->map->pgoff, false); } + if (mod) { + void **userdatap; + + dwfl_module_info(mod, &userdatap, NULL, NULL, NULL, NULL, NULL, NULL); + *userdatap = dso; + } + return mod && dwfl_addrmodule(ui->dwfl, ip) == mod ? 0 : -1; } -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] perf unwind: Set userdata for all __report_module paths 2021-02-18 16:56 [PATCH] perf unwind: Set userdata for all __report_module paths d.rigby @ 2021-02-18 16:58 ` Dave Rigby 2021-02-18 17:13 ` Arnaldo Carvalho de Melo 2021-02-18 17:19 ` Arnaldo Carvalho de Melo 2021-02-18 17:22 ` Jan Kratochvil 1 sibling, 2 replies; 6+ messages in thread From: Dave Rigby @ 2021-02-18 16:58 UTC (permalink / raw) To: Dave Rigby Cc: linux-perf-users, Arnaldo Carvalho de Melo, Jan Kratochvil, Jiri Olsa I missed adding a link to the bugzilla issue: https://bugzilla.kernel.org/show_bug.cgi?id=211801 Note sure what the recommended way of tagging that in the patch is… DaveR > On 18 Feb 2021, at 16:56, d.rigby@me.com wrote: > > From: Dave Rigby <d.rigby@me.com> > > When locating the dwarf module for a given address, __find_debuginfo() > requires a 'struct dso' passed via the userdata argument. > > However, this field is only set in __report_module() if the module is > found in via dwfl_addrmodule(), not if it is found later via dwfl_report_elf(). > > Set userdata irrespective of how the dwarf module was found, as long > as we found a module. > > Fixes: bf53fc6b5f41 ("perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder") > Cc: linux-perf-users@vger.kernel.org > Cc: Arnaldo Carvalho de Melo <acme@kernel.org> > Cc: Jan Kratochvil <jan.kratochvil@redhat.com> > Cc: Jiri Olsa <jolsa@redhat.com> > --- > tools/perf/util/unwind-libdw.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c > index 0ada907..a74b517 100644 > --- a/tools/perf/util/unwind-libdw.c > +++ b/tools/perf/util/unwind-libdw.c > @@ -60,10 +60,8 @@ static int __report_module(struct addr_location *al, u64 ip, > mod = dwfl_addrmodule(ui->dwfl, ip); > if (mod) { > Dwarf_Addr s; > - void **userdatap; > > - dwfl_module_info(mod, &userdatap, &s, NULL, NULL, NULL, NULL, NULL); > - *userdatap = dso; > + dwfl_module_info(mod, NULL, &s, NULL, NULL, NULL, NULL, NULL); > if (s != al->map->start - al->map->pgoff) > mod = 0; > } > @@ -79,6 +77,13 @@ static int __report_module(struct addr_location *al, u64 ip, > al->map->start - al->map->pgoff, false); > } > > + if (mod) { > + void **userdatap; > + > + dwfl_module_info(mod, &userdatap, NULL, NULL, NULL, NULL, NULL, NULL); > + *userdatap = dso; > + } > + > return mod && dwfl_addrmodule(ui->dwfl, ip) == mod ? 0 : -1; > } > > -- > 1.8.3.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf unwind: Set userdata for all __report_module paths 2021-02-18 16:58 ` Dave Rigby @ 2021-02-18 17:13 ` Arnaldo Carvalho de Melo 2021-02-18 17:19 ` Arnaldo Carvalho de Melo 1 sibling, 0 replies; 6+ messages in thread From: Arnaldo Carvalho de Melo @ 2021-02-18 17:13 UTC (permalink / raw) To: Dave Rigby; +Cc: linux-perf-users, Jan Kratochvil, Jiri Olsa Em Thu, Feb 18, 2021 at 04:58:44PM +0000, Dave Rigby escreveu: > I missed adding a link to the bugzilla issue: https://bugzilla.kernel.org/show_bug.cgi?id=211801 > > Note sure what the recommended way of tagging that in the patch is… I'll add a: Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=211801 tag, Thanks, - Arnaldo > > DaveR > > > On 18 Feb 2021, at 16:56, d.rigby@me.com wrote: > > > > From: Dave Rigby <d.rigby@me.com> > > > > When locating the dwarf module for a given address, __find_debuginfo() > > requires a 'struct dso' passed via the userdata argument. > > > > However, this field is only set in __report_module() if the module is > > found in via dwfl_addrmodule(), not if it is found later via dwfl_report_elf(). > > > > Set userdata irrespective of how the dwarf module was found, as long > > as we found a module. > > > > Fixes: bf53fc6b5f41 ("perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder") > > Cc: linux-perf-users@vger.kernel.org > > Cc: Arnaldo Carvalho de Melo <acme@kernel.org> > > Cc: Jan Kratochvil <jan.kratochvil@redhat.com> > > Cc: Jiri Olsa <jolsa@redhat.com> > > --- > > tools/perf/util/unwind-libdw.c | 11 ++++++++--- > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c > > index 0ada907..a74b517 100644 > > --- a/tools/perf/util/unwind-libdw.c > > +++ b/tools/perf/util/unwind-libdw.c > > @@ -60,10 +60,8 @@ static int __report_module(struct addr_location *al, u64 ip, > > mod = dwfl_addrmodule(ui->dwfl, ip); > > if (mod) { > > Dwarf_Addr s; > > - void **userdatap; > > > > - dwfl_module_info(mod, &userdatap, &s, NULL, NULL, NULL, NULL, NULL); > > - *userdatap = dso; > > + dwfl_module_info(mod, NULL, &s, NULL, NULL, NULL, NULL, NULL); > > if (s != al->map->start - al->map->pgoff) > > mod = 0; > > } > > @@ -79,6 +77,13 @@ static int __report_module(struct addr_location *al, u64 ip, > > al->map->start - al->map->pgoff, false); > > } > > > > + if (mod) { > > + void **userdatap; > > + > > + dwfl_module_info(mod, &userdatap, NULL, NULL, NULL, NULL, NULL, NULL); > > + *userdatap = dso; > > + } > > + > > return mod && dwfl_addrmodule(ui->dwfl, ip) == mod ? 0 : -1; > > } > > > > -- > > 1.8.3.1 > -- - Arnaldo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf unwind: Set userdata for all __report_module paths 2021-02-18 16:58 ` Dave Rigby 2021-02-18 17:13 ` Arnaldo Carvalho de Melo @ 2021-02-18 17:19 ` Arnaldo Carvalho de Melo 2021-02-18 17:21 ` Dave Rigby 1 sibling, 1 reply; 6+ messages in thread From: Arnaldo Carvalho de Melo @ 2021-02-18 17:19 UTC (permalink / raw) To: Dave Rigby; +Cc: linux-perf-users, Jan Kratochvil, Jiri Olsa Em Thu, Feb 18, 2021 at 04:58:44PM +0000, Dave Rigby escreveu: > I missed adding a link to the bugzilla issue: https://bugzilla.kernel.org/show_bug.cgi?id=211801 > > Note sure what the recommended way of tagging that in the patch is… You also forgot to add your: Signed-off-by: Dave Rigby <d.rigby@me.com> I'm adding it, ok? Please take a look at Documentation/process/submitting-patches.rst, this part: ---------------------------------------------------------------------------- Developer's Certificate of Origin 1.1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. then you just add a line saying:: Signed-off-by: Random J Developer <random@developer.example.org> using your real name (sorry, no pseudonyms or anonymous contributions.) This will be done for you automatically if you use ``git commit -s``. Reverts should also include "Signed-off-by". ``git revert -s`` does that for you. Some people also put extra tags at the end. They'll just be ignored for now, but you can do this to mark internal company procedures or just point out some special detail about the sign-off. Any further SoBs (Signed-off-by:'s) following the author's SoB are from people handling and transporting the patch, but were not involved in its development. SoB chains should reflect the **real** route a patch took as it was propagated to the maintainers and ultimately to Linus, with the first SoB entry signalling primary authorship of a single author. ---------------------------------------------------------------------------- > > DaveR > > > On 18 Feb 2021, at 16:56, d.rigby@me.com wrote: > > > > From: Dave Rigby <d.rigby@me.com> > > > > When locating the dwarf module for a given address, __find_debuginfo() > > requires a 'struct dso' passed via the userdata argument. > > > > However, this field is only set in __report_module() if the module is > > found in via dwfl_addrmodule(), not if it is found later via dwfl_report_elf(). > > > > Set userdata irrespective of how the dwarf module was found, as long > > as we found a module. > > > > Fixes: bf53fc6b5f41 ("perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder") > > Cc: linux-perf-users@vger.kernel.org > > Cc: Arnaldo Carvalho de Melo <acme@kernel.org> > > Cc: Jan Kratochvil <jan.kratochvil@redhat.com> > > Cc: Jiri Olsa <jolsa@redhat.com> > > --- > > tools/perf/util/unwind-libdw.c | 11 ++++++++--- > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c > > index 0ada907..a74b517 100644 > > --- a/tools/perf/util/unwind-libdw.c > > +++ b/tools/perf/util/unwind-libdw.c > > @@ -60,10 +60,8 @@ static int __report_module(struct addr_location *al, u64 ip, > > mod = dwfl_addrmodule(ui->dwfl, ip); > > if (mod) { > > Dwarf_Addr s; > > - void **userdatap; > > > > - dwfl_module_info(mod, &userdatap, &s, NULL, NULL, NULL, NULL, NULL); > > - *userdatap = dso; > > + dwfl_module_info(mod, NULL, &s, NULL, NULL, NULL, NULL, NULL); > > if (s != al->map->start - al->map->pgoff) > > mod = 0; > > } > > @@ -79,6 +77,13 @@ static int __report_module(struct addr_location *al, u64 ip, > > al->map->start - al->map->pgoff, false); > > } > > > > + if (mod) { > > + void **userdatap; > > + > > + dwfl_module_info(mod, &userdatap, NULL, NULL, NULL, NULL, NULL, NULL); > > + *userdatap = dso; > > + } > > + > > return mod && dwfl_addrmodule(ui->dwfl, ip) == mod ? 0 : -1; > > } > > > > -- > > 1.8.3.1 > -- - Arnaldo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf unwind: Set userdata for all __report_module paths 2021-02-18 17:19 ` Arnaldo Carvalho de Melo @ 2021-02-18 17:21 ` Dave Rigby 0 siblings, 0 replies; 6+ messages in thread From: Dave Rigby @ 2021-02-18 17:21 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: linux-perf-users, Jan Kratochvil, Jiri Olsa > On 18 Feb 2021, at 17:19, Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > Em Thu, Feb 18, 2021 at 04:58:44PM +0000, Dave Rigby escreveu: >> I missed adding a link to the bugzilla issue: https://bugzilla.kernel.org/show_bug.cgi?id=211801 >> >> Note sure what the recommended way of tagging that in the patch is… > > You also forgot to add your: > > Signed-off-by: Dave Rigby <d.rigby@me.com> > > I'm adding it, ok? Thanks - I missed that in the documentation. Signed-off-by: Dave Rigby <d.rigby@me.com> > > Please take a look at Documentation/process/submitting-patches.rst, this > part: > > ---------------------------------------------------------------------------- > Developer's Certificate of Origin 1.1 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > By making a contribution to this project, I certify that: > > (a) The contribution was created in whole or in part by me and I > have the right to submit it under the open source license > indicated in the file; or > > (b) The contribution is based upon previous work that, to the best > of my knowledge, is covered under an appropriate open source > license and I have the right under that license to submit that > work with modifications, whether created in whole or in part > by me, under the same open source license (unless I am > permitted to submit under a different license), as indicated > in the file; or > > (c) The contribution was provided directly to me by some other > person who certified (a), (b) or (c) and I have not modified > it. > > (d) I understand and agree that this project and the contribution > are public and that a record of the contribution (including all > personal information I submit with it, including my sign-off) is > maintained indefinitely and may be redistributed consistent with > this project or the open source license(s) involved. > > then you just add a line saying:: > > Signed-off-by: Random J Developer <random@developer.example.org> > > using your real name (sorry, no pseudonyms or anonymous contributions.) > This will be done for you automatically if you use ``git commit -s``. > Reverts should also include "Signed-off-by". ``git revert -s`` does that > for you. > > Some people also put extra tags at the end. They'll just be ignored for > now, but you can do this to mark internal company procedures or just > point out some special detail about the sign-off. > > Any further SoBs (Signed-off-by:'s) following the author's SoB are from > people handling and transporting the patch, but were not involved in its > development. SoB chains should reflect the **real** route a patch took > as it was propagated to the maintainers and ultimately to Linus, with > the first SoB entry signalling primary authorship of a single author. > ---------------------------------------------------------------------------- > >> >> DaveR >> >>> On 18 Feb 2021, at 16:56, d.rigby@me.com wrote: >>> >>> From: Dave Rigby <d.rigby@me.com> >>> >>> When locating the dwarf module for a given address, __find_debuginfo() >>> requires a 'struct dso' passed via the userdata argument. >>> >>> However, this field is only set in __report_module() if the module is >>> found in via dwfl_addrmodule(), not if it is found later via dwfl_report_elf(). >>> >>> Set userdata irrespective of how the dwarf module was found, as long >>> as we found a module. >>> >>> Fixes: bf53fc6b5f41 ("perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder") >>> Cc: linux-perf-users@vger.kernel.org >>> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> >>> Cc: Jan Kratochvil <jan.kratochvil@redhat.com> >>> Cc: Jiri Olsa <jolsa@redhat.com> >>> --- >>> tools/perf/util/unwind-libdw.c | 11 ++++++++--- >>> 1 file changed, 8 insertions(+), 3 deletions(-) >>> >>> diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c >>> index 0ada907..a74b517 100644 >>> --- a/tools/perf/util/unwind-libdw.c >>> +++ b/tools/perf/util/unwind-libdw.c >>> @@ -60,10 +60,8 @@ static int __report_module(struct addr_location *al, u64 ip, >>> mod = dwfl_addrmodule(ui->dwfl, ip); >>> if (mod) { >>> Dwarf_Addr s; >>> - void **userdatap; >>> >>> - dwfl_module_info(mod, &userdatap, &s, NULL, NULL, NULL, NULL, NULL); >>> - *userdatap = dso; >>> + dwfl_module_info(mod, NULL, &s, NULL, NULL, NULL, NULL, NULL); >>> if (s != al->map->start - al->map->pgoff) >>> mod = 0; >>> } >>> @@ -79,6 +77,13 @@ static int __report_module(struct addr_location *al, u64 ip, >>> al->map->start - al->map->pgoff, false); >>> } >>> >>> + if (mod) { >>> + void **userdatap; >>> + >>> + dwfl_module_info(mod, &userdatap, NULL, NULL, NULL, NULL, NULL, NULL); >>> + *userdatap = dso; >>> + } >>> + >>> return mod && dwfl_addrmodule(ui->dwfl, ip) == mod ? 0 : -1; >>> } >>> >>> -- >>> 1.8.3.1 >> > > -- > > - Arnaldo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] perf unwind: Set userdata for all __report_module paths 2021-02-18 16:56 [PATCH] perf unwind: Set userdata for all __report_module paths d.rigby 2021-02-18 16:58 ` Dave Rigby @ 2021-02-18 17:22 ` Jan Kratochvil 1 sibling, 0 replies; 6+ messages in thread From: Jan Kratochvil @ 2021-02-18 17:22 UTC (permalink / raw) To: d.rigby; +Cc: linux-perf-users, Arnaldo Carvalho de Melo, Jiri Olsa On Thu, 18 Feb 2021 17:56:54 +0100, d.rigby@me.com wrote: > From: Dave Rigby <d.rigby@me.com> > > When locating the dwarf module for a given address, __find_debuginfo() > requires a 'struct dso' passed via the userdata argument. > > However, this field is only set in __report_module() if the module is > found in via dwfl_addrmodule(), not if it is found later via dwfl_report_elf(). > > Set userdata irrespective of how the dwarf module was found, as long > as we found a module. > > Fixes: bf53fc6b5f41 ("perf unwind: Fix separate debug info files when using elfutils' libdw's unwinder") > Cc: linux-perf-users@vger.kernel.org > Cc: Arnaldo Carvalho de Melo <acme@kernel.org> > Cc: Jan Kratochvil <jan.kratochvil@redhat.com> > Cc: Jiri Olsa <jolsa@redhat.com> Acked-by: Jan Kratochvil <jan.kratochvil@redhat.com> Sorry for the regression, Jan ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-02-18 19:01 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-18 16:56 [PATCH] perf unwind: Set userdata for all __report_module paths d.rigby 2021-02-18 16:58 ` Dave Rigby 2021-02-18 17:13 ` Arnaldo Carvalho de Melo 2021-02-18 17:19 ` Arnaldo Carvalho de Melo 2021-02-18 17:21 ` Dave Rigby 2021-02-18 17:22 ` Jan Kratochvil
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).