From: Thierry Treyer via B4 Relay <devnull+ttreyer.meta.com@kernel.org>
To: dwarves@vger.kernel.org, bpf@vger.kernel.org
Cc: Thierry Treyer <ttreyer@meta.com>,
acme@kernel.org, ast@kernel.org, yhs@meta.com,
andrii@kernel.org, ihor.solodrai@linux.dev,
songliubraving@meta.com, alan.maguire@oracle.com,
mykolal@meta.com
Subject: [PATCH RFC 2/3] dwarf_loader: Add name to inline expansion
Date: Wed, 16 Apr 2025 19:20:36 +0000 [thread overview]
Message-ID: <20250416-btf_inline-v1-2-e4bd2f8adae5@meta.com> (raw)
In-Reply-To: <20250416-btf_inline-v1-0-e4bd2f8adae5@meta.com>
From: Thierry Treyer <ttreyer@meta.com>
Add the name field to inline expansion. It contains the name of the
abstract origin. The name can be used to locate the origin function in
the BTF.
Surely there's a better way to find the btf_id of the original function?
Signed-off-by: Thierry Treyer <ttreyer@meta.com>
---
dwarf_loader.c | 9 +++++++++
dwarves.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/dwarf_loader.c b/dwarf_loader.c
index 24ac9afceb3793c165d3e92cfdfaf27ab67fd4d6..d7a130d138a65bad71a563cf3d629bdd7b9e6c6f 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -1376,6 +1376,15 @@ static struct inline_expansion *inline_expansion__new(Dwarf_Die *die, struct cu
dtag->decl_file = attr_string(die, DW_AT_call_file, conf);
dtag->decl_line = attr_numeric(die, DW_AT_call_line);
dwarf_tag__set_attr_type(dtag, type, die, DW_AT_abstract_origin);
+
+ Dwarf_Attribute attr_orig;
+ if (dwarf_attr(die, DW_AT_abstract_origin, &attr_orig)) {
+ Dwarf_Die die_orig;
+ if (dwarf_formref_die(&attr_orig, &die_orig)) {
+ exp->name = attr_string(&die_orig, DW_AT_name, conf);
+ }
+ }
+
exp->ip.addr = 0;
exp->high_pc = 0;
exp->nr_parms = 0;
diff --git a/dwarves.h b/dwarves.h
index 38efd6a6e2b0b0e5a571a8d12bbec33502509d8b..13b19433fe4aa7cd54ec0160c7008a33cbc17e24 100644
--- a/dwarves.h
+++ b/dwarves.h
@@ -809,6 +809,7 @@ struct ip_tag {
struct inline_expansion {
struct ip_tag ip;
+ const char *name;
size_t size;
uint64_t high_pc;
struct list_head parms;
--
2.47.1
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Treyer <ttreyer@meta.com>
To: dwarves@vger.kernel.org, bpf@vger.kernel.org
Cc: Thierry Treyer <ttreyer@meta.com>,
acme@kernel.org, ast@kernel.org, yhs@meta.com,
andrii@kernel.org, ihor.solodrai@linux.dev,
songliubraving@meta.com, alan.maguire@oracle.com,
mykolal@meta.com
Subject: [PATCH RFC 2/3] dwarf_loader: Add name to inline expansion
Date: Wed, 16 Apr 2025 19:20:36 +0000 [thread overview]
Message-ID: <20250416-btf_inline-v1-2-e4bd2f8adae5@meta.com> (raw)
In-Reply-To: <20250416-btf_inline-v1-0-e4bd2f8adae5@meta.com>
Add the name field to inline expansion. It contains the name of the
abstract origin. The name can be used to locate the origin function in
the BTF.
Surely there's a better way to find the btf_id of the original function?
Signed-off-by: Thierry Treyer <ttreyer@meta.com>
---
dwarf_loader.c | 9 +++++++++
dwarves.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/dwarf_loader.c b/dwarf_loader.c
index 24ac9afceb3793c165d3e92cfdfaf27ab67fd4d6..d7a130d138a65bad71a563cf3d629bdd7b9e6c6f 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -1376,6 +1376,15 @@ static struct inline_expansion *inline_expansion__new(Dwarf_Die *die, struct cu
dtag->decl_file = attr_string(die, DW_AT_call_file, conf);
dtag->decl_line = attr_numeric(die, DW_AT_call_line);
dwarf_tag__set_attr_type(dtag, type, die, DW_AT_abstract_origin);
+
+ Dwarf_Attribute attr_orig;
+ if (dwarf_attr(die, DW_AT_abstract_origin, &attr_orig)) {
+ Dwarf_Die die_orig;
+ if (dwarf_formref_die(&attr_orig, &die_orig)) {
+ exp->name = attr_string(&die_orig, DW_AT_name, conf);
+ }
+ }
+
exp->ip.addr = 0;
exp->high_pc = 0;
exp->nr_parms = 0;
diff --git a/dwarves.h b/dwarves.h
index 38efd6a6e2b0b0e5a571a8d12bbec33502509d8b..13b19433fe4aa7cd54ec0160c7008a33cbc17e24 100644
--- a/dwarves.h
+++ b/dwarves.h
@@ -809,6 +809,7 @@ struct ip_tag {
struct inline_expansion {
struct ip_tag ip;
+ const char *name;
size_t size;
uint64_t high_pc;
struct list_head parms;
--
2.47.1
next prev parent reply other threads:[~2025-04-16 19:21 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-16 19:20 [PATCH RFC 0/3] list inline expansions in .BTF.inline Thierry Treyer via B4 Relay
2025-04-16 19:20 ` Thierry Treyer
2025-04-16 19:20 ` [PATCH RFC 1/3] dwarf_loader: Add parameters list to inlined expansion Thierry Treyer via B4 Relay
2025-04-16 19:20 ` Thierry Treyer
2025-04-16 19:20 ` Thierry Treyer via B4 Relay [this message]
2025-04-16 19:20 ` [PATCH RFC 2/3] dwarf_loader: Add name to inline expansion Thierry Treyer
2025-04-16 19:20 ` [PATCH RFC 3/3] inline_encoder: Introduce inline encoder to emit BTF.inline Thierry Treyer via B4 Relay
2025-04-16 19:20 ` Thierry Treyer
2025-04-25 18:40 ` [PATCH RFC 0/3] list inline expansions in .BTF.inline Daniel Xu
2025-04-28 20:51 ` Alexei Starovoitov
2025-04-29 19:14 ` Thierry Treyer
2025-04-29 23:58 ` Alexei Starovoitov
2025-04-30 15:25 ` Alan Maguire
2025-05-01 19:38 ` Thierry Treyer
2025-05-02 8:31 ` Alan Maguire
2025-05-19 12:02 ` Alan Maguire
2025-05-22 17:56 ` Thierry Treyer
2025-05-22 20:03 ` Andrii Nakryiko
2025-05-22 20:16 ` Eduard Zingerman
2025-05-23 18:57 ` Thierry Treyer
2025-05-26 14:30 ` Alan Maguire
2025-05-27 21:41 ` Andrii Nakryiko
2025-05-28 10:14 ` Alan Maguire
2025-05-23 17:33 ` Alexei Starovoitov
2025-05-23 18:35 ` Thierry Treyer
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=20250416-btf_inline-v1-2-e4bd2f8adae5@meta.com \
--to=devnull+ttreyer.meta.com@kernel.org \
--cc=acme@kernel.org \
--cc=alan.maguire@oracle.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=ihor.solodrai@linux.dev \
--cc=mykolal@meta.com \
--cc=songliubraving@meta.com \
--cc=ttreyer@meta.com \
--cc=yhs@meta.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.