diff options
author | Paulo Marques <pmarques@grupopie.com> | 2007-06-20 18:09:00 +0100 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-07-17 14:36:08 +0200 |
commit | 7c5d249ad3fb6ce3815c1ed5f04bece02a3e7030 (patch) | |
tree | ed6b276908a6c5a474ec624f92c94b83f572b64c /scripts | |
parent | af332aa3876eaf39b159d345c86b744832ec4336 (diff) |
kallsyms: remove usage of memmem and _GNU_SOURCE from scripts/kallsyms.c
The only in-kernel user of "memmem" is scripts/kallsyms.c and it only
uses it to find tokens that are 2 bytes in size. It is trivial to
replace it with a simple function that finds 2-byte tokens.
This should help users from systems that don't have the memmem GNU
extension available.
Signed-off-by: Paulo Marques <pmarques@grupopie.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts')
-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 8b809b264d1..caf4c86c3d0 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); |