[RFC] symtab.c: Change skip_prologue_sal comparison to match main() too

Kevin Buettner
2012-03-13T22:58:36Z

I'm seeing failures in gdb.cp/koenig.exp for targets which define a
``skip_main_prologue'' gdbarch method. It turns out, however, that
most other C++ tests which run to main are not running to the correct
location either. (The test results don't show this though.)

Here is the relevant part of the log file for gdb.cp/koenig.exp for
frv-elf showing this behavior:

Breakpoint 1, main () at /ironwood1/sourceware-clean/frv-elf/../src/gdb/testsuite/gdb.cp/koenig.cc:246
246 {
(gdb) p first(c)
No symbol "c" in current context.

Note that the breakpoint did not correctly end up at the first line of
the function body.

When I look at the code in question with gdb, I see that a comparison
is being made between "main()" and "main" and is (obviously) failing.

Does the patch below look reasonable?

Kevin

* symtab.c (skip_prologue_sal): Change test to check for "main()"
in addition to "main".

Index: symtab.c
===================================================================
RCS file: /cvs/src/src/gdb/symtab.c,v
retrieving revision 1.298
diff -u -p -r1.298 symtab.c
--- symtab.c 1 Mar 2012 21:13:59 -0000 1.298
+++ symtab.c 13 Mar 2012 22:32:49 -0000
@@ -2776,7 +2776,7 @@ skip_prologue_sal (struct symtab_and_lin
to `__main' in `main' between the prologue and before user
code. */
if (gdbarch_skip_main_prologue_p (gdbarch)
- && name && strcmp (name, "main") == 0)
+ && name && strcmp_iw (name, "main") == 0)
{
pc = gdbarch_skip_main_prologue (gdbarch, pc);
/* Recalculate the line number (might not be N+1). */