--- ./scripts/kallsyms.c.orig 2007-06-08 12:55:49.000000000 +0100 +++ ./scripts/kallsyms.c 2007-06-08 13:19:52.000000000 +0100 @@ -378,6 +378,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 +402,7 @@ static void compress_symbols(unsigned ch 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 +421,7 @@ static void compress_symbols(unsigned ch if (size < 2) break; /* find the token on the symbol */ - p2 = memmem(p1, size, str, 2); + p2 = find_token(p1, size, str); } while (p2);