Commit-ID:  d6afa561e1471ccfdaf7191230c0c59a37e45a5b
Gitweb:     https://git.kernel.org/tip/d6afa561e1471ccfdaf7191230c0c59a37e45a5b
Author:     David Miller <da...@davemloft.net>
AuthorDate: Wed, 17 Oct 2018 12:08:59 -0700
Committer:  Arnaldo Carvalho de Melo <a...@redhat.com>
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 <da...@davemloft.net>
Cc: Alexander Shishkin <alexander.shish...@linux.intel.com>
Cc: Alexis Berlemont <alexis.berlem...@gmail.com>
Cc: David Tolnay <dtol...@gmail.com>
Cc: Hanjun Guo <guohan...@huawei.com>
Cc: Hemant Kumar <hem...@linux.vnet.ibm.com>
Cc: Li Bin <huawei.li...@huawei.com>
Cc: Masami Hiramatsu <mhira...@kernel.org>
Cc: Milian Wolff <milian.wo...@kdab.com>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Wang Nan <wangn...@huawei.com>
Cc: zhangmengt...@huawei.com
Fixes: b2f7605076d6 ("perf symbols: Fix plt entry calculation for ARM and 
AARCH64")
Link: 
http://lkml.kernel.org/r/20181017.120859.2268840244308635255.da...@davemloft.net
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 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;

Reply via email to