| # Copyright 2021-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/>. |
| |
| # C test-case that mimics gdb.ada/dgopt.exp. |
| |
| standard_testfile .c main.c |
| |
| if { [build_executable "failed to prepare" $testfile $srcfile {debug}] } { |
| return -1 |
| } |
| |
| clean_restart |
| |
| # Set language explicitly, to avoid expanding the include-main.c CU for the |
| # language lookup (this is currently not required, but may be after |
| # integration of the no-more-psym branch). |
| # This to make sure that the source file lookup we do later triggers the |
| # symtab expansion. |
| gdb_test_no_output "set language c" |
| |
| gdb_load $binfile |
| |
| if { ! [readnow] } { |
| # Verify that no CU was expanded. |
| gdb_test_no_output "maint info symtab" |
| } |
| |
| # List a line in include-main.c. The tricky bit is that there's no code in |
| # include-main.c, so the file should not occur in the .debug_line info. |
| # GDB needs to find the file based on the CU's DW_AT_name/DW_AT_comp_dir. |
| set line [gdb_get_line_number "include" $srcfile] |
| gdb_test "list $srcfile:$line" "$line\[ \t\]*#include \"main.c\"" |
| |
| # For completeness, also try to list a line in the file that does contain |
| # code. |
| set line [gdb_get_line_number "main" $srcfile2] |
| gdb_test "list $srcfile2:$line" "$line\[ \t\]*main \\(void\\)\r\n.*" |