Index: gdb/gdb/i386-linux-tdep.c =================================================================== --- gdb.orig/gdb/i386-linux-tdep.c 2004-08-07 02:28:28.000000000 +0530 +++ gdb/gdb/i386-linux-tdep.c 2004-10-26 14:59:29.000000000 +0530 @@ -27,6 +27,7 @@ #include "inferior.h" #include "osabi.h" #include "reggroups.h" +#include "elf-bfd.h" #include "gdb_string.h" @@ -416,6 +417,25 @@ set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver); } +static void +i386_linux_kernel_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* Linux Kernel uses ELF format for vmlinux file. */ + i386_elf_init_abi (info, gdbarch); + + /* We can use the register offsets used for linux applications. Only + * first 16 elements of the array will be used for kernel. Offsets of those + * are identical for applications and kernel. */ + tdep->gregset_reg_offset = i386_linux_gregset_reg_offset; + tdep->gregset_num_regs = I386_NUM_GREGS; + tdep->sizeof_gregset = I386_NUM_GREGS * 4; + + tdep->jb_pc_offset = 20; /* From . */ + +} + /* Provide a prototype to silence -Wmissing-prototypes. */ extern void _initialize_i386_linux_tdep (void); @@ -424,4 +444,6 @@ { gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_LINUX, i386_linux_init_abi); + gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_LINUX_KERNEL, + i386_linux_kernel_init_abi); } Index: gdb/gdb/defs.h =================================================================== --- gdb.orig/gdb/defs.h 2004-10-12 15:36:14.000000000 +0530 +++ gdb/gdb/defs.h 2004-10-26 14:46:27.000000000 +0530 @@ -1031,6 +1031,7 @@ GDB_OSABI_SOLARIS, GDB_OSABI_OSF1, GDB_OSABI_LINUX, + GDB_OSABI_LINUX_KERNEL, GDB_OSABI_FREEBSD_AOUT, GDB_OSABI_FREEBSD_ELF, GDB_OSABI_NETBSD_AOUT, Index: gdb/gdb/osabi.c =================================================================== --- gdb.orig/gdb/osabi.c 2004-07-03 02:57:17.000000000 +0530 +++ gdb/gdb/osabi.c 2004-10-26 14:46:27.000000000 +0530 @@ -57,6 +57,7 @@ "Solaris", "OSF/1", "GNU/Linux", + "Linux-kernel", "FreeBSD a.out", "FreeBSD ELF", "NetBSD a.out", Index: gdb/gdb/ChangeLog =================================================================== --- gdb.orig/gdb/ChangeLog 2004-10-26 14:45:24.000000000 +0530 +++ gdb/gdb/ChangeLog 2004-10-26 14:57:25.000000000 +0530 @@ -1,3 +1,7 @@ +2004-10-26 Amit S. Kale + * i386-linux-tdep.c: Added a new osabi Linux-kernel for debugging + a remotely running linux kernel. + 2004-10-25 Andrew Cagney * NEWS: Add Changes since GDB 6.3 section.