compudj added a comment.

Hi,

First, thanks for working on this. I am the author of the "rseq" system call in 
the Linux kernel, and the user-space code required to interact with that system 
call requires asm goto. I therefore look forward to getting asm goto support in 
clang.

I tried this patch on top of current clang on the following Linux kernel rseq 
selftests, and it fails to build. Hopefully this feedback can help you improve 
the current implementation.

The kernel rseq selftests can be found at:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/testing/selftests/rseq

from the kernel source tree (on x86-64):

make headers_install
cd tools/testing/selftests/rseq
make CC=/path/to/clang

build output:

/home/efficios/git/llvm-project/build/bin/clang -O2 -Wall -g -I./ 
-I../../../../usr/include/ -L./ -Wl,-rpath=./ -shared -fPIC rseq.c -lpthread -o 
/home/efficios/git/linux/tools/testing/selftests/rseq/librseq.so
/home/efficios/git/llvm-project/build/bin/clang -O2 -Wall -g -I./ 
-I../../../../usr/include/ -L./ -Wl,-rpath=./ basic_test.c -lpthread -lrseq -o 
/home/efficios/git/linux/tools/testing/selftests/rseq/basic_test
/home/efficios/git/llvm-project/build/bin/clang -O2 -Wall -g -I./ 
-I../../../../usr/include/ -L./ -Wl,-rpath=./ basic_percpu_ops_test.c -lpthread 
-lrseq -o 
/home/efficios/git/linux/tools/testing/selftests/rseq/basic_percpu_ops_test
In file included from basic_percpu_ops_test.c:12:
In file included from ./rseq.h:71:
./rseq-x86.h:90:26: error: expected a symbol reference

  "cmpq %[v], %[expect]\n\t"
                         ^

<inline asm>:13:8: note: instantiated into assembly here

  jnz ""
        ^

In file included from basic_percpu_ops_test.c:12:
In file included from ./rseq.h:71:
./rseq-x86.h:102:3: error: expected a symbol reference

  RSEQ_ASM_DEFINE_ABORT(4, "", abort)
  ^

./rseq-x86.h:67:25: note: expanded from macro 'RSEQ_ASM_DEFINE_ABORT'

  __rseq_str(label) ":\n\t"                               \
                        ^

<inline asm>:20:8: note: instantiated into assembly here

  jmp ""
        ^

In file included from basic_percpu_ops_test.c:12:
In file included from ./rseq.h:71:
./rseq-x86.h:148:30: error: expected a symbol reference

  "cmpq %%rbx, %[expectnot]\n\t"
                             ^

<inline asm>:14:7: note: instantiated into assembly here

  je ""
       ^

In file included from basic_percpu_ops_test.c:12:
In file included from ./rseq.h:71:
./rseq-x86.h:164:3: error: expected a symbol reference

  RSEQ_ASM_DEFINE_ABORT(4, "", abort)
  ^

./rseq-x86.h:67:25: note: expanded from macro 'RSEQ_ASM_DEFINE_ABORT'

  __rseq_str(label) ":\n\t"                               \
                        ^

<inline asm>:24:8: note: instantiated into assembly here

  jmp ""
        ^

4 errors generated.
Makefile:22: recipe for target 
'/home/efficios/git/linux/tools/testing/selftests/rseq/basic_percpu_ops_test' 
failed
make: *** 
[/home/efficios/git/linux/tools/testing/selftests/rseq/basic_percpu_ops_test] 
Error 1


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56571/new/

https://reviews.llvm.org/D56571



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to