This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Strange backtrace from GDB 7.5.91
- From: Eli Zaretskii <eliz at gnu dot org>
- To: gdb at sourceware dot org
- Date: Wed, 20 Mar 2013 19:45:02 +0200
- Subject: Strange backtrace from GDB 7.5.91
- Reply-to: Eli Zaretskii <eliz at gnu dot org>
I saw today a very strange backtrace, while debugging with GDB 7.5.91,
which I got by stepping through relocate_gdb_directory:
(top-gdb) s
relocate_path (flag=1, initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe")
at main.c:124
124 dir = relocate_path (gdb_program_name, initial, flag);
(top-gdb) bt
#0 relocate_path (flag=1, initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe")
at main.c:124
#1 relocate_gdb_directory (
initial=initial@entry=0x71a51b "d:/usr/share/gdb", flag=flag@entry=1)
at main.c:124
#2 0x004f0b1d in captured_main (data=data@entry=0x572ff10) at main.c:399
But relocate_path's argument list is this:
relocate_path (const char *progname, const char *initial, int flag)
i.e., the FLAG argument is the last one, not the first one.
After one more "step", relocate_path appears twice in the backtrace,
once with correct order of arguments, the other one with an incorrect
order:
(top-gdb) s
relocate_path (initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe",
flag=<optimized out>) at main.c:109
109 return make_relative_prefix (progname, BINDIR, initial);
(top-gdb) bt
#0 relocate_path (initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe",
flag=<optimized out>) at main.c:109
#1 relocate_path (flag=1, initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe")
at main.c:120
#2 relocate_gdb_directory (
initial=initial@entry=0x71a51b "d:/usr/share/gdb", flag=flag@entry=1)
at main.c:124
#3 0x004f0b1d in captured_main (data=data@entry=0x572ff10) at main.c:399
Is this due to inlining or something? Is this a bug?
The compiler was GCC 4.7.2, if that matters, and the compilation
switches were "-g3 -O2". MinGW GCC produced DWARF-2 debug info.