forked from Imagelibrary/binutils-gdb
gdb/testsuite: XFAIL some gdb.base/fileio.exp
Some gdb.base/fileio.exp tests expect the inferior to not have write access to some files. If the test is being run as root, this is never possible. This commit adds a way to identify if the user is root and xfails the tests that expect no write access. Approved-By: Tom de Vries <tdevries@suse.de>
This commit is contained in:
@@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
require {!target_info exists gdb,nofileio}
|
require {!target_info exists gdb,nofileio}
|
||||||
|
|
||||||
|
|
||||||
standard_testfile
|
standard_testfile
|
||||||
|
|
||||||
if {[is_remote host]} {
|
if {[is_remote host]} {
|
||||||
@@ -75,6 +74,10 @@ gdb_test "continue" ".*" ""
|
|||||||
|
|
||||||
catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\""
|
catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\""
|
||||||
|
|
||||||
|
# If the user is root, we will always have write permission.
|
||||||
|
if { [root_user] } {
|
||||||
|
setup_xfail *-*-*
|
||||||
|
}
|
||||||
gdb_test continue \
|
gdb_test continue \
|
||||||
"Continuing\\..*open 5:.*EACCES$stop_msg" \
|
"Continuing\\..*open 5:.*EACCES$stop_msg" \
|
||||||
"Open for write but no write permission returns EACCES"
|
"Open for write but no write permission returns EACCES"
|
||||||
@@ -240,6 +243,10 @@ gdb_test continue \
|
|||||||
if [ishost *cygwin*] {
|
if [ishost *cygwin*] {
|
||||||
setup_xfail "*-*-*"
|
setup_xfail "*-*-*"
|
||||||
}
|
}
|
||||||
|
# If the user is root, we will always have write permission.
|
||||||
|
if { [root_user] } {
|
||||||
|
setup_xfail *-*-*
|
||||||
|
}
|
||||||
gdb_test continue \
|
gdb_test continue \
|
||||||
"Continuing\\..*unlink 2:.*EACCES$stop_msg" \
|
"Continuing\\..*unlink 2:.*EACCES$stop_msg" \
|
||||||
"Unlinking a file in a directory w/o write access returns EACCES"
|
"Unlinking a file in a directory w/o write access returns EACCES"
|
||||||
|
|||||||
@@ -10230,5 +10230,25 @@ gdb_caching_proc have_system_header { file } {
|
|||||||
return [gdb_can_simple_compile have_system_header_$name $src object]
|
return [gdb_can_simple_compile have_system_header_$name $src object]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Return 1 if the test is being run as root, 0 otherwise.
|
||||||
|
|
||||||
|
gdb_caching_proc root_user {} {
|
||||||
|
# ID outputs to stdout, we have to use exec to capture it here.
|
||||||
|
set res [remote_exec target id]
|
||||||
|
set ret_val [lindex $res 0]
|
||||||
|
set output [lindex $res 1]
|
||||||
|
|
||||||
|
# If ret_val is not 0, we couldn't run `id` on the target for some
|
||||||
|
# reason. Return that we are not root, so problems are easier to
|
||||||
|
# spot.
|
||||||
|
if { $ret_val != 0 } {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
regexp -all ".*uid=(\[0-9\]+).*" $output dummy uid
|
||||||
|
|
||||||
|
return [expr $uid == 0]
|
||||||
|
}
|
||||||
|
|
||||||
# Always load compatibility stuff.
|
# Always load compatibility stuff.
|
||||||
load_lib future.exp
|
load_lib future.exp
|
||||||
|
|||||||
Reference in New Issue
Block a user