]> git.hungrycats.org Git - linux/commitdiff
ia64: Sync with 2.5.39.
authorDavid Mosberger <davidm@tiger.hpl.hp.com>
Sat, 28 Sep 2002 02:47:46 +0000 (19:47 -0700)
committerDavid Mosberger <davidm@tiger.hpl.hp.com>
Sat, 28 Sep 2002 02:47:46 +0000 (19:47 -0700)
arch/ia64/Config.help
arch/ia64/config.in
arch/ia64/kernel/process.c
arch/ia64/vmlinux.lds.S

index 744f6128aca3c6154d00b645ccb709b83e89e533..f39916e8f3e2b00cb82727c316ed96914b2e71fb 100644 (file)
@@ -157,6 +157,11 @@ CONFIG_PCMCIA
   and ds.o.  If you want to compile it as a module, say M here and
   read <file:Documentation/modules.txt>.
 
+CONFIG_KALLSYMS
+  Say Y here to let the kernel print out symbolic crash information and
+  symbolic stack backtraces. This increases the size of the kernel
+  somewhat, as all symbols have to be loaded into the kernel image.
+
 CONFIG_KCORE_ELF
   If you enabled support for /proc file system then the file
   /proc/kcore will contain the kernel core image. This can be used
index 28eedb1a74ad7c3462c475ccba1329bd0a869a21..a295f4ffb05b0fffbb260ddbd971f3f7174923b1 100644 (file)
@@ -263,6 +263,7 @@ choice 'Physical memory granularity'                                \
 
 bool 'Kernel debugging' CONFIG_DEBUG_KERNEL
 if [ "$CONFIG_DEBUG_KERNEL" != "n" ]; then
+   bool '  Load all symbols for debugging/kksymoops' CONFIG_KALLSYMS
    bool '  Print possible IA64 hazards to console' CONFIG_IA64_PRINT_HAZARDS
    bool '  Disable VHPT' CONFIG_DISABLE_VHPT
    bool '  Magic SysRq key' CONFIG_MAGIC_SYSRQ
index f2b3857931b6892bebb62b3032144b5b36ea3e62..52f514f36087a5ff3947517612f7acbfc440f9a8 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/module.h>
 #include <linux/personality.h>
 #include <linux/sched.h>
 #include <linux/slab.h>
@@ -45,8 +46,9 @@ static void
 do_show_stack (struct unw_frame_info *info, void *arg)
 {
        unsigned long ip, sp, bsp;
+       char buf[80];                   /* don't make it so big that it overflows the stack! */
 
-       printk("\nCall Trace: ");
+       printk("\nCall Trace:\n");
        do {
                unw_get_ip(info, &ip);
                if (ip == 0)
@@ -54,7 +56,9 @@ do_show_stack (struct unw_frame_info *info, void *arg)
 
                unw_get_sp(info, &sp);
                unw_get_bsp(info, &bsp);
-               printk("[<%016lx>] sp=0x%016lx bsp=0x%016lx\n", ip, sp, bsp);
+               snprintf(buf, sizeof(buf), " [<%016lx>] %%s sp=0x%016lx bsp=0x%016lx\n",
+                        ip, sp, bsp);
+               print_symbol(buf, ip);
        } while (unw_unwind(info) >= 0);
 }
 
@@ -94,6 +98,7 @@ show_regs (struct pt_regs *regs)
        printk("\nPid: %d, comm: %20s\n", current->pid, current->comm);
        printk("psr : %016lx ifs : %016lx ip  : [<%016lx>]    %s\n",
               regs->cr_ipsr, regs->cr_ifs, ip, print_tainted());
+       print_symbol("ip is at %s\n", ip);
        printk("unat: %016lx pfs : %016lx rsc : %016lx\n",
               regs->ar_unat, regs->ar_pfs, regs->ar_rsc);
        printk("rnat: %016lx bsps: %016lx pr  : %016lx\n",
index 1c1fe5af94257a0fc5598f12490d3aa4601f4df8..186a26bad1d77b6320416b2517b4a13debfdb2c6 100644 (file)
@@ -160,6 +160,14 @@ SECTIONS
   .bss : AT(ADDR(.bss) - PAGE_OFFSET)
        { *(.bss) *(COMMON) }
 
+  /* XXX Must this come last to avoid shifting other symbols?  --davidm */
+  __kallsyms : AT(ADDR(__kallsyms) - PAGE_OFFSET)
+       {
+         __start___kallsyms = .;       /* All kernel symbols */
+         *(__kallsyms)
+         __stop___kallsyms = .;
+       }
+
   _end = .;
 
   /* Stabs debugging sections.  */