bpf: define BPF feature pre-processor macros
commit152d945d42136737305fd55f1239a3dd6037c8a7
authorJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 24 Apr 2024 11:48:51 +0000 (24 13:48 +0200)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 24 Apr 2024 11:54:56 +0000 (24 13:54 +0200)
tree2b754adae679b407beccc6c889456083e2ab5ba7
parentcc48418cfc2e555d837ae9138cbfac23acb3cdf9
bpf: define BPF feature pre-processor macros

This commit makes the BPF backend to define the following macros for
c-family languages:

  __BPF_CPU_VERSION__

    This is a numeric value identifying the version of the BPF "cpu"
    for which GCC is generating code.

  __BPF_FEATURE_ALU32
  __BPF_FEATURE_JMP32
  __BPF_FEATURE_JMP_EXT
  __BPF_FEATURE_BSWAP
  __BPF_FEATURE_SDIV_SMOD
  __BPF_FEATURE_MOVSX
  __BPF_FEATURE_LDSX
  __BPF_FEATURE_GOTOL
  __BPF_FEATURE_ST

    These are defines if the corresponding "feature" is enabled.  The
    features are implicitly enabled by the BPF CPU version enabled,
    and most of them can also be enabled/disabled using
    target-specific -m[no-]FEATURE command line switches.

Note that this patch moves the definition of bpf_target_macros, that
implements TARGET_CPU_CPP_BUILTINS in the BPF backend, to a bpf-c.cc
file.  This is because we are now using facilities from c-family/* and
these features are not available in compilers like lto1.

A couple of tests are also added.
Tested in target bpf-unknown-none-gcc and host x86_64-linux-gnu.
No regressions.

gcc/ChangeLog

* config.gcc: Add bpf-c.o as a target object for C and C++.
* config/bpf/bpf.cc (bpf_target_macros): Move to bpf-c.cc.
* config/bpf/bpf-c.cc: New file.
(bpf_target_macros): Move from bpf.cc and define BPF CPU
feature macros.
* config/bpf/t-bpf: Add rules to build bpf-c.o.

gcc/testsuite/ChangeLog

* gcc.target/bpf/feature-macro-1.c: New test.
* gcc.target/bpf/feature-macro-2.c: Likewise.
gcc/config.gcc
gcc/config/bpf/bpf-c.cc [new file with mode: 0644]
gcc/config/bpf/bpf.cc
gcc/config/bpf/t-bpf
gcc/testsuite/gcc.target/bpf/feature-macro-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/bpf/feature-macro-2.c [new file with mode: 0644]