linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] scripts/kallsyms: filter symbols not in kernel address space
       [not found]   ` <CACVXFVMJmQJd0cFaZcmZZvFpUQUmTPJRj87QBVr0kbgZxjq8dw@mail.gmail.com>
@ 2013-11-01  2:36     ` Rusty Russell
  2013-11-01  4:38       ` Stephen Rothwell
  0 siblings, 1 reply; 2+ messages in thread
From: Rusty Russell @ 2013-11-01  2:36 UTC (permalink / raw)
  To: Ming Lei, Andrew Morton
  Cc: Linux Kernel Mailing List, Russell King, linux-arm-kernel,
	Michal Marek, Stephen Rothwell, linux-next

From: Ming Lei <tom.leiming@gmail.com>

This patch uses CONFIG_PAGE_OFFSET to filter symbols which
are not in kernel address space because these symbols are
generally for generating code purpose and can't be run at
kernel mode, so we needn't keep them in /proc/kallsyms.

For example, on ARM there are some symbols which may be
linked in relocatable code section, then perf can't parse
symbols any more from /proc/kallsyms, this patch fixes the
problem (introduced b9b32bf70f2fb710b07c94e13afbc729afe221da)

Cc: Russell King <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org
Cc: Michal Marek <mmarek@suse.cz>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: stable@kernel.org
---
Stephen, please run this on todays' linux-next, so I can push to Linus
asap.  Thanks...

 scripts/kallsyms.c      | 12 +++++++++++-
 scripts/link-vmlinux.sh |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
index 487ac6f..9a11f9f 100644
--- a/scripts/kallsyms.c
+++ b/scripts/kallsyms.c
@@ -55,6 +55,7 @@ static struct sym_entry *table;
 static unsigned int table_size, table_cnt;
 static int all_symbols = 0;
 static char symbol_prefix_char = '\0';
+static unsigned long long kernel_start_addr = 0;
 
 int token_profit[0x10000];
 
@@ -65,7 +66,10 @@ unsigned char best_table_len[256];
 
 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);
 }
 
@@ -194,6 +198,9 @@ static int symbol_valid(struct sym_entry *s)
 	int i;
 	int offset = 1;
 
+	if (s->addr < kernel_start_addr)
+		return 0;
+
 	/* skip prefix char */
 	if (symbol_prefix_char && *(s->sym + 1) == symbol_prefix_char)
 		offset++;
@@ -646,6 +653,9 @@ int main(int argc, char **argv)
 				if ((*p == '"' && *(p+2) == '"') || (*p == '\'' && *(p+2) == '\''))
 					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
 				usage();
 		}
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
index 0149949..32b10f5 100644
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -82,6 +82,8 @@ kallsyms()
 		kallsymopt="${kallsymopt} --all-symbols"
 	fi
 
+	kallsymopt="${kallsymopt} --page-offset=$CONFIG_PAGE_OFFSET"
+
 	local aflags="${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL}               \
 		      ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS}"
 

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] scripts/kallsyms: filter symbols not in kernel address space
  2013-11-01  2:36     ` [PATCH] scripts/kallsyms: filter symbols not in kernel address space Rusty Russell
@ 2013-11-01  4:38       ` Stephen Rothwell
  0 siblings, 0 replies; 2+ messages in thread
From: Stephen Rothwell @ 2013-11-01  4:38 UTC (permalink / raw)
  To: Rusty Russell
  Cc: Ming Lei, Andrew Morton, Linux Kernel Mailing List, Russell King,
	linux-arm-kernel, Michal Marek, linux-next

[-- Attachment #1: Type: text/plain, Size: 324 bytes --]

Hi Rusty,

On Fri, 01 Nov 2013 13:06:27 +1030 Rusty Russell <rusty@rustcorp.com.au> wrote:
>
> Stephen, please run this on todays' linux-next, so I can push to Linus
> asap.  Thanks...

OK, I will apply this near the end of linux-next today.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-11-01  6:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1382975339-25831-1-git-send-email-tom.leiming@gmail.com>
     [not found] ` <20131031154311.e65d16d79ba540ced736413b@linux-foundation.org>
     [not found]   ` <CACVXFVMJmQJd0cFaZcmZZvFpUQUmTPJRj87QBVr0kbgZxjq8dw@mail.gmail.com>
2013-11-01  2:36     ` [PATCH] scripts/kallsyms: filter symbols not in kernel address space Rusty Russell
2013-11-01  4:38       ` Stephen Rothwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).