forked from Imagelibrary/binutils-gdb
Changes in v3: - Adjusted some testcases where the message "failed to compile" was not unique. Changes in v2: - Addressed comments from reviewers. - Fixed spurious whitespaces. - Changed compilation failure messages that included source/binary paths to ones that are short and deterministic. --- Another bit of cleanup to the testsuite. We have a number of tests that are not honoring the rule of not outputting their own name as a test name. I fixed up all the offenders i could find with the following regular expression: "(xfail|kfail|kpass|fail|pass|unsupported|untested) ([A-Za-z0-9]+|\\\$(.)*testfile(.)*)\.exp$" gdb/testsuite/ChangeLog: 2016-12-01 Luis Machado <lgustavo@codesourcery.com> Fix test names and standardize compilation error messages throughout the following files: * gdb.ada/start.exp * gdb.arch/alpha-step.exp * gdb.arch/e500-prologue.exp * gdb.arch/ftrace-insn-reloc.exp * gdb.arch/gdb1291.exp * gdb.arch/gdb1431.exp * gdb.arch/gdb1558.exp * gdb.arch/i386-dr3-watch.exp * gdb.arch/i386-sse-stack-align.exp * gdb.arch/ia64-breakpoint-shadow.exp * gdb.arch/pa-nullify.exp * gdb.arch/powerpc-aix-prologue.exp * gdb.arch/thumb-bx-pc.exp * gdb.base/annota1.exp * gdb.base/annota3.exp * gdb.base/arrayidx.exp * gdb.base/assign.exp * gdb.base/attach.exp * gdb.base/auxv.exp * gdb.base/bang.exp * gdb.base/bfp-test.exp * gdb.base/bigcore.exp * gdb.base/bitfields2.exp * gdb.base/break-fun-addr.exp * gdb.base/break-probes.exp * gdb.base/call-rt-st.exp * gdb.base/callexit.exp * gdb.base/catch-fork-kill.exp * gdb.base/charset.exp * gdb.base/checkpoint.exp * gdb.base/comprdebug.exp * gdb.base/constvars.exp * gdb.base/coredump-filter.exp * gdb.base/cursal.exp * gdb.base/cvexpr.exp * gdb.base/detach.exp * gdb.base/display.exp * gdb.base/dmsym.exp * gdb.base/dprintf-pending.exp * gdb.base/dso2dso.exp * gdb.base/dtrace-probe.exp * gdb.base/dump.exp * gdb.base/enum_cond.exp * gdb.base/exe-lock.exp * gdb.base/exec-invalid-sysroot.exp * gdb.base/execl-update-breakpoints.exp * gdb.base/exprs.exp * gdb.base/fileio.exp * gdb.base/find.exp * gdb.base/finish.exp * gdb.base/fixsection.exp * gdb.base/foll-vfork.exp * gdb.base/frame-args.exp * gdb.base/gcore.exp * gdb.base/gdb1250.exp * gdb.base/global-var-nested-by-dso.exp * gdb.base/gnu-ifunc.exp * gdb.base/hashline1.exp * gdb.base/hashline2.exp * gdb.base/hashline3.exp * gdb.base/hbreak-in-shr-unsupported.exp * gdb.base/huge.exp * gdb.base/infcall-input.exp * gdb.base/info-fun.exp * gdb.base/info-shared.exp * gdb.base/jit-simple.exp * gdb.base/jit-so.exp * gdb.base/jit.exp * gdb.base/jump.exp * gdb.base/label.exp * gdb.base/lineinc.exp * gdb.base/logical.exp * gdb.base/longjmp.exp * gdb.base/macscp.exp * gdb.base/miscexprs.exp * gdb.base/new-ui-echo.exp * gdb.base/new-ui-pending-input.exp * gdb.base/new-ui.exp * gdb.base/nodebug.exp * gdb.base/nofield.exp * gdb.base/offsets.exp * gdb.base/overlays.exp * gdb.base/pending.exp * gdb.base/pointers.exp * gdb.base/pr11022.exp * gdb.base/printcmds.exp * gdb.base/prologue.exp * gdb.base/ptr-typedef.exp * gdb.base/realname-expand.exp * gdb.base/relativedebug.exp * gdb.base/relocate.exp * gdb.base/remote.exp * gdb.base/reread.exp * gdb.base/return2.exp * gdb.base/savedregs.exp * gdb.base/sep.exp * gdb.base/sepdebug.exp * gdb.base/sepsymtab.exp * gdb.base/set-inferior-tty.exp * gdb.base/setshow.exp * gdb.base/shlib-call.exp * gdb.base/sigaltstack.exp * gdb.base/siginfo-addr.exp * gdb.base/signals.exp * gdb.base/signull.exp * gdb.base/sigrepeat.exp * gdb.base/so-impl-ld.exp * gdb.base/solib-display.exp * gdb.base/solib-overlap.exp * gdb.base/solib-search.exp * gdb.base/solib-symbol.exp * gdb.base/structs.exp * gdb.base/structs2.exp * gdb.base/symtab-search-order.exp * gdb.base/twice.exp * gdb.base/unload.exp * gdb.base/varargs.exp * gdb.base/watchpoint-solib.exp * gdb.base/watchpoint.exp * gdb.base/whatis.exp * gdb.base/wrong_frame_bt_full.exp * gdb.btrace/dlopen.exp * gdb.cell/ea-standalone.exp * gdb.cell/ea-test.exp * gdb.cp/dispcxx.exp * gdb.cp/gdb2384.exp * gdb.cp/method2.exp * gdb.cp/nextoverthrow.exp * gdb.cp/pr10728.exp * gdb.disasm/am33.exp * gdb.disasm/h8300s.exp * gdb.disasm/mn10300.exp * gdb.disasm/sh3.exp * gdb.dwarf2/dw2-dir-file-name.exp * gdb.fortran/complex.exp * gdb.fortran/library-module.exp * gdb.guile/scm-pretty-print.exp * gdb.guile/scm-symbol.exp * gdb.guile/scm-type.exp * gdb.guile/scm-value.exp * gdb.linespec/linespec.exp * gdb.mi/gdb701.exp * gdb.mi/gdb792.exp * gdb.mi/mi-breakpoint-changed.exp * gdb.mi/mi-dprintf-pending.exp * gdb.mi/mi-dprintf.exp * gdb.mi/mi-exit-code.exp * gdb.mi/mi-pending.exp * gdb.mi/mi-solib.exp * gdb.mi/new-ui-mi-sync.exp * gdb.mi/pr11022.exp * gdb.mi/user-selected-context-sync.exp * gdb.opt/solib-intra-step.exp * gdb.python/py-events.exp * gdb.python/py-finish-breakpoint.exp * gdb.python/py-mi.exp * gdb.python/py-prettyprint.exp * gdb.python/py-shared.exp * gdb.python/py-symbol.exp * gdb.python/py-template.exp * gdb.python/py-type.exp * gdb.python/py-value.exp * gdb.reverse/solib-precsave.exp * gdb.reverse/solib-reverse.exp * gdb.server/solib-list.exp * gdb.stabs/weird.exp * gdb.threads/reconnect-signal.exp * gdb.threads/stepi-random-signal.exp * gdb.trace/actions.exp * gdb.trace/ax.exp * gdb.trace/backtrace.exp * gdb.trace/change-loc.exp * gdb.trace/deltrace.exp * gdb.trace/ftrace-lock.exp * gdb.trace/ftrace.exp * gdb.trace/infotrace.exp * gdb.trace/mi-tracepoint-changed.exp * gdb.trace/packetlen.exp * gdb.trace/passcount.exp * gdb.trace/pending.exp * gdb.trace/range-stepping.exp * gdb.trace/report.exp * gdb.trace/stap-trace.exp * gdb.trace/tfind.exp * gdb.trace/trace-break.exp * gdb.trace/trace-condition.exp * gdb.trace/trace-enable-disable.exp * gdb.trace/trace-mt.exp * gdb.trace/tracecmd.exp * gdb.trace/tspeed.exp * gdb.trace/tsv.exp * lib/perftest.exp
285 lines
7.3 KiB
Plaintext
285 lines
7.3 KiB
Plaintext
# Copyright 2002-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/>.
|
|
|
|
# This file was written by Corinna Vinschen <vinschen@redhat.com>
|
|
|
|
if [target_info exists gdb,nofileio] {
|
|
verbose "Skipping fileio.exp because of no fileio capabilities."
|
|
continue
|
|
}
|
|
|
|
|
|
standard_testfile
|
|
|
|
if {[is_remote host]} {
|
|
set outdir .
|
|
} else {
|
|
set outdir [standard_output_file {}]
|
|
}
|
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
|
|
executable \
|
|
[list debug "additional_flags=-DOUTDIR=\"$outdir/\""]] != "" } {
|
|
untested "failed to compile"
|
|
return -1
|
|
}
|
|
|
|
# Create and source the file that provides information about the compiler
|
|
# used to compile the test case.
|
|
|
|
if [get_compiler_info] {
|
|
return -1
|
|
}
|
|
|
|
set dir2 [standard_output_file dir2.fileio.test]
|
|
if {[file exists $dir2] && ![file writable $dir2]} {
|
|
system "chmod +w $dir2"
|
|
}
|
|
system "rm -rf [standard_output_file *.fileio.test]"
|
|
|
|
set oldtimeout $timeout
|
|
set timeout [expr "$timeout + 60"]
|
|
|
|
# Start with a fresh gdb.
|
|
|
|
gdb_exit
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
gdb_load ${binfile}
|
|
gdb_test_no_output "set print sevenbit-strings"
|
|
gdb_test_no_output "set print address off"
|
|
gdb_test_no_output "set width 0"
|
|
|
|
if ![runto_main] then {
|
|
perror "couldn't run to breakpoint"
|
|
continue
|
|
}
|
|
|
|
gdb_test "break stop" "Breakpoint .*$srcfile.*"
|
|
|
|
set stop_msg ".*Breakpoint .* stop \\(\\) at.*$srcfile:.*static void stop \\(\\) {}.*"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*open 1:.*OK$stop_msg" \
|
|
"Open a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*open 2:.*EEXIST$stop_msg" \
|
|
"Creating already existing file returns EEXIST"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*open 3:.*EISDIR$stop_msg" \
|
|
"Open directory for writing returns EISDIR"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*open 4:.*ENOENT$stop_msg" \
|
|
"Opening nonexistant file returns ENOENT"
|
|
|
|
gdb_test "continue" ".*" ""
|
|
|
|
catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\""
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*open 5:.*EACCES$stop_msg" \
|
|
"Open for write but no write permission returns EACCES"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*write 1:.*OK$stop_msg" \
|
|
"Writing to a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*write 2:.*EBADF$stop_msg" \
|
|
"Write using invalid file descriptor returns EBADF"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*write 3:.*EBADF$stop_msg" \
|
|
"Writing to a read-only file returns EBADF"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*read 1:.*OK$stop_msg" \
|
|
"Reading from a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*read 2:.*EBADF$stop_msg" \
|
|
"Read using invalid file descriptor returns EBADF"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*lseek 1:.*OK$stop_msg" \
|
|
"Lseeking CUR a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*lseek 2:.*OK$stop_msg" \
|
|
"Lseeking END a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*lseek 3:.*OK$stop_msg" \
|
|
"Lseeking SET a file"
|
|
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*close 1:.*OK$stop_msg" \
|
|
"Closing a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*close 2:.*EBADF$stop_msg" \
|
|
"Closing an invalid file descriptor returns EBADF"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*stat 1:.*OK$stop_msg" \
|
|
"Stat a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*stat 2:.*(ENOENT|EFAULT)$stop_msg" \
|
|
"Stat a NULL pathname returns ENOENT or EFAULT"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*stat 3:.*ENOENT$stop_msg" \
|
|
"Stat an empty pathname returns ENOENT"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*stat 4:.*ENOENT$stop_msg" \
|
|
"Stat a nonexistant file returns ENOENT"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*fstat 1:.*OK$stop_msg" \
|
|
"Fstat an open file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*fstat 2:.*EBADF$stop_msg" \
|
|
"Fstat an invalid file descriptor returns EBADF"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*isatty 1:.*OK$stop_msg" \
|
|
"Isatty (stdin)"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*isatty 2:.*OK$stop_msg" \
|
|
"Isatty (stdout)"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*isatty 3:.*OK$stop_msg" \
|
|
"Isatty (stderr)"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*isatty 4:.*OK$stop_msg" \
|
|
"Isatty (invalid fd)"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*isatty 5:.*OK$stop_msg" \
|
|
"Isatty (open file)"
|
|
|
|
gdb_test_no_output "set debug remote 1"
|
|
set msg "System says shell is not available"
|
|
gdb_test_multiple "continue" $msg {
|
|
-re "Continuing\\..*Fsystem.*system 1:.*OK$stop_msg\r\n$gdb_prompt $" {
|
|
pass $msg
|
|
}
|
|
-re ".*Fsystem.*$gdb_prompt $" {
|
|
fail $msg
|
|
}
|
|
-re "$gdb_prompt $" {
|
|
unsupported $msg
|
|
}
|
|
}
|
|
gdb_test_no_output "set debug remote 0"
|
|
|
|
gdb_test_no_output "set remote system-call-allowed 1"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*system 2:.*OK$stop_msg" \
|
|
"System says shell is available"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*system 3:.*OK$stop_msg" \
|
|
"System(3) call"
|
|
|
|
# Is this ok? POSIX says system returns a waitpid status?
|
|
gdb_test continue \
|
|
"Continuing\\..*system 4:.*OK$stop_msg" \
|
|
"System with invalid command returns 127"
|
|
|
|
# Prepare the directory for rename tests in case that test_system
|
|
# failed to create.
|
|
set dir1 [file join $outdir "dir1.fileio.test" "subdir.fileio.test"]
|
|
remote_exec host "mkdir -p $dir1"
|
|
set dir1 [file join $outdir "dir2.fileio.test"]
|
|
remote_exec host "mkdir $dir1"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*rename 1:.*OK$stop_msg" \
|
|
"Rename a file"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*rename 2:.*EISDIR$stop_msg" \
|
|
"Renaming a file to existing directory returns EISDIR"
|
|
|
|
set test "renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST"
|
|
gdb_test_multiple continue "${test}" {
|
|
-re "Continuing\\..*rename 3:.*(ENOTEMPTY|EEXIST)$stop_msg$gdb_prompt $" {
|
|
pass "${test}"
|
|
}
|
|
-re "Continuing\\..*rename 3:.*EBUSY$stop_msg$gdb_prompt $" {
|
|
# At least version <= 2.6/2004-01-08 of the Linux Kernel gets
|
|
# this wrong (reporting EBUSY) when the file system is NFS
|
|
# mounted.
|
|
setup_xfail *-*-*linux* gdb/1502
|
|
fail "${test}"
|
|
}
|
|
}
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*rename 4:.*EINVAL$stop_msg" \
|
|
"Renaming a directory to a subdir of itself returns EINVAL"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*rename 5:.*ENOENT$stop_msg" \
|
|
"Renaming a nonexistant file returns ENOENT"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*unlink 1:.*OK$stop_msg" \
|
|
"Unlink a file"
|
|
|
|
# This test fails on Cygwin because unlink() succeeds on Win32 systems
|
|
# in that situation.
|
|
if [ishost *cygwin*] {
|
|
setup_xfail "*-*-*"
|
|
}
|
|
gdb_test continue \
|
|
"Continuing\\..*unlink 2:.*EACCES$stop_msg" \
|
|
"Unlinking a file in a directory w/o write access returns EACCES"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*unlink 3:.*ENOENT$stop_msg" \
|
|
"Unlinking a nonexistant file returns ENOENT"
|
|
|
|
gdb_test continue \
|
|
"Continuing\\..*time 1:.*OK$stop_msg" \
|
|
"Time(2) call returns the same value as in parameter"
|
|
|
|
sleep 2
|
|
gdb_test continue \
|
|
"Continuing\\..*time 2:.*OK$stop_msg" \
|
|
"Time(2) returns feasible values"
|
|
|
|
gdb_exit
|
|
|
|
# Make dir2 writable again so rm -rf of a build tree Just Works.
|
|
if {[file exists $dir2] && ![file writable $dir2]} {
|
|
system "chmod +w $dir2"
|
|
}
|
|
|
|
set timeout $oldtimeout
|
|
return 0
|