mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 04:25:10 +08:00
f0464b231f
The output of Ada tests create a layout where the test name ("formatted_ref" in this example) appears twice: outputs └── gdb.ada └── formatted_ref └── formatted_ref ├── b~formatted_ref.adb ├── b~formatted_ref.ads ├── b~formatted_ref.ali ├── b~formatted_ref.o ├── defs.ali ├── defs.o ├── formatted_ref ├── formatted_ref.ali └── formatted_ref.o This causes a problem when testing with the native-gdbserver board, when the binary has the same name as the test. When gdb_remote_download is called to upload the compiled binary, the implementation for native-gdbserver copies it in the standard output directory (in outputs/gdb.ada/formatted_ref). However, there is already a directory named formatted_ref in there, so the copy fails and gdbserver isn't able to load the binary. This patch bypasses the problem by removing the extra directory level. The compiled binary will already be in its final location in the standard output directory, so the copy will effectively be a no-op. gdb/testsuite/ChangeLog: * lib/ada.exp: Remove extra directory level in build directory. * gdb.ada/cond_lang.exp: Likewise. * gdb.ada/exec_changed.exp: Likewise. * gdb.ada/lang_switch.exp: Likewise.
81 lines
2.9 KiB
Plaintext
81 lines
2.9 KiB
Plaintext
# Copyright 2004-2016 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/>.
|
|
|
|
# Call target_compile with SOURCE DEST TYPE and OPTIONS as argument,
|
|
# after having temporarily changed the current working directory to
|
|
# BUILDDIR.
|
|
|
|
proc target_compile_ada_from_dir {builddir source dest type options} {
|
|
set saved_cwd [pwd]
|
|
catch {
|
|
cd $builddir
|
|
return [target_compile $source $dest $type $options]
|
|
} result options
|
|
cd $saved_cwd
|
|
return -options $options $result
|
|
}
|
|
|
|
# Compile some Ada code.
|
|
|
|
proc gdb_compile_ada {source dest type options} {
|
|
|
|
set srcdir [file dirname $source]
|
|
set gprdir [file dirname $srcdir]
|
|
set objdir [file dirname $dest]
|
|
|
|
# Although strictly not necessary, we force the recompilation
|
|
# of all units (additional_flags=-f). This is what is done
|
|
# when using GCC to build programs in the other languages,
|
|
# and it avoids using a stray objfile file from a long-past
|
|
# run, for instance.
|
|
append options " ada"
|
|
append options " additional_flags=-f"
|
|
append options " additional_flags=-I$srcdir"
|
|
|
|
set result [target_compile_ada_from_dir \
|
|
$objdir [file tail $source] $dest $type $options]
|
|
|
|
# The Ada build always produces some output, even when the build
|
|
# succeeds. Thus, we can not use the output the same way we do in
|
|
# gdb_compile to determine whether the build has succeeded or not.
|
|
# We therefore simply check whether the dest file has been created
|
|
# or not. Unless not present, the build has succeeded.
|
|
if [file exists $dest] { set result "" }
|
|
gdb_compile_test $source $result
|
|
return $result
|
|
}
|
|
|
|
# Like standard_testfile, but for Ada. Historically the Ada tests
|
|
# used a different naming convention from many of the other gdb tests,
|
|
# and this difference was preserved during the conversion to
|
|
# standard_testfile. DIR defaults to the base name of the test case;
|
|
# but can be overridden to find sources in a different subdirectory of
|
|
# gdb.ada.
|
|
|
|
proc standard_ada_testfile {base_file {dir ""}} {
|
|
global gdb_test_file_name srcdir subdir
|
|
global testdir testfile srcfile binfile
|
|
|
|
if {$dir == ""} {
|
|
set testdir $gdb_test_file_name
|
|
} else {
|
|
set testdir $dir
|
|
}
|
|
|
|
set testfile $base_file
|
|
set srcfile $srcdir/$subdir/$testdir/$testfile.adb
|
|
set binfile [standard_output_file $testfile]
|
|
}
|