Bug 29790 - [gdb/testsuite] FAIL: gdb.arch/i386-pkru.exp: read value after setting value
Summary: [gdb/testsuite] FAIL: gdb.arch/i386-pkru.exp: read value after setting value
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: testsuite (show other bugs)
Version: 12.1
: P2 normal
Target Milestone: 14.1
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-11-16 14:03 UTC by Tom de Vries
Modified: 2023-01-03 15:42 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
Tentative patch (888 bytes, patch)
2023-01-02 10:07 UTC, Tom de Vries
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tom de Vries 2022-11-16 14:03:20 UTC
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
...
Comment 1 Tom de Vries 2022-11-17 07:33:36 UTC
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.
Comment 2 Tom de Vries 2022-12-16 22:30:06 UTC
OK, that seems to be a kernel bug, fixed by commit 4a804c4f8356 (x86/fpu: Allow PKRU to be (once again) written by ptrace.)
Comment 3 Tom de Vries 2023-01-02 10:07:18 UTC
Created attachment 14544 [details]
Tentative patch
Comment 4 Sourceware Commits 2023-01-03 15:41:10 UTC
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
Comment 5 Tom de Vries 2023-01-03 15:42:01 UTC
Fixed by commit.