aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuinevere Larsen <blarsen@redhat.com>2023-08-11 11:58:11 +0200
committerGuinevere Larsen <blarsen@redhat.com>2023-10-04 17:43:23 +0200
commit1bdabb9e9fe8ac2c02640645a2ec42c496c5cb94 (patch)
tree43ee8352e0d39a1ea587110956d738fa98aa175c
parent2aafdd4de60e02dfa7b04fc0c6cc33ee90257700 (diff)
downloadfsf-binutils-gdb-1bdabb9e9fe8ac2c02640645a2ec42c496c5cb94.zip
fsf-binutils-gdb-1bdabb9e9fe8ac2c02640645a2ec42c496c5cb94.tar.gz
fsf-binutils-gdb-1bdabb9e9fe8ac2c02640645a2ec42c496c5cb94.tar.bz2
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>
-rw-r--r--gdb/testsuite/gdb.base/fileio.exp9
-rw-r--r--gdb/testsuite/lib/gdb.exp20
2 files changed, 28 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/fileio.exp b/gdb/testsuite/gdb.base/fileio.exp
index 33c88d0..6a708ed 100644
--- a/gdb/testsuite/gdb.base/fileio.exp
+++ b/gdb/testsuite/gdb.base/fileio.exp
@@ -17,7 +17,6 @@
require {!target_info exists gdb,nofileio}
-
standard_testfile
if {[is_remote host]} {
@@ -75,6 +74,10 @@ gdb_test "continue" ".*" ""
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 \
"Continuing\\..*open 5:.*EACCES$stop_msg" \
"Open for write but no write permission returns EACCES"
@@ -240,6 +243,10 @@ gdb_test continue \
if [ishost *cygwin*] {
setup_xfail "*-*-*"
}
+# If the user is root, we will always have write permission.
+if { [root_user] } {
+ setup_xfail *-*-*
+}
gdb_test continue \
"Continuing\\..*unlink 2:.*EACCES$stop_msg" \
"Unlinking a file in a directory w/o write access returns EACCES"
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index c9f1f66..3cad4f7 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -10230,5 +10230,25 @@ gdb_caching_proc have_system_header { file } {
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.
load_lib future.exp