--- ./scripts/kallsyms.c.orig 2005-07-28 11:31:29.000000000 +0100 +++ ./scripts/kallsyms.c 2005-07-28 11:33:58.000000000 +0100 @@ -150,11 +150,13 @@ static int symbol_valid(struct sym_entry "_SDA2_BASE_", /* ppc */ NULL }; int i; - int offset = 1; + char *name; + + name = (char *) s->sym + 1; /* skip prefix char */ - if (symbol_prefix_char && *(s->sym + 1) == symbol_prefix_char) - offset++; + if (symbol_prefix_char && *name == symbol_prefix_char) + name++; /* if --all-symbols is not specified, then symbols outside the text * and inittext sections are discarded */ @@ -169,18 +171,18 @@ static int symbol_valid(struct sym_entry * move then they may get dropped in pass 2, which breaks the * kallsyms rules. */ - if ((s->addr == _etext && strcmp(s->sym + offset, "_etext")) || - (s->addr == _einittext && strcmp(s->sym + offset, "_einittext")) || - (s->addr == _eextratext && strcmp(s->sym + offset, "_eextratext"))) + if ((s->addr == _etext && strcmp(name, "_etext")) || + (s->addr == _einittext && strcmp(name, "_einittext")) || + (s->addr == _eextratext && strcmp(name, "_eextratext"))) return 0; } /* Exclude symbols which vary between passes. */ - if (strstr((char *)s->sym + offset, "_compiled.")) + if (strstr(name, "_compiled.")) return 0; for (i = 0; special_symbols[i]; i++) - if( strcmp((char *)s->sym + offset, special_symbols[i]) == 0 ) + if( strcmp(name, special_symbols[i]) == 0 ) return 0; return 1;