# 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 . # 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 }