Re: [PATCH 0/8] selftests: x86: build suite with clang

From: Fangrui Song
Date: Wed May 15 2024 - 18:20:28 EST


On Mon, May 6, 2024 at 4:26 PM Fangrui Song <maskray@xxxxxxxxxx> wrote:
>
> On Wed, May 1, 2024 at 5:29 AM Muhammad Usama Anjum
> <usama.anjum@xxxxxxxxxxxxx> wrote:
> >
> > This series fixes build errors found by clang to allow the x86 suite to
> > get built with the clang.
> >
> > Unfortunately, there is one bug [1] in the clang becuase of which
> > extended asm isn't handled correctly by it and build fails for
> > sysret_rip.c. Hence even after this series the build of this test would
> > fail with clang. Should we disable this test for now when clang is used
> > until the bug is fixed in clang? Not sure. Any opinions?
> >
> > [1] https://github.com/llvm/llvm-project/issues/53728
>
> I've closed https://github.com/llvm/llvm-project/issues/53728
> (constant expression folding for relocatable file output
> (MCObjectStreamer)).
>
> I've sent a patch to address https://github.com/llvm/llvm-project/issues/62520
> (constant expression folding for relocatable file output when inline
> assembly is used).
>
> (I am subscribed to llvm@xxxxxxxxxxxxxxx but rarely read it. I noticed
> this message accidentally :) )

On the LLVM/Clang side, I've landed
https://github.com/llvm/llvm-project/pull/91082 to make the following
if directive work for clang -c. clang -S still doesn't work
(https://discourse.llvm.org/t/rfc-clang-assembly-object-equivalence-for-files-with-inline-assembly/78841/4?u=maskray)
but people can probably live with that

```
% cat b.cc
asm(R"(
pushsection .text,"ax"
globl _start; _start: ret
if . -_start == 1
ret
endif
popsection
)");

% clang -c b.cc # succeeded with this patch
% clang -S b.cc # still failed
<inline asm>:4:5: error: expected absolute expression
4 | .if . -_start == 1
| ^
1 error generated.
```


> > Muhammad Usama Anjum (8):
> > selftests: x86: Remove dependence of headers file
> > selftests: x86: check_initial_reg_state: remove -no-pie while using
> > -static
> > selftests: x86: test_vsyscall: remove unused function
> > selftests: x86: fsgsbase_restore: fix asm directive from =rm to =r
> > selftests: x86: syscall_arg_fault_32: remove unused variable
> > selftests: x86: test_FISTTP: use fisttps instead of ambigous fisttp
> > selftests: x86: fsgsbase: Remove unused function and variable
> > selftests: x86: amx: Remove unused functions
> >
> > tools/testing/selftests/x86/Makefile | 9 +++++----
> > tools/testing/selftests/x86/amx.c | 16 ----------------
> > tools/testing/selftests/x86/fsgsbase.c | 6 ------
> > tools/testing/selftests/x86/fsgsbase_restore.c | 2 +-
> > tools/testing/selftests/x86/syscall_arg_fault.c | 1 -
> > tools/testing/selftests/x86/test_FISTTP.c | 8 ++++----
> > tools/testing/selftests/x86/test_vsyscall.c | 5 -----
> > 7 files changed, 10 insertions(+), 37 deletions(-)
> >
> > --
> > 2.39.2
> >
> >