On Fri, May 26, 2006, Tony Lin wrote:
> Finally found the place in gdb to change the register values to read
> the coredump correctly. However I have a nagging feeling that I may
> not have configured gdb correctly , and my fix may not be the right
> one. But oh wells, at least it works!
>
> cross-compiled on: i386-linux
> configured gdb using: ../gdb/configure --target=mips-linux
> gdb-6.4, kernel 2.6.6-rc3, gcc-3.4.3
>
> *** mips-linux-tdep.c 2006-05-26 17:14:00.577339000 -0700
> --- mips-linux.tdep.c~ 2006-05-26 17:15:53.723372000 -0700
> ***************
> *** 54,65 ****
> --- 54,76 ----
> +
> + /* NEW 2.6 style */
> + #define EF_CP0_STATUS 38
> + #define EF_LO 39
> + #define EF_HI 40
> + #define EF_CP0_BADVADDR 41
> + #define EF_CP0_CAUSE 42
> + #define EF_CP0_EPC 43
> +
> + /* OLD 2.4 style
> #define EF_LO 38
> #define EF_HI 39
> #define EF_CP0_EPC 40
> #define EF_CP0_BADVADDR 41
> #define EF_CP0_STATUS 42
> #define EF_CP0_CAUSE 43
> + */
>
> Is it possible that since I cross-compiled gdb on an i386, it used the
> local gcc/libc to compile and didn't have the right registers header
> file? I know during configuration it was complaining that it didn't
> find greg_t definitions etc. I suppose this why you guys can compile
> it correctly on the native mips-linux while I have issues
> cross-compiling on i386-linux.
Maybe the change to the coredump format was reverted in later
2.6 kernels. If so, Ralf might remember.
Johannes
|