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-21 18:18:18.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,26 @@ set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver); } +static void +i386_linuxkernel_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); + + set_gdbarch_num_regs (gdbarch, I386_LINUX_NUM_REGS); + set_gdbarch_register_name (gdbarch, i386_linux_register_name); + set_gdbarch_register_reggroup_p (gdbarch, i386_linux_register_reggroup_p); + + tdep->gregset_reg_offset = i386_linux_gregset_reg_offset; + tdep->gregset_num_regs = ARRAY_SIZE (i386_linux_gregset_reg_offset); + tdep->sizeof_gregset = 17 * 4; + + tdep->jb_pc_offset = 20; /* From . */ + +} + /* Provide a prototype to silence -Wmissing-prototypes. */ extern void _initialize_i386_linux_tdep (void); @@ -424,4 +445,6 @@ { gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_LINUX, i386_linux_init_abi); + gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_LINUXKERNEL, + i386_linuxkernel_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-21 18:14:02.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-21 18:14:02.000000000 +0530 @@ -57,6 +57,7 @@ "Solaris", "OSF/1", "GNU/Linux", + "Linux-kernel", "FreeBSD a.out", "FreeBSD ELF", "NetBSD a.out",