gen-bindings.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #!/usr/bin/env sh
  2. set -e
  3. LIBBPF_DIR=$1
  4. OUTPUT_DIR=$2
  5. if test -z "$LIBBPF_DIR"; then
  6. echo "error: no libbpf dir provided"
  7. exit 1
  8. fi
  9. if test -z "$OUTPUT_DIR"; then
  10. echo "error: no output dir provided"
  11. exit 1
  12. fi
  13. BPF_TYPES="\
  14. bpf_cmd \
  15. bpf_insn \
  16. bpf_attr \
  17. bpf_map_type \
  18. bpf_prog_type \
  19. bpf_attach_type
  20. "
  21. BPF_VARS="\
  22. BPF_PSEUDO_.*
  23. BPF_ALU \
  24. BPF_ALU64 \
  25. BPF_LDX \
  26. BPF_ST \
  27. BPF_STX \
  28. BPF_LD \
  29. BPF_K \
  30. BPF_DW \
  31. BPF_W \
  32. BPF_H \
  33. BPF_B \
  34. SO_ATTACH_BPF \
  35. SO_DETACH_BPF
  36. "
  37. BTF_TYPES="\
  38. btf_header \
  39. btf_ext_header \
  40. btf_ext_info \
  41. btf_ext_info_sec \
  42. bpf_core_relo \
  43. bpf_core_relo_kind \
  44. btf_type \
  45. btf_enum \
  46. btf_array \
  47. btf_member \
  48. btf_param \
  49. btf_var \
  50. btf_var_secinfo
  51. "
  52. BTF_VARS="\
  53. BTF_KIND_.*
  54. BTF_INT_.*
  55. "
  56. PERF_TYPES="\
  57. perf_event_attr \
  58. perf_sw_ids \
  59. perf_event_sample_format \
  60. perf_event_mmap_page \
  61. perf_event_header \
  62. perf_type_id \
  63. perf_event_type
  64. "
  65. PERF_VARS="\
  66. PERF_FLAG_.* \
  67. PERF_EVENT_.*
  68. "
  69. NETLINK_TYPES="\
  70. ifinfomsg
  71. "
  72. NETLINK_VARS="\
  73. NLMSG_ALIGNTO \
  74. IFLA_XDP_FD \
  75. XDP_FLAGS_.*
  76. "
  77. LINUX_TYPES="$BPF_TYPES $BTF_TYPES $PERF_TYPES $NETLINK_TYPES"
  78. LINUX_VARS="$BPF_VARS $BTF_VARS $PERF_VARS $NETLINK_VARS"
  79. bindgen $LIBBPF_DIR/src/libbpf_internal.h \
  80. --no-layout-tests \
  81. --default-enum-style moduleconsts \
  82. $(for ty in $BTF_TYPES; do
  83. echo --whitelist-type "$ty"
  84. done) \
  85. $(for var in $BTF_VARS; do
  86. echo --whitelist-var "$var"
  87. done) \
  88. > $OUTPUT_DIR/btf_internal_bindings.rs
  89. KVER=5.10.0-051000
  90. bindgen aya/include/linux_wrapper.h \
  91. --no-layout-tests \
  92. --default-enum-style moduleconsts \
  93. $(for ty in $LINUX_TYPES; do
  94. echo --whitelist-type "$ty"
  95. done) \
  96. $(for var in $LINUX_VARS; do
  97. echo --whitelist-var "$var"
  98. done) \
  99. -- \
  100. -target x86_64 \
  101. -I $LIBBPF_DIR/include/uapi \
  102. -I $LIBBPF_DIR/include/ \
  103. -I /usr/include/x86_64-linux-gnu \
  104. > $OUTPUT_DIR/linux_bindings_x86_64.rs
  105. # requires libc6-dev-arm64-cross
  106. bindgen aya/include/linux_wrapper.h \
  107. --no-layout-tests \
  108. --default-enum-style moduleconsts \
  109. $(for ty in $LINUX_TYPES; do
  110. echo --whitelist-type "$ty"
  111. done) \
  112. $(for var in $LINUX_VARS; do
  113. echo --whitelist-var "$var"
  114. done) \
  115. -- \
  116. -target arm64 \
  117. -I $LIBBPF_DIR/include/uapi \
  118. -I $LIBBPF_DIR/include/ \
  119. -I /usr/aarch64-linux-gnu/include \
  120. > $OUTPUT_DIR/linux_bindings_aarch64.rs