From: Vineet Gupta <vineet.gupta@linux.dev>
To: dwarves@vger.kernel.org
Cc: bpf@vger.kernel.org, Andrii Nakryiko <andrii@kernel.org>,
acme@kernel.org, Alan Maguire <alan.maguire@oracle.com>,
jose.marchesi@oracle.com, David Faust <david.faust@oracle.com>,
Vineet Gupta <vineet.gupta@linux.dev>
Subject: [PATCH 1/2] dwarf_loader: Extract die__add_btf_type_tag() helper
Date: Tue, 26 May 2026 11:18:17 -0700 [thread overview]
Message-ID: <20260526181818.4159927-1-vineet.gupta@linux.dev> (raw)
Extract the btf_type_tag annotation creation logic from
die__create_new_pointer_tag() into a reusable die__add_btf_type_tag()
helper. Pure refactor with no functional change, preparing for
DW_TAG_GNU_annotation support.
Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
---
dwarf_loader.c | 54 +++++++++++++++++++++++++++-----------------------
1 file changed, 29 insertions(+), 25 deletions(-)
diff --git a/dwarf_loader.c b/dwarf_loader.c
index 16fb7becffee..365cc24e212d 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -1600,14 +1600,40 @@ static struct btf_type_tag_type *die__create_new_btf_type_tag_type(Dwarf_Die *di
return tag;
}
+static int die__add_btf_type_tag(struct btf_type_tag_ptr_type **tagp,
+ Dwarf_Die *die, Dwarf_Die *adie,
+ struct cu *cu, struct conf_load *conf)
+{
+ struct btf_type_tag_type *annot;
+ uint32_t id;
+
+ if (*tagp == NULL) {
+ *tagp = die__create_new_btf_type_tag_ptr_type(die, cu);
+ if (!*tagp)
+ return -ENOMEM;
+ }
+
+ annot = die__create_new_btf_type_tag_type(adie, cu, conf);
+ if (annot == NULL)
+ return -ENOMEM;
+
+ if (cu__table_add_tag(cu, &annot->tag, &id) < 0)
+ return -ENOMEM;
+
+ struct dwarf_tag *dtag = tag__dwarf(&annot->tag);
+ dtag->small_id = id;
+ cu__hash(cu, &annot->tag);
+
+ list_add(&annot->node, &(*tagp)->tags);
+ return 0;
+}
+
static struct tag *die__create_new_pointer_tag(Dwarf_Die *die, struct cu *cu,
struct conf_load *conf)
{
struct btf_type_tag_ptr_type *tag = NULL;
- struct btf_type_tag_type *annot;
Dwarf_Die *cdie, child;
const char *name;
- uint32_t id;
/* If no child tags or skipping btf_type_tag encoding, just create a new tag
* and return
@@ -1622,34 +1648,12 @@ static struct tag *die__create_new_pointer_tag(Dwarf_Die *die, struct cu *cu,
if (dwarf_tag(cdie) != DW_TAG_LLVM_annotation)
continue;
- /* Only check btf_type_tag annotations */
name = attr_string(cdie, DW_AT_name, conf);
if (strcmp(name, "btf_type_tag") != 0)
continue;
- if (tag == NULL) {
- /* Create a btf_type_tag_ptr type. */
- tag = die__create_new_btf_type_tag_ptr_type(die, cu);
- if (!tag)
- return NULL;
- }
-
- /* Create a btf_type_tag type for this annotation. */
- annot = die__create_new_btf_type_tag_type(cdie, cu, conf);
- if (annot == NULL)
+ if (die__add_btf_type_tag(&tag, die, cdie, cu, conf))
return NULL;
-
- if (cu__table_add_tag(cu, &annot->tag, &id) < 0)
- return NULL;
-
- struct dwarf_tag *dtag = tag__dwarf(&annot->tag);
- dtag->small_id = id;
- cu__hash(cu, &annot->tag);
-
- /* For a list of DW_TAG_LLVM_annotation like tag1 -> tag2 -> tag3,
- * the tag->tags contains tag3 -> tag2 -> tag1.
- */
- list_add(&annot->node, &tag->tags);
} while (dwarf_siblingof(cdie, cdie) == 0);
return tag ? &tag->tag : tag__new(die, cu);
--
2.54.0
next reply other threads:[~2026-05-26 18:18 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 18:18 Vineet Gupta [this message]
2026-05-26 18:18 ` [PATCH 2/2] Add support for DW_TAG_GNU_annotation Vineet Gupta
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=20260526181818.4159927-1-vineet.gupta@linux.dev \
--to=vineet.gupta@linux.dev \
--cc=acme@kernel.org \
--cc=alan.maguire@oracle.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=david.faust@oracle.com \
--cc=dwarves@vger.kernel.org \
--cc=jose.marchesi@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox