This is the mail archive of the gdb-patches@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]

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


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).  */


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