mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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:
		
							parent
							
								
									ca09bf48f9
								
							
						
					
					
						commit
						320e7c9d44
					
				
					 2 changed files with 43 additions and 60 deletions
				
			
		| 
						 | 
					@ -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
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue