From: Rusty Russell <rusty@rustcorp.com.au>
To: Paul Mackerras <paulus@samba.org>, Andrew Morton <akpm@osdl.org>
Cc: lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>,
Sam Ravnborg <sam@ravnborg.org>
Subject: [PATCH] All Symbols in /proc/kallsyms
Date: Mon, 10 May 2004 15:28:37 +1000 [thread overview]
Message-ID: <1084166916.8127.46.camel@bach> (raw)
Debuggers (ie. xmon) can use kallsyms, but they want all symbols, not
just functions. Fair enough.
Name: Debugging Option to Put text symbols in kallsyms
Status: Tested on 2.6.6-rc3-bk11
kallsyms contains only function names, but some debuggers (eg. xmon on
PPC/PPC64) use it to lookup symbols: it'd be much nicer if it included
data symbols too.
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .5274-linux-2.6.6-rc2-bk4/Makefile .5274-linux-2.6.6-rc2-bk4.updated/Makefile
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .21129-linux-2.6.6-rc2-bk4/Makefile .21129-linux-2.6.6-rc2-bk4.updated/Makefile
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .21201-linux-2.6.6-rc3-bk11/Makefile .21201-linux-2.6.6-rc3-bk11.updated/Makefile
--- .21201-linux-2.6.6-rc3-bk11/Makefile 2004-05-10 09:01:11.000000000 +1000
+++ .21201-linux-2.6.6-rc3-bk11.updated/Makefile 2004-05-10 15:09:44.000000000 +1000
@@ -567,7 +567,7 @@ ifdef CONFIG_KALLSYMS
kallsyms.o := .tmp_kallsyms2.o
quiet_cmd_kallsyms = KSYM $@
-cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) > $@
+cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) $(foreach x,$(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
.tmp_kallsyms1.o .tmp_kallsyms2.o: %.o: %.S scripts FORCE
$(call if_changed_dep,as_o_S)
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .21201-linux-2.6.6-rc3-bk11/init/Kconfig .21201-linux-2.6.6-rc3-bk11.updated/init/Kconfig
--- .21201-linux-2.6.6-rc3-bk11/init/Kconfig 2004-04-29 17:30:12.000000000 +1000
+++ .21201-linux-2.6.6-rc3-bk11.updated/init/Kconfig 2004-05-10 15:09:44.000000000 +1000
@@ -235,6 +235,17 @@ config KALLSYMS
symbolic stack backtraces. This increases the size of the kernel
somewhat, as all symbols have to be loaded into the kernel image.
+config KALLSYMS_ALL
+ bool "Include all symbols in kallsyms"
+ depends on DEBUG_KERNEL && KALLSYMS
+ help
+ Normally kallsyms only contains the symbols of functions, for nicer
+ OOPS messages. Some debuggers can use kallsyms for other
+ symbols too: say Y here to include all symbols, and you
+ don't care about adding 300k to the size of your kernel.
+
+ Say N.
+
config FUTEX
bool "Enable futex support" if EMBEDDED
default y
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .21201-linux-2.6.6-rc3-bk11/kernel/kallsyms.c .21201-linux-2.6.6-rc3-bk11.updated/kernel/kallsyms.c
--- .21201-linux-2.6.6-rc3-bk11/kernel/kallsyms.c 2004-03-12 07:57:28.000000000 +1100
+++ .21201-linux-2.6.6-rc3-bk11.updated/kernel/kallsyms.c 2004-05-10 15:10:59.000000000 +1000
@@ -183,7 +183,10 @@ static void get_ksymbol_core(struct kall
iter->nameoff += strlen(kallsyms_names + iter->nameoff) + 1;
iter->owner = NULL;
iter->value = kallsyms_addresses[iter->pos];
- iter->type = 't';
+ if (is_kernel_text(iter->value) || is_kernel_inittext(iter->value))
+ iter->type = 't';
+ else
+ iter->type = 'd';
upcase_if_global(iter);
}
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .21201-linux-2.6.6-rc3-bk11/scripts/kallsyms.c .21201-linux-2.6.6-rc3-bk11.updated/scripts/kallsyms.c
--- .21201-linux-2.6.6-rc3-bk11/scripts/kallsyms.c 2003-09-22 10:07:21.000000000 +1000
+++ .21201-linux-2.6.6-rc3-bk11.updated/scripts/kallsyms.c 2004-05-10 15:09:44.000000000 +1000
@@ -5,7 +5,7 @@
* This software may be used and distributed according to the terms
* of the GNU General Public License, incorporated herein by reference.
*
- * Usage: nm -n vmlinux | scripts/kallsyms > symbols.S
+ * Usage: nm -n vmlinux | scripts/kallsyms [--all-symbols] > symbols.S
*/
#include <stdio.h>
@@ -22,11 +22,12 @@ struct sym_entry {
static struct sym_entry *table;
static int size, cnt;
static unsigned long long _stext, _etext, _sinittext, _einittext;
+static int all_symbols = 0;
static void
usage(void)
{
- fprintf(stderr, "Usage: kallsyms < in.map > out.S\n");
+ fprintf(stderr, "Usage: kallsyms [--all-symbols] < in.map > out.S\n");
exit(1);
}
@@ -51,9 +52,11 @@ read_symbol(FILE *in, struct sym_entry *
static int
symbol_valid(struct sym_entry *s)
{
- if ((s->addr < _stext || s->addr > _etext)
- && (s->addr < _sinittext || s->addr > _einittext))
- return 0;
+ if (!all_symbols) {
+ if ((s->addr < _stext || s->addr > _etext)
+ && (s->addr < _sinittext || s->addr > _einittext))
+ return 0;
+ }
if (strstr(s->sym, "_compiled."))
return 0;
@@ -156,7 +159,9 @@ write_src(void)
int
main(int argc, char **argv)
{
- if (argc != 1)
+ if (argc == 2 && strcmp(argv[1], "--all-symbols") == 0)
+ all_symbols = 1;
+ else if (argc != 1)
usage();
read_map(stdin);
--
Anyone who quotes me in their signature is an idiot -- Rusty Russell
next reply other threads:[~2004-05-10 5:29 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-10 5:28 Rusty Russell [this message]
2004-05-10 6:05 ` [PATCH] All Symbols in /proc/kallsyms Keith Owens
2004-05-10 23:13 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1084166916.8127.46.camel@bach \
--to=rusty@rustcorp.com.au \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paulus@samba.org \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.