Commit babdc53e authored by Keith M. Wesolowski's avatar Keith M. Wesolowski

[SPARC32]: Enable KALLSYMS.

parent 42c1faa2
...@@ -49,7 +49,12 @@ NET_Y := $(patsubst %/, %/built-in.o, $(net-y)) ...@@ -49,7 +49,12 @@ NET_Y := $(patsubst %/, %/built-in.o, $(net-y))
LIBS_Y1 := $(patsubst %/, %/lib.a, $(libs-y)) LIBS_Y1 := $(patsubst %/, %/lib.a, $(libs-y))
LIBS_Y2 := $(patsubst %/, %/built-in.o, $(libs-y)) LIBS_Y2 := $(patsubst %/, %/built-in.o, $(libs-y))
LIBS_Y := $(LIBS_Y1) $(LIBS_Y2) LIBS_Y := $(LIBS_Y1) $(LIBS_Y2)
export INIT_Y CORE_Y DRIVERS_Y NET_Y LIBS_Y HEAD_Y
ifdef CONFIG_KALLSYMS
kallsyms.o := .tmp_kallsyms2.o
endif
export INIT_Y CORE_Y DRIVERS_Y NET_Y LIBS_Y HEAD_Y kallsyms.o
# Default target # Default target
all: image all: image
......
...@@ -19,7 +19,7 @@ quiet_cmd_btfix = BTFIX $@ ...@@ -19,7 +19,7 @@ quiet_cmd_btfix = BTFIX $@
BTOBJS := $(HEAD_Y) $(INIT_Y) BTOBJS := $(HEAD_Y) $(INIT_Y)
BTLIBS := $(CORE_Y) $(LIBS_Y) $(DRIVERS_Y) $(NET_Y) BTLIBS := $(CORE_Y) $(LIBS_Y) $(DRIVERS_Y) $(NET_Y)
LDFLAGS_image := -T arch/sparc/kernel/vmlinux.lds.s $(BTOBJS) --start-group $(BTLIBS) --end-group LDFLAGS_image := -T arch/sparc/kernel/vmlinux.lds.s $(BTOBJS) --start-group $(BTLIBS) --end-group $(kallsyms.o)
# Actual linking # Actual linking
$(obj)/image: $(obj)/btfix.o FORCE $(obj)/image: $(obj)/btfix.o FORCE
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/kallsyms.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/stddef.h> #include <linux/stddef.h>
#include <linux/unistd.h> #include <linux/unistd.h>
...@@ -207,11 +208,12 @@ void __show_backtrace(unsigned long fp) ...@@ -207,11 +208,12 @@ void __show_backtrace(unsigned long fp)
while(rw && (((unsigned long) rw) >= PAGE_OFFSET) && while(rw && (((unsigned long) rw) >= PAGE_OFFSET) &&
!(((unsigned long) rw) & 0x7)) { !(((unsigned long) rw) & 0x7)) {
printk("CPU[%d]: ARGS[%08lx,%08lx,%08lx,%08lx,%08lx,%08lx] " printk("CPU[%d]: ARGS[%08lx,%08lx,%08lx,%08lx,%08lx,%08lx] "
"FP[%08lx] CALLER[%08lx]\n", cpu, "FP[%08lx] CALLER[%08lx]: ", cpu,
rw->ins[0], rw->ins[1], rw->ins[2], rw->ins[3], rw->ins[0], rw->ins[1], rw->ins[2], rw->ins[3],
rw->ins[4], rw->ins[5], rw->ins[4], rw->ins[5],
rw->ins[6], rw->ins[6],
rw->ins[7]); rw->ins[7]);
print_symbol("%s\n", rw->ins[7]);
rw = (struct reg_window *) rw->ins[6]; rw = (struct reg_window *) rw->ins[6];
} }
spin_unlock_irqrestore(&sparc_backtrace_lock, flags); spin_unlock_irqrestore(&sparc_backtrace_lock, flags);
...@@ -279,12 +281,14 @@ void show_regs(struct pt_regs *r) ...@@ -279,12 +281,14 @@ void show_regs(struct pt_regs *r)
printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n", printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n",
r->psr, r->pc, r->npc, r->y, print_tainted()); r->psr, r->pc, r->npc, r->y, print_tainted());
print_symbol("PC: <%s>\n", r->pc);
printk("%%G: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", printk("%%G: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
r->u_regs[0], r->u_regs[1], r->u_regs[2], r->u_regs[3], r->u_regs[0], r->u_regs[1], r->u_regs[2], r->u_regs[3],
r->u_regs[4], r->u_regs[5], r->u_regs[6], r->u_regs[7]); r->u_regs[4], r->u_regs[5], r->u_regs[6], r->u_regs[7]);
printk("%%O: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", printk("%%O: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
r->u_regs[8], r->u_regs[9], r->u_regs[10], r->u_regs[11], r->u_regs[8], r->u_regs[9], r->u_regs[10], r->u_regs[11],
r->u_regs[12], r->u_regs[13], r->u_regs[14], r->u_regs[15]); r->u_regs[12], r->u_regs[13], r->u_regs[14], r->u_regs[15]);
print_symbol("RPC: <%s>\n", r->u_regs[15]);
printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3], rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3],
...@@ -318,7 +322,8 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) ...@@ -318,7 +322,8 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
break; break;
rw = (struct reg_window *) fp; rw = (struct reg_window *) fp;
pc = rw->ins[7]; pc = rw->ins[7];
printk("[%08lx] ", pc); printk("[%08lx : ", pc);
print_symbol("%s ] ", pc);
fp = rw->ins[6]; fp = rw->ins[6];
} while (++count < 16); } while (++count < 16);
printk("\n"); printk("\n");
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/config.h> #include <linux/config.h>
#include <linux/sched.h> /* for jiffies */ #include <linux/sched.h> /* for jiffies */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/kallsyms.h>
#include <linux/signal.h> #include <linux/signal.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
...@@ -118,7 +119,9 @@ void die_if_kernel(char *str, struct pt_regs *regs) ...@@ -118,7 +119,9 @@ void die_if_kernel(char *str, struct pt_regs *regs)
count++ < 30 && count++ < 30 &&
(((unsigned long) rw) >= PAGE_OFFSET) && (((unsigned long) rw) >= PAGE_OFFSET) &&
!(((unsigned long) rw) & 0x7)) { !(((unsigned long) rw) & 0x7)) {
printk("Caller[%08lx]\n", rw->ins[7]); printk("Caller[%08lx]", rw->ins[7]);
print_symbol(": %s\n", rw->ins[7]);
printk("\n");
rw = (struct reg_window *)rw->ins[6]; rw = (struct reg_window *)rw->ins[6];
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment