Hi,
I'm not sure if this is a bug or something I have misunderstood about
the debugging libraries. I want to show an example of debugging a
libc call, so just simply overflowed a buffer with strcpy.
---
#include <stdio.h>
#include <string.h>
char *b = "A long string";
int main(void)
{
char a[1];
strcpy(a, b);
}
---
Which when I run on i386 under GDB with LD_LIBRARY_PATH=/usr/lib/debug
I get
--- gdb output on i386 ---
$ gcc -g -o test test.c
$ echo $LD_LIBRARY_PATH
/usr/lib/debug
$ gdb ./test
GNU gdb 6.0 (etc)
(gdb) r
Starting program: /home/ianw/test
Program received signal SIGSEGV, Segmentation fault.
0x74732067 in ?? ()
(gdb) back
#0 0x74732067 in ?? ()
#1 0x676e6972 in ?? ()
#2 0xbffffa00 in ?? ()
#3 0xbffffa0c in ?? ()
#4 0x40016c20 in ?? () from /lib/ld-linux.so.2
#5 0x00000001 in ?? ()
#6 0x080482a0 in ?? ()
---
I don't belive the strcpy has been inlined, for example it shows up in ltrace
$ ltrace ./test
__libc_start_main(0x08048364, 1, 0xbffffa04, 0x08048390, 0x080483f0
<unfinished ...>
strcpy(0xbffff9b7, "A long string") = 0xbffff9b7
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
I would have expected that this would give me a good backtrace. Is
this wrong?
-i
ianw@gelato.unsw.edu.au
http://www.gelato.unsw.edu.au
Attachment:
pgpl80ngmAdD9.pgp
Description: PGP signature