[Bug debug/125888] btf_type_tag for types not supported for defined struct
vineetg at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jun 18 20:18:30 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125888
--- Comment #1 from Vineet Gupta <vineetg at gcc dot gnu.org> ---
Clang recently started supporting this
commit 5754a48780f516cbc06eeb2a31b1e445ddd9c935
Author: yonghong-song <yhs@fb.com>
Date: Mon Jun 15 10:51:02 2026 -0700
[Clang][BPF] Support btf_type_tag on typedef underlying types (#203089)
Emil Tsalapatis suggested to add type tag for typedef like below:
```
$ cat tag.c
#define __type_tag(x) __attribute__((btf_type_tag(x)))
struct bar { int c; int d; };
typedef struct bar __type_tag("a") bar_t;
int use(bar_t *v)
{
return v->c + v->d;
}
```
This makes the code simpler -- using `bar_t *v` instead of the longer
form `struct bar __type_tag("a") *v`.
So the goal is to allow type tag for typedef underlying types. The
following describes the main changes:
- CGDebugInfo: factor the btf_type_tag walk out of CreatePointerLikeType
into a new CollectBTFTypeTagAnnotations() helper, and use it when
emitting a typedef's DIDerivedType so the typedef carries both its
btf_decl_tag annotations (on the declaration) and the btf_type_tag
annotations (on the underlying type).
- BPF BTFDebug: emit type tags for DW_TAG_typedef the same way they are
emitted for DW_TAG_pointer_type, building the intermediate
BTF_KIND_TYPE_TAG chain. The BTFTypeDerived constructor now selects
BTF_KIND_PTR or BTF_KIND_TYPEDEF based on the DWARF tag.
More information about the Gcc-bugs
mailing list