Commit 16d0e04f authored by Siddharth Nayyar's avatar Siddharth Nayyar Committed by Sami Tolvanen
Browse files

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: default avatarSiddharth Nayyar <sidnayyar@google.com>
Reviewed-by: default avatarPetr Pavlu <petr.pavlu@suse.com>
Signed-off-by: default avatarSami Tolvanen <samitolvanen@google.com>
parent 9743311b
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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__ */
+8 −0
Original line number Diff line number Diff line
@@ -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)