diff options
Diffstat (limited to 'scripts/kallsyms.c')
| -rw-r--r-- | scripts/kallsyms.c | 17 | 
1 files changed, 13 insertions, 4 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 10b006694e5..1f11d848532 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -24,8 +24,6 @@   *   */ -#define _GNU_SOURCE -  #include <stdio.h>  #include <stdlib.h>  #include <string.h> @@ -378,6 +376,17 @@ static void build_initial_tok_table(void)  	table_cnt = pos;  } +static void *find_token(unsigned char *str, int len, unsigned char *token) +{ +	int i; + +	for (i = 0; i < len - 1; i++) { +		if (str[i] == token[0] && str[i+1] == token[1]) +			return &str[i]; +	} +	return NULL; +} +  /* replace a given token in all the valid symbols. Use the sampled symbols   * to update the counts */  static void compress_symbols(unsigned char *str, int idx) @@ -391,7 +400,7 @@ static void compress_symbols(unsigned char *str, int idx)  		p1 = table[i].sym;  		/* find the token on the symbol */ -		p2 = memmem(p1, len, str, 2); +		p2 = find_token(p1, len, str);  		if (!p2) continue;  		/* decrease the counts for this symbol's tokens */ @@ -410,7 +419,7 @@ static void compress_symbols(unsigned char *str, int idx)  			if (size < 2) break;  			/* find the token on the symbol */ -			p2 = memmem(p1, size, str, 2); +			p2 = find_token(p1, size, str);  		} while (p2);  | 
