OSDN Git Service

samples/bpf: Fix tracex5 to work with MIPS syscalls.
authorDavid Daney <david.daney@cavium.com>
Tue, 13 Jun 2017 23:49:38 +0000 (16:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 14 Jun 2017 19:03:23 +0000 (15:03 -0400)
commit4b7190e8416d9238e995da993a7fb851996654e2
treecd9223768849c8dc218787198acdc37d4ba2dc17
parentc1932cdb275e65cbef2f230f0df0c490fdd03c62
samples/bpf: Fix tracex5 to work with MIPS syscalls.

There are two problems:

1) In MIPS the __NR_* macros expand to an expression, this causes the
   sections of the object file to be named like:

  .
  .
  .
  [ 5] kprobe/(5000 + 1) PROGBITS        0000000000000000 000160 ...
  [ 6] kprobe/(5000 + 0) PROGBITS        0000000000000000 000258 ...
  [ 7] kprobe/(5000 + 9) PROGBITS        0000000000000000 000348 ...
  .
  .
  .

The fix here is to use the "asm_offsets" trick to evaluate the macros
in the C compiler and generate a header file with a usable form of the
macros.

2) MIPS syscall numbers start at 5000, so we need a bigger map to hold
the sub-programs.

Signed-off-by: David Daney <david.daney@cavium.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
samples/bpf/Makefile
samples/bpf/syscall_nrs.c [new file with mode: 0644]
samples/bpf/tracex5_kern.c