This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Go32-v2 native woes
- From: "Pierre Muller" <pierre dot muller at ics-cnrs dot unistra dot fr>
- To: <gdb at sourceware dot org>
- Date: Tue, 6 Apr 2010 01:29:22 +0200
- Subject: Go32-v2 native woes
There are again internal-error problems
with go32v2 native about registers that are
not correct.
Current CVS gives this:
Breakpoint 2 at 0xc485: file ../../src/gdb/cli/cli-cmds.c, line 223.
(top-gdb) set prompt top>
#Note top> is an older gdb that works fine.
top> r ./gdb
Starting program: e:/cygwin/usr/local/src/gdbcvs/djcvsbuild/gdb/gdb.exe
./gdb
GNU gdb (GDB) 7.1.50.20100405-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i586-pc-msdosdjgpp --target=djgpp".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Breakpoint 1, internal_error (
file=0xe6d70 "../../src/gdb/target-descriptions.c", line=1140,
string=0xe6d55 "%s: Assertion `%s' failed.") at
../../src/gdb/utils.c:1050
1050 va_start (ap, string);
top> bt
#0 internal_error (file=0xe6d70 "../../src/gdb/target-descriptions.c",
line=1140, string=0xe6d55 "%s: Assertion `%s' failed.")
at ../../src/gdb/utils.c:1050
#1 0x000e8cf2 in tdesc_use_registers (gdbarch=0x46eda0,
target_desc=0x3ed480,
early_data=0x46fd90) at ../../src/gdb/target-descriptions.c:1140
#2 0x0013a17c in i386_gdbarch_init (info=..., arches=0x0)
at ../../src/gdb/i386-tdep.c:6699
#3 0x0004dbd6 in gdbarch_find_by_info (info=...)
at ../../src/gdb/gdbarch.c:3979
#4 0x00088785 in set_gdbarch_from_file (abfd=0x42c0a0)
at ../../src/gdb/arch-utils.c:552
#5 0x00017c8b in exec_file_attach (filename=0x3eaeb8 "./gdb", from_tty=1)
at ../../src/gdb/exec.c:296
#6 0x000256dd in catch_command_errors (command=0x179e7 <exec_file_attach>,
arg=0x3eaeb8 "./gdb", from_tty=1, mask=6) at
../../src/gdb/exceptions.c:525
#7 0x00002a2a in captured_main (data=0x3ea208) at ../../src/gdb/main.c:808
#8 0x00025649 in catch_errors (func=0x1dfa <captured_main>,
func_args=0x3ea208, errstring=0x1b94 "", mask=6)
at ../../src/gdb/exceptions.c:510
#9 0x00002d72 in gdb_main (args=0x3ea208) at ../../src/gdb/main.c:916
#10 0x0000180d in main (argc=2, argv=0x3eaed8) at ../../src/gdb/gdb.c:33
top> f 1
#1 0x000e8cf2 in tdesc_use_registers (gdbarch=0x46eda0,
target_desc=0x3ed480,
early_data=0x46fd90) at ../../src/gdb/target-descriptions.c:1140
1140 gdb_assert (VEC_length (tdesc_arch_reg, data->arch_regs) <=
num_regs);
top> p num_regs
$1 = 32
top> p *data.arch_regs
$2 = {num = 33, alloc = 36, vec = {{reg = 0x3ed6d8, type = 0x0}}}
top>
The additional reg in arch_regs seems to come from
i386_validate_tdesc_p function:
/* Need to include %mxcsr, so add one. */
num_regs += tdep->num_xmm_regs + 1;
Adding this condition
if (tdep->num_xmm_regs)
removes the problem above,
but I get another error later:
Breakpoint 1 at 0x479d: file ../../src/gdb/utils.c, line 1050.
Breakpoint 2 at 0xc485: file ../../src/gdb/cli/cli-cmds.c, line 223.
(top-gdb) start
Temporary breakpoint 3 at 0x17d4: file ../../src/gdb/gdb.c, line 28.
Starting program: e:/cygwin/usr/local/src/gdbcvs/djcvsbuild/gdb/gdb.exe
Temporary breakpoint 3, main (argc=1, argv=0x3eae78) at
../../src/gdb/gdb.c:28
28 memset (&args, 0, sizeof args);
(top-gdb) inf reg
eax 0x10 16
ecx 0x0 0
edx 0x100 256
ebx 0x3f6 1014
esp 0x3ea1f0 0x3ea1f0
ebp 0x3ea220 0x3ea220
esi 0x54 84
edi 0x36a258 3580504
eip 0x17d4 0x17d4 <main+28>
eflags 0x3206 [ PF IF #12 #13 ]
cs 0x28f 655
ss 0x297 663
ds 0x297 663
es 0x297 663
fs 0x2a7 679
gs 0x2a7 679
Breakpoint 1, internal_error (file=0x1286ab "../../src/gdb/go32-nat.c",
line=546, string=0x128680 "Invalid register no. %d in fetch_register.")
at ../../src/gdb/utils.c:1050
1050 va_start (ap, string);
GDB is trying to display register 32 which is normally "xmm0"
and thus should not be displayed for go32v2.
I was not able o fix that second problem :(
Pierre Muller
Pascal language support maintainer for GDB
and old-DOS lover ...