PR23866: Make the bpf backend use BPF raw tracepoints for kernel.trace("*")
The BPF raw tracepoints provide arguments that better match the
Systemtap lkm kernel tracepoint probes than regular BPF tracepoints.
The BPF backend will use the BPF raw tracepoints unless the user
specifies the old behavior with a --compatible=4.1 option on the
commandline to address.
The new BPF raw tracepoints and their argument are discovered in the
same way as the old BPF tracepoints. A number of small machine
generated C files are generated with macros are compiled to query the
available tracepoints in the kernel. Debug information describing the
data structures passed into the BPF tracepoints is examined to
determine the type and location of the tracepoint arguments.
Each probe handler BPF code for BPF raw tracepoints is put into a
raw_trace section as the method of registering the BPF raw tracepoints
is different than the regular BPF tracepoints.
The bpf tests have been revised to include the --compatible=4.1 option
for the tests where it makes a difference.