mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +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.
52 lines
2.0 KiB
Plaintext
52 lines
2.0 KiB
Plaintext
# Copyright 2010-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/>.
|
|
|
|
load_lib "ada.exp"
|
|
|
|
standard_ada_testfile a
|
|
|
|
set cfile "foo"
|
|
set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c
|
|
set cobject [standard_output_file ${cfile}.o]
|
|
|
|
gdb_compile "${csrcfile}" "${cobject}" object [list debug]
|
|
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
|
|
return -1
|
|
}
|
|
|
|
clean_restart ${testfile}
|
|
|
|
# Run to c_function an verify that the language automatically gets set to C.
|
|
runto c_function
|
|
gdb_test "show lang" \
|
|
"The current source language is \"auto; currently c\"\\."
|
|
|
|
# Now, insert a breakpoint inside an Ada unit, using a condition written
|
|
# in Ada. Even though the current language is "auto; currently c", we
|
|
# expect the debugger to parse the expression using Ada, because the
|
|
# current language mode is auto, and the breakpoint is inside Ada code.
|
|
set bp_location [gdb_get_line_number "STOP" ${testdir}/mixed.adb]
|
|
gdb_test "break mixed.adb:${bp_location} if light = green" \
|
|
"Breakpoint \[0-9\]* at .*: file (.*/)?mixed.adb, line \[0-9\]*\\."
|
|
|
|
# Now, continue until we hit the breakpoint. If the condition is
|
|
# evaluated correctly, the first hit will be ignored, and the debugger
|
|
# will stop at the second hit only, when the "light" argument is equal
|
|
# to green.
|
|
gdb_test "continue" \
|
|
"Breakpoint \[0-9\]*, mixed\\.break_me \\(light=green\\) at .*"
|
|
|
|
|