This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

baffling assembly-level weirdness


hi,

The following gdb session baffles me completely: %edx is reset to zero
by the mov at address 0x0804ad62 instead of being set to the constant
0x804ad62. Of course, this code segfaults at $pc = 0x804ad68 when zero
is dereferenced...

Version: GNU gdb 6.8

(gdb) disas $pc $pc+10
Dump of assembler code from 0x804ad62 to 0x804ad6c:
0x0804ad62 <indent+50>:	mov    0x805e3c0,%edx
0x0804ad68 <indent+56>:	mov    0x14(%edx),%eax
0x0804ad6b <indent+59>:	cmp    0x18(%edx),%eax
End of assembler dump.
(gdb) p $pc
$3 = (void (*)()) 0x804ad62 <indent+50>
(gdb) p $edx
$4 = 1
(gdb) ni
0x0804ad68	108	  return _IO_putc_unlocked (__c, stdout);
(gdb) p $edx
$5 = 0
(gdb) disas $pc $pc+10
Dump of assembler code from 0x804ad68 to 0x804ad72:
0x0804ad68 <indent+56>:	mov    0x14(%edx),%eax
0x0804ad6b <indent+59>:	cmp    0x18(%edx),%eax
0x0804ad6e <indent+62>:	jae    0x804adbe <indent+142>
0x0804ad70 <indent+64>:	movb   $0x20,(%eax)
End of assembler dump.
(gdb) x/20bx 0x0804ad62
0x804ad62 <indent+50>:	0x8b	0x15	0xc0	0xe3	0x05	0x08	0x8b	0x42
0x804ad6a <indent+58>:	0x14	0x3b	0x42	0x18	0x73	0x4e	0xc6	0x00
0x804ad72 <indent+66>:	0x20	0x83	0xc0	0x01

Anyone would have even a remote idea of what could have gone wrong here ?

Mathieu
-- 
Mathieu Lacage <mathieu.lacage@gmail.com>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]