2018-10-17 19:11:08

by David Miller

[permalink] [raw]
Subject: [PATCH] perf: Set PLT entry/header sizes properly on Sparc.


Using the sh_entsize for both values isn't correct. It happens
to be correct on x86...

For both 32-bit and 64-bit sparc, there are four PLT entries in the
PLT section.

Signed-off-by: David S. Miller <[email protected]>
---
tools/perf/util/symbol-elf.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 29770ea61768..6e70cc00c161 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -324,7 +324,17 @@ int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss)
plt_entry_size = 16;
break;

- default: /* FIXME: s390/alpha/mips/parisc/poperpc/sh/sparc/xtensa need to be checked */
+ case EM_SPARC:
+ plt_header_size = 48;
+ plt_entry_size = 12;
+ break;
+
+ case EM_SPARCV9:
+ plt_header_size = 128;
+ plt_entry_size = 32;
+ break;
+
+ default: /* FIXME: s390/alpha/mips/parisc/poperpc/sh/xtensa need to be checked */
plt_header_size = shdr_plt.sh_entsize;
plt_entry_size = shdr_plt.sh_entsize;
break;
--
2.19.1.328.g5a0cc8aca



2018-10-18 14:24:58

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf: Set PLT entry/header sizes properly on Sparc.

Em Wed, Oct 17, 2018 at 12:08:59PM -0700, David Miller escreveu:
>
> Using the sh_entsize for both values isn't correct. It happens
> to be correct on x86...
>
> For both 32-bit and 64-bit sparc, there are four PLT entries in the
> PLT section.

Thanks, applied.

- Arnaldo

Subject: [tip:perf/urgent] perf symbols: Set PLT entry/header sizes properly on Sparc

Commit-ID: d6afa561e1471ccfdaf7191230c0c59a37e45a5b
Gitweb: https://git.kernel.org/tip/d6afa561e1471ccfdaf7191230c0c59a37e45a5b
Author: David Miller <[email protected]>
AuthorDate: Wed, 17 Oct 2018 12:08:59 -0700
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Thu, 18 Oct 2018 11:19:44 -0300

perf symbols: Set PLT entry/header sizes properly on Sparc

Using the sh_entsize for both values isn't correct. It happens to be
correct on x86...

For both 32-bit and 64-bit sparc, there are four PLT entries in the PLT
section.

Signed-off-by: David S. Miller <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Alexis Berlemont <[email protected]>
Cc: David Tolnay <[email protected]>
Cc: Hanjun Guo <[email protected]>
Cc: Hemant Kumar <[email protected]>
Cc: Li Bin <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Cc: Milian Wolff <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Wang Nan <[email protected]>
Cc: [email protected]
Fixes: b2f7605076d6 ("perf symbols: Fix plt entry calculation for ARM and AARCH64")
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/symbol-elf.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 29770ea61768..6e70cc00c161 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -324,7 +324,17 @@ int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss)
plt_entry_size = 16;
break;

- default: /* FIXME: s390/alpha/mips/parisc/poperpc/sh/sparc/xtensa need to be checked */
+ case EM_SPARC:
+ plt_header_size = 48;
+ plt_entry_size = 12;
+ break;
+
+ case EM_SPARCV9:
+ plt_header_size = 128;
+ plt_entry_size = 32;
+ break;
+
+ default: /* FIXME: s390/alpha/mips/parisc/poperpc/sh/xtensa need to be checked */
plt_header_size = shdr_plt.sh_entsize;
plt_entry_size = shdr_plt.sh_entsize;
break;