[PATCH dwarves 2/2] tests: add decl tag struct member test

Alan Maguire <[email protected]> Fri, 19 Jun 2026 16:21:03 +0100
Newsgroups org.kernel.vger.dwarves
Message-ID <[email protected]>
Extend the decl-tag selftest with a tagged member and verify
it is displayed.

Signed-off-by: Alan Maguire <[email protected]>
---
 tests/pfunct-btf-decl-tags.sh | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/tests/pfunct-btf-decl-tags.sh b/tests/pfunct-btf-decl-tags.sh
index 520148b..89050d1 100755
--- a/tests/pfunct-btf-decl-tags.sh
+++ b/tests/pfunct-btf-decl-tags.sh
@@ -43,6 +43,12 @@ __tag(a) __tag(b)          void bar(void) {}
 __tag(a)                   void buz(void) {}
 void qux(int __tag(param_a) arg) {}
 
+struct tagged {
+	int __tag(member_tag) member;
+};
+
+struct tagged tagged_global;
+
 EOF
 )
 
@@ -72,18 +78,18 @@ void qux(param_a int arg);
 EOF
 )
 
+expected_member="member_tag int member;"
+
 run_test() {
 	local compiler=$1
 	local tmpobj=$2
+	local member_out
 
 	info_log "Testing with $compiler"
 	out=$(pfunct -P -F btf $tmpobj | awk "$sort_tags" | sort)
 	d=$(diff -u <(echo "$expected") <(echo "$out"))
 
-	if [[ "$d" == "" ]]; then
-		info_log "  passed"
-		return 0
-	else
+	if [[ "$d" != "" ]]; then
 		error_log "pfunct output does not match expected ($compiler):"
 		info_log "$d"
 		info_log
@@ -91,6 +97,23 @@ run_test() {
 		info_log "$out"
 		return 1
 	fi
+
+	member_out=$(pahole -F btf $tmpobj | awk '
+		/member_tag/ {
+			sub(/;.*/, ";");
+			gsub(/[[:space:]]+/, " ");
+			sub(/^ /, "");
+			print;
+		}')
+	if [[ "$member_out" != "$expected_member" ]]; then
+		error_log "pahole member decl tag output does not match expected ($compiler):"
+		info_log "expected: $expected_member"
+		info_log "got:      $member_out"
+		return 1
+	fi
+
+	info_log "  passed"
+	return 0
 }
 
 failed=0
-- 
2.43.5