Commit 320e7c9d authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

scripts/kallsyms: move compiler-generated symbol patterns to mksysmap



scripts/kallsyms.c maintains compiler-generated symbols, but we end up
with something similar in scripts/mksysmap to avoid the "Inconsistent
kallsyms data" error. For example, commit c17a2538 ("mksysmap: Fix
the mismatch of 'L0' symbols in System.map").

They were separately maintained prior to commit 94ff2f63 ("kbuild:
reuse mksysmap output for kallsyms").

Now that scripts/kallsyms.c parses the output of scripts/mksysmap,
it makes more sense to collect all the ignored patterns to mksysmap.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
parent ca09bf48
Loading
Loading
Loading
Loading
+0 −60
Original line number Diff line number Diff line
@@ -102,66 +102,6 @@ static char *sym_name(const struct sym_entry *s)

static bool is_ignored_symbol(const char *name, char type)
{
	/* Symbol names that exactly match to the following are ignored.*/
	static const char * const ignored_symbols[] = {
		/* Exclude linker generated symbols which vary between passes */
		"_SDA_BASE_",		/* ppc */
		"_SDA2_BASE_",		/* ppc */
		NULL
	};

	/* Symbol names that begin with the following are ignored.*/
	static const char * const ignored_prefixes[] = {
		"__efistub_",		/* arm64 EFI stub namespace */
		"__kvm_nvhe_$",		/* arm64 local symbols in non-VHE KVM namespace */
		"__kvm_nvhe_.L",	/* arm64 local symbols in non-VHE KVM namespace */
		"__AArch64ADRPThunk_",	/* arm64 lld */
		"__ARMV5PILongThunk_",	/* arm lld */
		"__ARMV7PILongThunk_",
		"__ThumbV7PILongThunk_",
		"__LA25Thunk_",		/* mips lld */
		"__microLA25Thunk_",
		"__kcfi_typeid_",	/* CFI type identifiers */
		NULL
	};

	/* Symbol names that end with the following are ignored.*/
	static const char * const ignored_suffixes[] = {
		"_from_arm",		/* arm */
		"_from_thumb",		/* arm */
		"_veneer",		/* arm */
		NULL
	};

	/* Symbol names that contain the following are ignored.*/
	static const char * const ignored_matches[] = {
		".long_branch.",	/* ppc stub */
		".plt_branch.",		/* ppc stub */
		NULL
	};

	const char * const *p;

	for (p = ignored_symbols; *p; p++)
		if (!strcmp(name, *p))
			return true;

	for (p = ignored_prefixes; *p; p++)
		if (!strncmp(name, *p, strlen(*p)))
			return true;

	for (p = ignored_suffixes; *p; p++) {
		int l = strlen(name) - strlen(*p);

		if (l >= 0 && !strcmp(name + l, *p))
			return true;
	}

	for (p = ignored_matches; *p; p++) {
		if (strstr(name, *p))
			return true;
	}

	if (type == 'u' || type == 'n')
		return true;

+43 −0
Original line number Diff line number Diff line
@@ -37,6 +37,28 @@ ${NM} -n ${1} | sed >${2} -e "
# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
/ \.L/d

# arm64 EFI stub namespace
/ __efistub_/d

# arm64 local symbols in non-VHE KVM namespace
/ __kvm_nvhe_\$/d
/ __kvm_nvhe_\.L/d

# arm64 lld
/ __AArch64ADRPThunk_/d

# arm lld
/ __ARMV5PILongThunk_/d
/ __ARMV7PILongThunk_/d
/ __ThumbV7PILongThunk_/d

# mips lld
/ __LA25Thunk_/d
/ __microLA25Thunk_/d

# CFI type identifiers
/ __kcfi_typeid_/d

# CRC from modversions
/ __crc_/d

@@ -46,6 +68,15 @@ ${NM} -n ${1} | sed >${2} -e "
# EXPORT_SYMBOL (namespace)
/ __kstrtabns_/d

# ---------------------------------------------------------------------------
# Ignored suffixes
#  (do not forget '$' after each pattern)

# arm
/_from_arm$/d
/_from_thumb$/d
/_veneer$/d

# ---------------------------------------------------------------------------
# Ignored symbols (exact match)
#  (do not forget a space before and '$' after each pattern)
@@ -53,6 +84,18 @@ ${NM} -n ${1} | sed >${2} -e "
# for LoongArch?
/ L0$/d

# ppc
/ _SDA_BASE_$/d
/ _SDA2_BASE_$/d

# ---------------------------------------------------------------------------
# Ignored patterns
#  (symbols that contain the pattern are ignored)

# ppc stub
/\.long_branch\./d
/\.plt_branch\./d

# ---------------------------------------------------------------------------
# Ignored kallsyms symbols
#