]> git.ipfire.org Git - thirdparty/gcc.git/commit
bpf: default to using pseudo-C assembly syntax by default
authorJose E. Marchesi <jose.marchesi@oracle.com>
Thu, 25 Apr 2024 14:53:49 +0000 (16:53 +0200)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Thu, 25 Apr 2024 15:33:45 +0000 (17:33 +0200)
commitc96c2a304b4a98116520cce497fbf5bab7465f23
treeb92254a9977b42af759c918e392e9dbc990c5fd9
parentad45086178d833254d66fab518b14234418f002b
bpf: default to using pseudo-C assembly syntax by default

At this point the kernel headers that almost all BPF programs use
contain pseudo-C inline assembly and having the GNU toolchain using
the conventional assembly syntax by default would force users to
specify the command-line option explicitly almost all of the time,
which is very inconvenient.

This patch changes GCC in order to recognize and generate the pseudo-C
assembly syntax of BPF by default.  The ASM_SPEC is adapted
accordingly, and in a way that the current release of the BPF
assembler (which still expects conventional assembler syntax by
default) does the right thing.

Tested in bpf-unknown-none-bpf target and x86_64-linux-gnu host.
No regressions.

gcc/ChangeLog

* config/bpf/bpf.opt: Use ASM_PSEUDOC for the default value of
-masm.
* config/bpf/bpf.h (ASM_SPEC): Adapt accordingly.
* doc/invoke.texi (eBPF Options): Update.

gcc/testsuite/ChangeLog

* gcc.target/bpf/alu-1.c: Specify conventional asm dialect.
* gcc.target/bpf/xbpf-indirect-call-1.c: Likewise.
* gcc.target/bpf/sync-fetch-and-add.c: Likewise.
* gcc.target/bpf/smov-2.c: Likewise.
* gcc.target/bpf/smov-1.c: Likewise.
* gcc.target/bpf/smod-1.c: Likewise.
* gcc.target/bpf/sload-1.c: Likewise.
* gcc.target/bpf/sdiv-1.c: Likewise.
* gcc.target/bpf/nop-1.c: Likewise.
* gcc.target/bpf/neg-1.c: Likewise.
* gcc.target/bpf/ldxdw.c: Likewise.
* gcc.target/bpf/jmp-1.c: Likewise.
* gcc.target/bpf/inline-memops-threshold-1.c: Likewise.
* gcc.target/bpf/float-1.c: Likewise.
* gcc.target/bpf/double-2.c: Likewise.
* gcc.target/bpf/double-1.c: Likewise.
* gcc.target/bpf/core-builtin-type-id.c: Likewise.
* gcc.target/bpf/core-builtin-type-based.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-size-1.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-sign-2.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-sign-1.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-rshift-2.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-rshift-1.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-offset-1.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-lshift-2.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-lshift-1-le.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-lshift-1-be.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-existence-1.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-errors-2.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-errors-1.c: Likewise.
* gcc.target/bpf/core-builtin-fieldinfo-const-elimination.c:
Likewise.
* gcc.target/bpf/core-builtin-exprlist-4.c: Likewise.
* gcc.target/bpf/core-builtin-exprlist-3.c: Likewise.
* gcc.target/bpf/core-builtin-exprlist-2.c: Likewise.
* gcc.target/bpf/core-builtin-exprlist-1.c: Likewise.
* gcc.target/bpf/core-builtin-enumvalue-opt.c: Likewise.
* gcc.target/bpf/core-builtin-enumvalue-errors.c: Likewise.
* gcc.target/bpf/core-builtin-enumvalue.c: Likewise.
* gcc.target/bpf/core-builtin-3.c: Likewise.
* gcc.target/bpf/core-builtin-2.c: Likewise.
* gcc.target/bpf/core-builtin-1.c: Likewise.
* gcc.target/bpf/core-attr-struct-as-array.c: Likewise.
* gcc.target/bpf/core-attr-6.c: Likewise.
* gcc.target/bpf/core-attr-5.c: Likewise.
* gcc.target/bpf/core-attr-4.c: Likewise.
* gcc.target/bpf/core-attr-3.c: Likewise.
* gcc.target/bpf/core-attr-2.c: Likewise.
* gcc.target/bpf/core-attr-1.c: Likewise.
* gcc.target/bpf/builtin-load.c: Likewise.
* gcc.target/bpf/btfext-funcinfo-nocore.c: Likewise.
* gcc.target/bpf/btfext-funcinfo.c: Likewise.
* gcc.target/bpf/bswap-1.c: Likewise.
* gcc.target/bpf/bswap-2.c: Likewise.
* gcc.target/bpf/attr-kernel-helper.c: Likewise.
* gcc.target/bpf/atomic-xchg-2.c: Likewise.
* gcc.target/bpf/atomic-xchg-1.c: Likewise.
* gcc.target/bpf/atomic-op-3.c: Likewise.
* gcc.target/bpf/atomic-op-2.c: Likewise.
* gcc.target/bpf/atomic-op-1.c: Likewise.
* gcc.target/bpf/atomic-fetch-op-3.c: Likewise.
* gcc.target/bpf/atomic-fetch-op-2.c: Likewise.
* gcc.target/bpf/atomic-fetch-op-1.c: Likewise.
* gcc.target/bpf/atomic-cmpxchg-2.c: Likewise.
* gcc.target/bpf/atomic-cmpxchg-1.c: Likewise.
* gcc.target/bpf/alu-2.c: Likewise.
68 files changed:
gcc/config/bpf/bpf.h
gcc/config/bpf/bpf.opt
gcc/doc/invoke.texi
gcc/testsuite/gcc.target/bpf/alu-1.c
gcc/testsuite/gcc.target/bpf/alu-2.c
gcc/testsuite/gcc.target/bpf/atomic-cmpxchg-1.c
gcc/testsuite/gcc.target/bpf/atomic-cmpxchg-2.c
gcc/testsuite/gcc.target/bpf/atomic-fetch-op-1.c
gcc/testsuite/gcc.target/bpf/atomic-fetch-op-2.c
gcc/testsuite/gcc.target/bpf/atomic-fetch-op-3.c
gcc/testsuite/gcc.target/bpf/atomic-op-1.c
gcc/testsuite/gcc.target/bpf/atomic-op-2.c
gcc/testsuite/gcc.target/bpf/atomic-op-3.c
gcc/testsuite/gcc.target/bpf/atomic-xchg-1.c
gcc/testsuite/gcc.target/bpf/atomic-xchg-2.c
gcc/testsuite/gcc.target/bpf/attr-kernel-helper.c
gcc/testsuite/gcc.target/bpf/bswap-1.c
gcc/testsuite/gcc.target/bpf/bswap-2.c
gcc/testsuite/gcc.target/bpf/btfext-funcinfo-nocore.c
gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c
gcc/testsuite/gcc.target/bpf/builtin-load.c
gcc/testsuite/gcc.target/bpf/core-attr-1.c
gcc/testsuite/gcc.target/bpf/core-attr-2.c
gcc/testsuite/gcc.target/bpf/core-attr-3.c
gcc/testsuite/gcc.target/bpf/core-attr-4.c
gcc/testsuite/gcc.target/bpf/core-attr-5.c
gcc/testsuite/gcc.target/bpf/core-attr-6.c
gcc/testsuite/gcc.target/bpf/core-attr-struct-as-array.c
gcc/testsuite/gcc.target/bpf/core-builtin-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-2.c
gcc/testsuite/gcc.target/bpf/core-builtin-3.c
gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue-errors.c
gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue-opt.c
gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c
gcc/testsuite/gcc.target/bpf/core-builtin-exprlist-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-exprlist-2.c
gcc/testsuite/gcc.target/bpf/core-builtin-exprlist-3.c
gcc/testsuite/gcc.target/bpf/core-builtin-exprlist-4.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-const-elimination.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-errors-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-errors-2.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-existence-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-lshift-1-be.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-lshift-1-le.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-lshift-2.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-offset-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-rshift-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-rshift-2.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-sign-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-sign-2.c
gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-size-1.c
gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c
gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c
gcc/testsuite/gcc.target/bpf/double-1.c
gcc/testsuite/gcc.target/bpf/double-2.c
gcc/testsuite/gcc.target/bpf/float-1.c
gcc/testsuite/gcc.target/bpf/inline-memops-threshold-1.c
gcc/testsuite/gcc.target/bpf/jmp-1.c
gcc/testsuite/gcc.target/bpf/ldxdw.c
gcc/testsuite/gcc.target/bpf/neg-1.c
gcc/testsuite/gcc.target/bpf/nop-1.c
gcc/testsuite/gcc.target/bpf/sdiv-1.c
gcc/testsuite/gcc.target/bpf/sload-1.c
gcc/testsuite/gcc.target/bpf/smod-1.c
gcc/testsuite/gcc.target/bpf/smov-1.c
gcc/testsuite/gcc.target/bpf/smov-2.c
gcc/testsuite/gcc.target/bpf/sync-fetch-and-add.c
gcc/testsuite/gcc.target/bpf/xbpf-indirect-call-1.c