On Mon, 2024-09-23 at 12:54 +0200, Jiri Olsa wrote: [...] > > > diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h > > > index c0e3e1426a82..c10b163dc340 100644 > > > --- a/include/linux/btf_ids.h > > > +++ b/include/linux/btf_ids.h > > > @@ -89,6 +89,7 @@ word \ > > > #define __BTF_ID_LIST(name, scope) \ > > > asm( \ > > > ".pushsection " BTF_IDS_SECTION ",\"a\"; \n" \ > > > +".balign 4, 0; \n" \ > > > "." #scope " " #name "; \n" \ > > > #name ":; \n" \ > > > ".popsection; \n"); > > > > This forces all id list symbols to be aligned on 4 bytes. > > Should the same be done for __BTF_SET_START? > > it seems all the set macros use __BTF_ID_LIST, so it should be taken > care of by that Apologies, I don't know how I missed __BTF_ID_LIST invocation in the __BTF_SET_START definition :( > > Also, is it guaranteed that all btf ids are organized in lists and sets? > > Grepping through the code it seems they are, but it looks like resolve_btfids > > does not really enforce this, simply looking for symbols matching a special name > > __BTF_ID__<type>__<symbol>[__<id>] . > > yes, you need the BTF_ID to be part of list or set to be able to access it > > resolve_btfids does not enforce some loose BTF_ID definition without list/set, > but that does not seem to be a problem Understood, thank you.