stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Josh Poimboeuf <jpoimboe@redhat.com>,
	Borislav Petkov <bp@suse.de>, Miroslav Benes <mbenes@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>,
	Sasha Levin <sashal@kernel.org>,
	clang-built-linux@googlegroups.com
Subject: [PATCH AUTOSEL 5.6 20/38] objtool: Support Clang non-section symbols in ORC dump
Date: Fri, 24 Apr 2020 08:22:18 -0400	[thread overview]
Message-ID: <20200424122237.9831-20-sashal@kernel.org> (raw)
In-Reply-To: <20200424122237.9831-1-sashal@kernel.org>

From: Josh Poimboeuf <jpoimboe@redhat.com>

[ Upstream commit 8782e7cab51b6bf01a5a86471dd82228af1ac185 ]

Historically, the relocation symbols for ORC entries have only been
section symbols:

  .text+0: sp:sp+8 bp:(und) type:call end:0

However, the Clang assembler is aggressive about stripping section
symbols.  In that case we will need to use function symbols:

  freezing_slow_path+0: sp:sp+8 bp:(und) type:call end:0

In preparation for the generation of such entries in "objtool orc
generate", add support for reading them in "objtool orc dump".

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/b811b5eb1a42602c3b523576dc5efab9ad1c174d.1585761021.git.jpoimboe@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/objtool/orc_dump.c | 44 ++++++++++++++++++++++++----------------
 1 file changed, 27 insertions(+), 17 deletions(-)

diff --git a/tools/objtool/orc_dump.c b/tools/objtool/orc_dump.c
index 13ccf775a83a4..ba4cbb1cdd632 100644
--- a/tools/objtool/orc_dump.c
+++ b/tools/objtool/orc_dump.c
@@ -66,7 +66,7 @@ int orc_dump(const char *_objname)
 	char *name;
 	size_t nr_sections;
 	Elf64_Addr orc_ip_addr = 0;
-	size_t shstrtab_idx;
+	size_t shstrtab_idx, strtab_idx = 0;
 	Elf *elf;
 	Elf_Scn *scn;
 	GElf_Shdr sh;
@@ -127,6 +127,8 @@ int orc_dump(const char *_objname)
 
 		if (!strcmp(name, ".symtab")) {
 			symtab = data;
+		} else if (!strcmp(name, ".strtab")) {
+			strtab_idx = i;
 		} else if (!strcmp(name, ".orc_unwind")) {
 			orc = data->d_buf;
 			orc_size = sh.sh_size;
@@ -138,7 +140,7 @@ int orc_dump(const char *_objname)
 		}
 	}
 
-	if (!symtab || !orc || !orc_ip)
+	if (!symtab || !strtab_idx || !orc || !orc_ip)
 		return 0;
 
 	if (orc_size % sizeof(*orc) != 0) {
@@ -159,21 +161,29 @@ int orc_dump(const char *_objname)
 				return -1;
 			}
 
-			scn = elf_getscn(elf, sym.st_shndx);
-			if (!scn) {
-				WARN_ELF("elf_getscn");
-				return -1;
-			}
-
-			if (!gelf_getshdr(scn, &sh)) {
-				WARN_ELF("gelf_getshdr");
-				return -1;
-			}
-
-			name = elf_strptr(elf, shstrtab_idx, sh.sh_name);
-			if (!name || !*name) {
-				WARN_ELF("elf_strptr");
-				return -1;
+			if (GELF_ST_TYPE(sym.st_info) == STT_SECTION) {
+				scn = elf_getscn(elf, sym.st_shndx);
+				if (!scn) {
+					WARN_ELF("elf_getscn");
+					return -1;
+				}
+
+				if (!gelf_getshdr(scn, &sh)) {
+					WARN_ELF("gelf_getshdr");
+					return -1;
+				}
+
+				name = elf_strptr(elf, shstrtab_idx, sh.sh_name);
+				if (!name) {
+					WARN_ELF("elf_strptr");
+					return -1;
+				}
+			} else {
+				name = elf_strptr(elf, strtab_idx, sym.st_name);
+				if (!name) {
+					WARN_ELF("elf_strptr");
+					return -1;
+				}
 			}
 
 			printf("%s+%llx:", name, (unsigned long long)rela.r_addend);
-- 
2.20.1


  parent reply	other threads:[~2020-04-24 12:23 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24 12:21 [PATCH AUTOSEL 5.6 01/38] libbpf: Initialize *nl_pid so gcc 10 is happy Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 02/38] net: fec: set GPR bit on suspend by DT configuration Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 03/38] x86: hyperv: report value of misc_features Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 04/38] signal: check sig before setting info in kill_pid_usb_asyncio Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 05/38] hwmon: (drivetemp) Use drivetemp's true module name in Kconfig section Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 06/38] hwmon: (drivetemp) Return -ENODATA for invalid temperatures Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 07/38] afs: Fix length of dump of bad YFSFetchStatus record Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 08/38] xfs: acquire superblock freeze protection on eofblocks scans Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 09/38] xfs: fix partially uninitialized structure in xfs_reflink_remap_extent Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 10/38] ALSA: hda: Release resources at error in delayed probe Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 11/38] ALSA: hda: Keep the controller initialization even if no codecs found Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 12/38] ALSA: hda: Skip controller resume if not needed Sasha Levin
2020-04-24 12:44   ` Takashi Iwai
2020-04-30 22:36     ` Roy Spliet
2020-05-01  1:17       ` Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 13/38] ALSA: hda: Explicitly permit using autosuspend if runtime PM is supported Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 14/38] drm/amdgpu: fix wrong vram lost counter increment V2 Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 15/38] scsi: target: fix PR IN / READ FULL STATUS for FC Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 16/38] scsi: target: tcmu: reset_ring should reset TCMU_DEV_BIT_BROKEN Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 17/38] clk: asm9260: fix __clk_hw_register_fixed_rate_with_accuracy typo Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 18/38] efi/x86: Don't remap text<->rodata gap read-only for mixed mode Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 19/38] objtool: Fix CONFIG_UBSAN_TRAP unreachable warnings Sasha Levin
2020-04-24 12:22 ` Sasha Levin [this message]
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 21/38] xen/xenbus: ensure xenbus_map_ring_valloc() returns proper grant status Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 22/38] ALSA: hda: call runtime_allow() for all hda controllers Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 23/38] net: stmmac: socfpga: Allow all RGMII modes Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 24/38] net/cxgb4: Check the return from t4_query_params properly Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 25/38] mac80211: fix channel switch trigger from unknown mesh peer Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 26/38] sched/isolation: Allow "isolcpus=" to skip unknown sub-parameters Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 27/38] sched/vtime: Work around an unitialized variable warning Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 28/38] i2c: remove i2c_new_probed_device API Sasha Levin
2020-04-24 13:36   ` Wolfram Sang
2020-04-25  1:51     ` Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 29/38] arm64: Delete the space separator in __emit_inst Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 30/38] i2c: tegra: Better handle case where CPU0 is busy for a long time Sasha Levin
2020-04-27  7:22   ` Thierry Reding
2020-05-01  0:59     ` Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 31/38] i2c: tegra: Synchronize DMA before termination Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 32/38] ext4: use matching invalidatepage in ext4_writepage Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 33/38] ext4: increase wait time needed before reuse of deleted inode numbers Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 34/38] ext4: convert BUG_ON's to WARN_ON's in mballoc.c Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 35/38] irqchip/gic-v4.1: Add support for VPENDBASER's Dirty+Valid signaling Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 36/38] blk-mq: Put driver tag in blk_mq_dispatch_rq_list() when no budget Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 37/38] irqchip/meson-gpio: Fix HARDIRQ-safe -> HARDIRQ-unsafe lock order Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.6 38/38] hwmon: (jc42) Fix name to have no illegal characters Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200424122237.9831-20-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=bp@suse.de \
    --cc=clang-built-linux@googlegroups.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=peterz@infradead.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).