perf symbols: Set PLT entry/header sizes properly on Sparc
authorDavid Miller <davem@davemloft.net>
Wed, 17 Oct 2018 19:08:59 +0000 (12:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Nov 2018 15:10:47 +0000 (16:10 +0100)
[ Upstream commit d6afa561e1471ccfdaf7191230c0c59a37e45a5b ]

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 <davem@davemloft.net>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexis Berlemont <alexis.berlemont@gmail.com>
Cc: David Tolnay <dtolnay@gmail.com>
Cc: Hanjun Guo <guohanjun@huawei.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Li Bin <huawei.libin@huawei.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: zhangmengting@huawei.com
Fixes: b2f7605076d6 ("perf symbols: Fix plt entry calculation for ARM and AARCH64")
Link: http://lkml.kernel.org/r/20181017.120859.2268840244308635255.davem@davemloft.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/perf/util/symbol-elf.c

index 2de770511e705dbc8caa7a69f1398548f102720d..8ad4296de98b07f8050de2c7f2a72ffc6675fc58 100644 (file)
@@ -338,7 +338,17 @@ int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, struct map *
                        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;