scripts/kallsyms: move compiler-generated symbol patterns to mksysmap
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 8 Mar 2023 11:52:40 +0000 (20:52 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Mon, 17 Apr 2023 02:03:56 +0000 (11:03 +0900)
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 c17a2538704f ("mksysmap: Fix
the mismatch of 'L0' symbols in System.map").

They were separately maintained prior to commit 94ff2f63d6a3 ("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>
scripts/kallsyms.c
scripts/mksysmap

index 0325d0d..97d514c 100644 (file)
@@ -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;
 
index ff91ec8..cb3b1ff 100755 (executable)
@@ -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
 
@@ -47,12 +69,33 @@ ${NM} -n ${1} | sed >${2} -e "
 / __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)
 
 # 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
 #