On Wed, Jan 08, 2025 at 10:15:24AM +0100, Christophe Leroy wrote: > Depending on how vmlinux.lds is written, _etext might be the very > first data symbol instead of the very last text symbol. > > Don't require it to be a text symbol, accept any symbol type.
I'm adding a Link: Link: https://lore.kernel.org/all/752a31b0-4370-4f52-b7cc-45f0078c1...@csgroup.eu To give more context as where this has been observed, and also add a snippet of your explanation there, this: ---- # grep -e _stext -e _etext -e _edata /proc/kallsyms c0000000 T _stext c08b8000 D _etext So there is no _edata and _etext is not text $ ppc-linux-objdump -x vmlinux | grep -e _stext -e _etext -e _edata c0000000 g .head.text 00000000 _stext c08b8000 g .rodata 00000000 _etext c1378000 g .sbss 00000000 _edata ---- Thanks, - Arnaldo > Fixes: ed9adb2035b5 ("perf machine: Read also the end of the kernel") > Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu> > --- > tools/perf/util/machine.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c > index 27d5345d2b30..9be2f4479f52 100644 > --- a/tools/perf/util/machine.c > +++ b/tools/perf/util/machine.c > @@ -1003,7 +1003,7 @@ static int machine__get_running_kernel_start(struct > machine *machine, > > err = kallsyms__get_symbol_start(filename, "_edata", &addr); > if (err) > - err = kallsyms__get_function_start(filename, "_etext", &addr); > + err = kallsyms__get_symbol_start(filename, "_etext", &addr); > if (!err) > *end = addr; > > -- > 2.47.0