| # This testcase is part of GDB, the GNU debugger. |
| |
| # Copyright 2022-2023 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/>. |
| |
| # Compile a source file using different ways of passing the path to the |
| # compiler. Then, verify that we can print a macro defined in that file. |
| |
| standard_testfile |
| |
| # If the host is remote, source files are uploaded to the host and compiled |
| # there, but without the directory structure we expect, making the test |
| # pointless. Skip the test in that case. |
| require {!is_remote host} |
| |
| # Copy the source file at these locations in the output directory ($out): |
| # |
| # $out/cwd/macro-source-path.c |
| # $out/other/macro-source-path.c |
| # |
| # Set the current working directory to $out/cwd, so that we can test compiling |
| # using relative paths. |
| |
| set out_dir [standard_output_file ""] |
| file mkdir $out_dir/cwd |
| file mkdir $out_dir/other |
| file copy -force $srcdir/$subdir/$srcfile $out_dir/cwd |
| file copy -force $srcdir/$subdir/$srcfile $out_dir/other |
| |
| # Run one test. |
| # |
| # SRC is the path to the source file, to be passed to the compiler as-is. |
| # NAME is the name of the test. |
| |
| proc test { src name } { |
| with_test_prefix $name { |
| set binfile $::out_dir/$name |
| |
| if { [gdb_compile $src $binfile executable {debug macros additional_flags=-DONE=1}] != "" } { |
| fail "could not compile" |
| return |
| } |
| |
| clean_restart $binfile |
| |
| if { ![runto_main] } { |
| return |
| } |
| |
| # Print the macro that is defined on the command-line. |
| gdb_test "print ONE" " = 1" |
| |
| # Print the macro that is defined in the main file. |
| gdb_test "print TWO" " = 2" |
| } |
| } |
| |
| # When adding a test here, please consider adding an equivalent case to the test |
| # of the same name in gdb.dwarf2. |
| |
| with_cwd "$out_dir/cwd" { |
| test $testfile.c filename |
| test ./$testfile.c dot-filename |
| test ../cwd/$testfile.c dot-dot-filename |
| test [file normalize $testfile.c] absolute-cwd |
| test ../other/$testfile.c dot-dot-other |
| test [file normalize ../other/$testfile.c] absolute-other |
| } |