Commit 7c5d249ad3fb6ce3815c1ed5f04bece02a3e7030
Committed by
Sam Ravnborg
1 parent
af332aa387
Exists in
master
and in
7 other branches
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>
Showing 1 changed file with 13 additions and 4 deletions Side-by-side Diff
scripts/kallsyms.c
... | ... | @@ -24,8 +24,6 @@ |
24 | 24 | * |
25 | 25 | */ |
26 | 26 | |
27 | -#define _GNU_SOURCE | |
28 | - | |
29 | 27 | #include <stdio.h> |
30 | 28 | #include <stdlib.h> |
31 | 29 | #include <string.h> |
... | ... | @@ -378,6 +376,17 @@ |
378 | 376 | table_cnt = pos; |
379 | 377 | } |
380 | 378 | |
379 | +static void *find_token(unsigned char *str, int len, unsigned char *token) | |
380 | +{ | |
381 | + int i; | |
382 | + | |
383 | + for (i = 0; i < len - 1; i++) { | |
384 | + if (str[i] == token[0] && str[i+1] == token[1]) | |
385 | + return &str[i]; | |
386 | + } | |
387 | + return NULL; | |
388 | +} | |
389 | + | |
381 | 390 | /* replace a given token in all the valid symbols. Use the sampled symbols |
382 | 391 | * to update the counts */ |
383 | 392 | static void compress_symbols(unsigned char *str, int idx) |
... | ... | @@ -391,7 +400,7 @@ |
391 | 400 | p1 = table[i].sym; |
392 | 401 | |
393 | 402 | /* find the token on the symbol */ |
394 | - p2 = memmem(p1, len, str, 2); | |
403 | + p2 = find_token(p1, len, str); | |
395 | 404 | if (!p2) continue; |
396 | 405 | |
397 | 406 | /* decrease the counts for this symbol's tokens */ |
... | ... | @@ -410,7 +419,7 @@ |
410 | 419 | if (size < 2) break; |
411 | 420 | |
412 | 421 | /* find the token on the symbol */ |
413 | - p2 = memmem(p1, size, str, 2); | |
422 | + p2 = find_token(p1, size, str); | |
414 | 423 | |
415 | 424 | } while (p2); |
416 | 425 |