mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "tip-bot2 for Brian Johannesmeyer" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Brian Johannesmeyer <bjohannesmeyer@gmail.com>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: objtool/core] scripts/faddr2line: Combine three readelf calls into one
Date: Mon, 08 Jul 2024 11:49:26 -0000	[thread overview]
Message-ID: <172043936609.2215.5281286773212396391.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20240415145538.1938745-3-bjohannesmeyer@gmail.com>

The following commit has been merged into the objtool/core branch of tip:

Commit-ID:     b8d9d9496c1e78a8fd89f4fe9923d12b3c9ad8a3
Gitweb:        https://git.kernel.org/tip/b8d9d9496c1e78a8fd89f4fe9923d12b3c9ad8a3
Author:        Brian Johannesmeyer <bjohannesmeyer@gmail.com>
AuthorDate:    Mon, 15 Apr 2024 16:55:33 +02:00
Committer:     Josh Poimboeuf <jpoimboe@kernel.org>
CommitterDate: Tue, 02 Jul 2024 23:38:36 -07:00

scripts/faddr2line: Combine three readelf calls into one

Rather than calling readelf three separate times to collect three different
types of info, call it only once, and parse out the different types of info
from its output.

Signed-off-by: Brian Johannesmeyer <bjohannesmeyer@gmail.com>
Link: https://lore.kernel.org/r/20240415145538.1938745-3-bjohannesmeyer@gmail.com
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
 scripts/faddr2line | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/scripts/faddr2line b/scripts/faddr2line
index bf394bf..f011bda 100755
--- a/scripts/faddr2line
+++ b/scripts/faddr2line
@@ -105,10 +105,14 @@ find_dir_prefix() {
 
 run_readelf() {
 	local objfile=$1
-
-	ELF_FILEHEADER=$(${READELF} --file-header $objfile)
-	ELF_SECHEADERS=$(${READELF} --section-headers --wide $objfile)
-	ELF_SYMS=$(${READELF} --symbols --wide $objfile)
+	local out=$(${READELF} --file-header --section-headers --symbols --wide $objfile)
+
+	# This assumes that readelf first prints the file header, then the section headers, then the symbols.
+	# Note: It seems that GNU readelf does not prefix section headers with the "There are X section headers"
+	# line when multiple options are given, so let's also match with the "Section Headers:" line.
+	ELF_FILEHEADER=$(echo "${out}" | sed -n '/There are [0-9]* section headers, starting at offset\|Section Headers:/q;p')
+	ELF_SECHEADERS=$(echo "${out}" | sed -n '/There are [0-9]* section headers, starting at offset\|Section Headers:/,$p' | sed -n '/Symbol table .* contains [0-9]* entries:/q;p')
+	ELF_SYMS=$(echo "${out}" | sed -n '/Symbol table .* contains [0-9]* entries:/,$p')
 }
 
 __faddr2line() {

  reply	other threads:[~2024-07-08 11:49 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-15 14:55 [PATCH v2 0/7] Improve performance of 'faddr2line' Brian Johannesmeyer
2024-04-15 14:55 ` [PATCH v2 1/7] scripts/faddr2line: Reduce number of readelf calls to three Brian Johannesmeyer
2024-07-08 11:49   ` [tip: objtool/core] " tip-bot2 for Brian Johannesmeyer
2024-04-15 14:55 ` [PATCH v2 2/7] scripts/faddr2line: Combine three readelf calls into one Brian Johannesmeyer
2024-07-08 11:49   ` tip-bot2 for Brian Johannesmeyer [this message]
2024-04-15 14:55 ` [PATCH v2 3/7] scripts/faddr2line: Check vmlinux only once Brian Johannesmeyer
2024-07-08 11:49   ` [tip: objtool/core] " tip-bot2 for Brian Johannesmeyer
2024-04-15 14:55 ` [PATCH v2 4/7] scripts/faddr2line: Pass --addresses argument to addr2line Brian Johannesmeyer
2024-07-08 11:49   ` [tip: objtool/core] " tip-bot2 for Brian Johannesmeyer
2024-04-15 14:55 ` [PATCH v2 5/7] scripts/faddr2line: Invoke addr2line as a single long-running process Brian Johannesmeyer
2024-07-08 11:49   ` [tip: objtool/core] " tip-bot2 for Brian Johannesmeyer
2024-04-15 14:55 ` [PATCH v2 6/7] scripts/faddr2line: Remove call to addr2line from find_dir_prefix() Brian Johannesmeyer
2024-07-08 11:49   ` [tip: objtool/core] " tip-bot2 for Brian Johannesmeyer
2024-04-15 14:55 ` [PATCH v2 7/7] scripts/faddr2line: Check only two symbols when calculating symbol size Brian Johannesmeyer
2024-07-08 11:49   ` [tip: objtool/core] " tip-bot2 for Brian Johannesmeyer

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=172043936609.2215.5281286773212396391.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=bjohannesmeyer@gmail.com \
    --cc=jpoimboe@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=x86@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

all inboxes | Powered by JetHome®