Fix a latent bug in dw2-ranges-overlap.exp
authorTom Tromey <tom@tromey.com>
Fri, 6 Aug 2021 22:07:27 +0000 (16:07 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 23 Aug 2021 20:14:20 +0000 (14:14 -0600)
dw2-ranges-overlap.exp creates a program where a psymtab has two
address ranges, and a function without debug info whose address is
between these two ranges.  Then it sets a breakpoint on this function
and runs to it, expecting that the language should remain "auto; c"
when stopped.

However, this test case also has a "main" function described (briefly)
in the DWARF, and this function is given language C++.  Also, a
breakpoint stop sets the current language to the language that was
used when setting the breakpoint.

My new DWARF scanner decides that this "main" is the main program and
sets the current language to C++ at startup, causing this test to
fail.

This patch fixes the test in a simple way, by introducing a new
function that takes the place of "main" in the DWARF.  I think this
still exercises the original problem, but also avoids problems with my
branch.

It seemed safe to me to submit this separately.

gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.c
gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp

index 5e69e4aa52b184f9573743931d4fde736fecd500..e3d70f471dce3bced6eb48f3e05466a8265b50fa 100644 (file)
@@ -28,9 +28,16 @@ foo (int a)
   return bar (a * 2) + 3;
 }
 
+int
+quux (int a)
+{
+  asm ("quux_label: .globl quux_label");
+  return foo (a);
+}
+
 int
 main (void)
 {
   asm ("main_label: .globl main_label");
-  return foo (5) + 1;
+  return quux (5) + 1;
 }
index 972ab762a27e7b57872031cb9065e90f4e41f3cc..5da60bf3a3338702fe3056cc54103e4b2136e85c 100644 (file)
@@ -44,10 +44,10 @@ Dwarf::assemble $asm_file {
     declare_labels ranges_label
 
     # Find start address and length for our functions.
-    set main_func \
-       [function_range main [list ${srcdir}/${subdir}/$srcfile]]
     set foo_func \
        [function_range foo [list ${srcdir}/${subdir}/$srcfile]]
+    set quux_func \
+       [function_range quux [list ${srcdir}/${subdir}/$srcfile]]
     set bar_func \
        [function_range bar [list ${srcdir}/${subdir}/$srcfile]]
 
@@ -59,15 +59,15 @@ Dwarf::assemble $asm_file {
        } {
            subprogram {
                {external 1 flag}
-               {name main}
+               {name quux}
            }
        }
     }
 
     ranges {is_64 [is_64_target]} {
        ranges_label: sequence {
-           base [lindex $main_func 0]
-           range 0 [lindex $main_func 1]
+           base [lindex $quux_func 0]
+           range 0 [lindex $quux_func 1]
            base [lindex $bar_func 0]
            range 0 [lindex $bar_func 1]
        }