我正在使用clang将C代码编译为LLVM,然后使用llc生成要用gobpf加载的BPF ELF文件。
当我的C代码包含一个“长”字符串(“ /var/run/containerd/containerd.sock”)时,llc将字符串放入其自己的ELF部分(.rodata.str1.16
),gobpf似乎没有支持:
map location not supported: map ".Lbpf_prog1.socket" is in section ".rodata.str1.16" instead of "maps/.Lbpf_prog1.socket"
使用较短的字符串(“ /var/run/docker.sock”)不会发生这种情况。有没有一种方法可以使用llc
来生成ELF文件而无需创建单独的.rodata.str1.16
部分?
uname -a
:Linux ubuntu-bionic 4.18.0-17-generic#18〜18.04.1-Ubuntu SMP Fri Mar 15 15:27:12 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux