module: populate kflagstab in modpost

This patch adds the ability to create entries for kernel symbol flag
bitsets in kflagstab. Modpost populates only the GPL-only flag for now.

Signed-off-by: Siddharth Nayyar <sidnayyar@google.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
This commit is contained in:
Siddharth Nayyar
2026-03-26 21:25:04 +00:00
committed by Sami Tolvanen
parent 9743311b45
commit 16d0e04f54
2 changed files with 15 additions and 0 deletions

View File

@@ -69,4 +69,11 @@
".long " #crc "\n" \
".previous" "\n")
#define SYMBOL_FLAGS(sym, flags) \
asm(" .section \"___kflagstab+" #sym "\",\"a\"" "\n" \
"__flags_" #sym ":" "\n" \
" .byte " #flags "\n" \
" .previous" "\n" \
)
#endif /* __LINUX_EXPORT_INTERNAL_H__ */

View File

@@ -244,6 +244,11 @@ static struct symbol *alloc_symbol(const char *name)
return s;
}
static uint8_t get_symbol_flags(const struct symbol *sym)
{
return sym->is_gpl_only ? KSYM_FLAG_GPL_ONLY : 0;
}
/* For the hash of exported symbols */
static void hash_add_symbol(struct symbol *sym)
{
@@ -1874,6 +1879,9 @@ static void add_exported_symbols(struct buffer *buf, struct module *mod)
buf_printf(buf, "KSYMTAB_%s(%s, \"%s\", \"%s\");\n",
sym->is_func ? "FUNC" : "DATA", sym->name,
sym->is_gpl_only ? "_gpl" : "", sym->namespace);
buf_printf(buf, "SYMBOL_FLAGS(%s, 0x%02x);\n",
sym->name, get_symbol_flags(sym));
}
if (!modversions)