X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fkallsyms.c;h=1f11d848532a0474b342ca462a905af4f044b2f6;hb=b4010e08907bdafe8bf4a3fe7ef9b52ddec4dda5;hp=f359b730c2c57572b46f47f7c344137c7b5f9c55;hpb=21b4e736922f546e0f1aa7b9d6c442f309a2444a;p=linux-2.6-omap-h63xx.git diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index f359b730c2c..1f11d848532 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -24,14 +24,12 @@ * */ -#define _GNU_SOURCE - #include #include #include #include -#define KSYM_NAME_LEN 127 +#define KSYM_NAME_LEN 128 struct sym_entry { @@ -254,7 +252,7 @@ static void write_src(void) unsigned int i, k, off; unsigned int best_idx[256]; unsigned int *markers; - char buf[KSYM_NAME_LEN+1]; + char buf[KSYM_NAME_LEN]; printf("#include \n"); printf("#if BITS_PER_LONG == 64\n"); @@ -265,7 +263,7 @@ static void write_src(void) printf("#define ALGN .align 4\n"); printf("#endif\n"); - printf(".data\n"); + printf("\t.section .rodata, \"a\"\n"); /* Provide proper symbols relocatability by their '_text' * relativeness. The symbol names cannot be used to construct @@ -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);