binutils-gdb/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp
Alan Hayward ba22ff8694 Testsuite: Remove pie from trace tests
Ubuntu/Debian defaults PIE to enabled.  This causes the trace tests
to fall over due to variables being returned as "unavailable".  The
tests were never designed to work with pie.

Simply ensure the nopie flag is always used for the failing tests.

This removes 100+ failures when running native-gdbserver on Ubuntu 18.04.

gdb/testsuite/ChangeLog:

	* gdb.trace/backtrace.exp: Use nopie flag.
	* gdb.trace/circ.exp: Likewise.
	* gdb.trace/collection.exp: Likewise.
	* gdb.trace/ftrace.exp: Likewise.
	* gdb.trace/mi-trace-unavailable.exp: Likewise.
	* gdb.trace/mi-traceframe-changed.exp: Likewise.
	* gdb.trace/qtro.exp: Likewise.
	* gdb.trace/read-memory.exp: Likewise.
	* gdb.trace/report.exp: Likewise.
	* gdb.trace/tfile.exp: Likewise.
	* gdb.trace/tfind.exp: Likewise.
	* gdb.trace/unavailable.exp: Likewise.
2019-04-23 14:12:25 +01:00

162 lines
4.2 KiB
Plaintext

# Copyright 2012-2019 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 trace-support.exp
load_lib mi-support.exp
set MIFLAGS "-i=mi"
standard_testfile tfile.c
set executable $testfile
if {![is_remote host] && ![is_remote target]} {
set tfile_basic [standard_output_file tfile-basic.tf]
set tfile_dir [file dirname $tfile_basic]/
set purely_local 1
} else {
set tfile_basic tfile-basic.tf
set tfile_dir ""
set purely_local 0
}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable \
[list debug nowarnings nopie\
"additional_flags=-DTFILE_DIR=\"$tfile_dir\""]] \
!= "" } {
untested "failed to compile"
return -1
}
# Make sure we are starting fresh.
remote_file host delete $tfile_basic
remote_file target delete $tfile_basic
proc test_tfind_tfile { } {
with_test_prefix "tfile" {
global binfile
global decimal
global tfile_basic
if [mi_gdb_start] {
return
}
mi_gdb_load ${binfile}
mi_gdb_test "-target-select tfile ${tfile_basic}" \
".*=breakpoint-created,bkpt=\{number=\"${decimal}\",type=\"tracepoint\",disp=\"keep\",enabled=\"y\",.*,func=\"write_basic_trace_file\".*\\^connected" \
"select trace file"
mi_gdb_test "tfind 0" \
".*=traceframe-changed,num=\"0\",tracepoint=\"${decimal}\".*\\^done" \
"tfind 0"
# No MI notification is sent because traceframe is not changed.
mi_gdb_test "tfind 0" \
"\\&\"tfind 0\\\\n\"\r\n\~\"Found.*\\^done" \
"tfind 0 again"
mi_gdb_test "tfind end" \
".*=traceframe-changed,end.*\\^done" \
"tfind end"
# No MI notification is send because request is from MI command.
mi_gdb_test "-trace-find frame-number 0" \
"-trace-find frame-number 0\r\n\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"0\",frame=\{.*" \
"-trace-find frame-number 0"
mi_gdb_exit
}
}
# If tracefile is generated successfully, copy tracefile to host and
# run tests.
if [generate_tracefile $binfile] {
if {!$purely_local} {
# Copy tracefile from target to host.
remote_download host [remote_upload target tfile-basic.tf] \
tfile-basic.tf
}
test_tfind_tfile
}
# Change to a different test case in order to run it on target, and get
# several traceframes.
standard_testfile status-stop.c
append testfile -1
append binfile -1
set executable $testfile
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
return -1
}
# Test target supports tracepoints or not.
clean_restart $executable
if ![runto_main] {
fail "can't run to main to check for trace support"
return -1
}
if ![gdb_target_supports_trace] {
unsupported "current target does not support trace"
return -1
}
gdb_exit
proc test_tfind_remote { } {
with_test_prefix "remote" {
global decimal
if [mi_gdb_start] {
return
}
mi_run_to_main
mi_gdb_test "-break-insert end" "\\^done.*" "break end"
mi_gdb_test "-break-insert -a func2" "\\^done.*" "break func2"
mi_gdb_test "-trace-start" "=breakpoint-modified,bkpt={.*installed=\"y\".*}.*\\^done.*" \
"trace start"
mi_execute_to "exec-continue" "breakpoint-hit" end "" ".*" ".*" \
{ "" "disp=\"keep\"" } \
"continue to end"
mi_gdb_test "-trace-stop" "\\^done.*" "trace stop"
mi_gdb_test "tfind 0" \
".*=traceframe-changed,num=\"0\",tracepoint=\"${decimal}\".*\\^done" \
"tfind 0"
mi_gdb_test "tfind" \
".*=traceframe-changed,num=\"1\",tracepoint=\"${decimal}\".*\\^done" \
"tfind"
mi_gdb_test "tfind end" \
".*=traceframe-changed,end.*\\^done" \
"tfind end"
mi_gdb_exit
}
}
test_tfind_remote
return 0