diff options
Diffstat (limited to 'scripts/kallsyms.c')
| -rw-r--r-- | scripts/kallsyms.c | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 653b92f6d4c8..47978efe4797 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -204,6 +204,11 @@ static int symbol_in_range(const struct sym_entry *s,  	return 0;  } +static bool string_starts_with(const char *s, const char *prefix) +{ +	return strncmp(s, prefix, strlen(prefix)) == 0; +} +  static int symbol_valid(const struct sym_entry *s)  {  	const char *name = sym_name(s); @@ -211,6 +216,14 @@ static int symbol_valid(const struct sym_entry *s)  	/* if --all-symbols is not specified, then symbols outside the text  	 * and inittext sections are discarded */  	if (!all_symbols) { +		/* +		 * Symbols starting with __start and __stop are used to denote +		 * section boundaries, and should always be included: +		 */ +		if (string_starts_with(name, "__start_") || +		    string_starts_with(name, "__stop_")) +			return 1; +  		if (symbol_in_range(s, text_ranges,  				    ARRAY_SIZE(text_ranges)) == 0)  			return 0;  |