Once in a blue moon, our OBS runs on a machine with pkru support, and I got (with a gdb 12.1-based package): ... Running /home/abuild/rpmbuild/BUILD/gdb-12.1/gdb/testsuite/gdb.arch/i386-pkru.exp ... PASS: gdb.arch/i386-pkru.exp: probe PKRU support PASS: gdb.arch/i386-pkru.exp: pkru register PASS: gdb.arch/i386-pkru.exp: continue to breakpoint: break here 1 PASS: gdb.arch/i386-pkru.exp: read pkru register PASS: gdb.arch/i386-pkru.exp: set pkru value FAIL: gdb.arch/i386-pkru.exp: read value after setting value PASS: gdb.arch/i386-pkru.exp: continue to breakpoint: break here 2 FAIL: gdb.arch/i386-pkru.exp: variable after reading pkru ... In more detail: ... (gdb) PASS: gdb.arch/i386-pkru.exp: read pkru register print /x $pkru = 0x44444444^M $3 = 0x44444444^M (gdb) PASS: gdb.arch/i386-pkru.exp: set pkru value info register pkru^M pkru 0x12345678 305419896^M (gdb) FAIL: gdb.arch/i386-pkru.exp: read value after setting value ...
Note: it happened both in gdb-i586-suse-linux-m32.sum and gdb-i586-suse-linux-m32.-fno-PIE.-no-pie.sum, so it's not a fluke.
OK, that seems to be a kernel bug, fixed by commit 4a804c4f8356 (x86/fpu: Allow PKRU to be (once again) written by ptrace.)
Created attachment 14544 [details] Tentative patch
The master branch has been updated by Tom de Vries <vries@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b46632ca16021962c33c2ea32b8104fd258ef0af commit b46632ca16021962c33c2ea32b8104fd258ef0af Author: Tom de Vries <tdevries@suse.de> Date: Tue Jan 3 16:41:05 2023 +0100 [gdb/testsuite] Add xfail in gdb.arch/i386-pkru.exp On a x86_64-linux machine with pkru register, I run into: ... (gdb) PASS: gdb.arch/i386-pkru.exp: set pkru value info register pkru^M pkru 0x12345678 305419896^M (gdb) FAIL: gdb.arch/i386-pkru.exp: read value after setting value ... This is a regression due to kernel commit e84ba47e313d ("x86/fpu: Hook up PKRU onto ptrace()"). This is fixed by recent kernel commit 4a804c4f8356 ("x86/fpu: Allow PKRU to be (once again) written by ptrace."). The regression occurs for kernel versions v5.14-rc1 (the first tag containing the regression) up to but excluding v6.2-rc1 (the first tag containing the fix). Fix this by adding an xfail for the appropriate kernel versions. Tested on x86_64-linux. PR testsuite/29790 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29790
Fixed by commit.