提交 9dc8c89d 编写于 作者: L Linus Torvalds

Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux

Pull ARM kallsyms fix from Rusty Russell:
 "Last minute perf unbreakage for ARM modules; spent a day in
  linux-next"

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  scripts/kallsyms: filter symbols not in kernel address space
...@@ -55,6 +55,7 @@ static struct sym_entry *table; ...@@ -55,6 +55,7 @@ static struct sym_entry *table;
static unsigned int table_size, table_cnt; static unsigned int table_size, table_cnt;
static int all_symbols = 0; static int all_symbols = 0;
static char symbol_prefix_char = '\0'; static char symbol_prefix_char = '\0';
static unsigned long long kernel_start_addr = 0;
int token_profit[0x10000]; int token_profit[0x10000];
...@@ -65,7 +66,10 @@ unsigned char best_table_len[256]; ...@@ -65,7 +66,10 @@ unsigned char best_table_len[256];
static void usage(void) static void usage(void)
{ {
fprintf(stderr, "Usage: kallsyms [--all-symbols] [--symbol-prefix=<prefix char>] < in.map > out.S\n"); fprintf(stderr, "Usage: kallsyms [--all-symbols] "
"[--symbol-prefix=<prefix char>] "
"[--page-offset=<CONFIG_PAGE_OFFSET>] "
"< in.map > out.S\n");
exit(1); exit(1);
} }
...@@ -194,6 +198,9 @@ static int symbol_valid(struct sym_entry *s) ...@@ -194,6 +198,9 @@ static int symbol_valid(struct sym_entry *s)
int i; int i;
int offset = 1; int offset = 1;
if (s->addr < kernel_start_addr)
return 0;
/* skip prefix char */ /* skip prefix char */
if (symbol_prefix_char && *(s->sym + 1) == symbol_prefix_char) if (symbol_prefix_char && *(s->sym + 1) == symbol_prefix_char)
offset++; offset++;
...@@ -646,6 +653,9 @@ int main(int argc, char **argv) ...@@ -646,6 +653,9 @@ int main(int argc, char **argv)
if ((*p == '"' && *(p+2) == '"') || (*p == '\'' && *(p+2) == '\'')) if ((*p == '"' && *(p+2) == '"') || (*p == '\'' && *(p+2) == '\''))
p++; p++;
symbol_prefix_char = *p; symbol_prefix_char = *p;
} else if (strncmp(argv[i], "--page-offset=", 14) == 0) {
const char *p = &argv[i][14];
kernel_start_addr = strtoull(p, NULL, 16);
} else } else
usage(); usage();
} }
......
...@@ -82,6 +82,8 @@ kallsyms() ...@@ -82,6 +82,8 @@ kallsyms()
kallsymopt="${kallsymopt} --all-symbols" kallsymopt="${kallsymopt} --all-symbols"
fi fi
kallsymopt="${kallsymopt} --page-offset=$CONFIG_PAGE_OFFSET"
local aflags="${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \ local aflags="${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \
${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS}" ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS}"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册