Messages in this thread | | | From | Ian Rogers <> | Date | Tue, 12 Dec 2023 10:08:18 -0800 | Subject | Re: [PATCH 3/3] perf unwind-libunwind: Fix base address for .eh_frame |
| |
On Mon, Dec 11, 2023 at 11:05 PM Namhyung Kim <namhyung@kernel.org> wrote: > > The base address of a DSO mapping should start at the start of the file. > Usually DSOs are mapped from the pgoff 0 so it doesn't matter when it > uses the start of the map address. But generated DSOs for JIT codes > doesn't start from the 0 so it should subtract the offset to calculate > the .eh_frame table offsets correctly. > > Fixes: dc2cf4ca866f ("perf unwind: Fix segbase for ld.lld linked objects") > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Thanks, Ian
> --- > tools/perf/util/unwind-libunwind-local.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c > index c0641882fd2f..5e5c3395a499 100644 > --- a/tools/perf/util/unwind-libunwind-local.c > +++ b/tools/perf/util/unwind-libunwind-local.c > @@ -327,7 +327,7 @@ static int read_unwind_spec_eh_frame(struct dso *dso, struct unwind_info *ui, > > maps__for_each_entry(thread__maps(ui->thread), map_node) { > struct map *map = map_node->map; > - u64 start = map__start(map); > + u64 start = map__start(map) - map__pgoff(map); > > if (map__dso(map) == dso && start < base_addr) > base_addr = start; > -- > 2.43.0.472.g3155946c3a-goog >
| |