更适合eBPF程序宝宝体质的clangd配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
---
# 1. 扩大匹配范围,确保头文件也能享受 BPF 配置
If:
  PathMatch: [.*\.bpf\.c, .*/bpf/.*\.c, .*\.h] # 增加对 .h 的支持

CompileFlags:
  Add:
    - "-target"
    - "bpf"
    - "-x"
    - "c"
    - "-std=gnu11"
    - "-D__BPF_TRACING__"
    - "-D__TARGET_ARCH_x86"      # 必须指定架构,否则 vmlinux.h 内部的部分条件编译会失效
    - "-I."                      # 确保当前目录的头文件优先级最高
    - "-I/usr/include/bpf"       # 指向 libbpf 头文件路径
    - "-Wno-unknown-attributes"  # 忽略不认识的属性
    - "-ferror-limit=0"          # 即使错误再多也不要停止解析,这对补全很重要

  Remove:
    - "-std=c++*"
    - "-fexceptions"

Diagnostics:
  # 2. 针对 vmlinux.h 的重定义问题进行精准打击
  Suppress:
    - "redefinition"              # 抑制所有的符号重定义
    - "typedef_redefinition"      # 特别针对 typedef 的冲突
    - "too_many_errors"           # 彻底关掉那个烦人的警告
    - "err_expected_identifer"    # 针对 vmlinux 内部属性解析失败的补救

---
# 3. 针对特定的 vmlinux.h 文件彻底关闭检查
If:
  PathMatch: .*vmlinux\.h
Diagnostics:
  Suppress: ["*"]
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计