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, commitc17a253870
("mksysmap: Fix the mismatch of 'L0' symbols in System.map"). They were separately maintained prior to commit94ff2f63d6
("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: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
This commit is contained in:
Родитель
ca09bf48f9
Коммит
320e7c9d44
|
@ -102,66 +102,6 @@ static char *sym_name(const struct sym_entry *s)
|
||||||
|
|
||||||
static bool is_ignored_symbol(const char *name, char type)
|
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')
|
if (type == 'u' || type == 'n')
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,28 @@ ${NM} -n ${1} | sed >${2} -e "
|
||||||
# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
|
# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
|
||||||
/ \.L/d
|
/ \.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 from modversions
|
||||||
/ __crc_/d
|
/ __crc_/d
|
||||||
|
|
||||||
|
@ -46,6 +68,15 @@ ${NM} -n ${1} | sed >${2} -e "
|
||||||
# EXPORT_SYMBOL (namespace)
|
# EXPORT_SYMBOL (namespace)
|
||||||
/ __kstrtabns_/d
|
/ __kstrtabns_/d
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Ignored suffixes
|
||||||
|
# (do not forget '$' after each pattern)
|
||||||
|
|
||||||
|
# arm
|
||||||
|
/_from_arm$/d
|
||||||
|
/_from_thumb$/d
|
||||||
|
/_veneer$/d
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Ignored symbols (exact match)
|
# Ignored symbols (exact match)
|
||||||
# (do not forget a space before and '$' after each pattern)
|
# (do not forget a space before and '$' after each pattern)
|
||||||
|
@ -53,6 +84,18 @@ ${NM} -n ${1} | sed >${2} -e "
|
||||||
# for LoongArch?
|
# for LoongArch?
|
||||||
/ L0$/d
|
/ 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
|
# Ignored kallsyms symbols
|
||||||
#
|
#
|
||||||
|
|
Загрузка…
Ссылка в новой задаче