SEARCH_FUNCTION_DOMAIN, nullptr);
if (bsym.symbol != nullptr)
{
- symtab_and_line sal = find_function_start_sal (bsym.symbol, true);
+ symtab_and_line sal = find_function_start_sal (bsym.symbol, false);
if (sal.symtab == NULL)
/* We couldn't find the location of `main', possibly due to missing
line number info, fall back to line 1 in the corresponding file. */
loc->set (bsym.symbol->symtab (), 1);
else
- loc->set (sal.symtab, std::max (sal.line - (lines_to_list - 1), 1));
+ loc->set (sal.symtab, sal.line);
return;
}
int
main ()
-{
+{ /* main prologue */
int v0 = 0;
func1 ();
gdb_file_cmd ${binfile}
gdb_test_no_output "set listsize 1"
-# initial sal should be first statement in main
+# initial sal should be main's prologue.
gdb_test "list" \
- "v0 = 0;" \
+ "{ /\\* main prologue \\*/" \
"list before run"
gdb_load ${binfile}
int
main (void)
-{
+{ /* main prologue */
return 0;
}
--- /dev/null
+# Copyright 2024 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test the "list" command to print the location around main before the
+# program is started.
+
+standard_testfile list-ambiguous0.c
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+ return -1
+}
+
+set fill "${decimal}\\s+\[^\n\r\]+"
+
+gdb_test_no_output "set listsize 10"
+
+gdb_test "list" \
+ [multi_line \
+ "${decimal}\\s+" \
+ "${decimal}\\s+int" \
+ "${decimal}\\s+main\[^\n\r\]+" \
+ "${decimal}\\s+\\{ /\\* main prologue \\*/" \
+ "${fill}" \
+ "${fill}" ]
}
# get the path and absolute path to the current executable
- #
- # In gdb 6.2 (at least), the default line number is set by
- # select_source_symtab to the first line of "main" minus
- # the value of "lines_to_list" (which defaults to 10) plus one.
- # --chastain 2004-08-13
set line_main_head [gdb_get_line_number "main ("]
- set line_main_body [expr $line_main_head + 2]
- set gdb_lines_to_list 10
- set line_default [expr $line_main_body - $gdb_lines_to_list + 1]
+ set line_main_prologue [expr $line_main_head + 1]
+ set line_default $line_main_prologue
mi_gdb_test "111-file-list-exec-source-file" \
"111\\\^done,line=\"$line_default\",file=\"${srcfilepath}\",fullname=\"$fullname_syntax${srcfile}\",macro-info=\"0\"" \