Re: [PATCH v2 bpf-next 06/11] libbpf: add BPF static linker APIs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 6/7/21 9:08 PM, Andrii Nakryiko wrote:
On Mon, Jun 7, 2021 at 7:41 PM Tom Stellard <tstellar@xxxxxxxxxx> wrote:

On 6/7/21 5:25 PM, Andrii Nakryiko wrote:
On Mon, Jun 7, 2021 at 4:12 PM Tom Stellard <tstellar@xxxxxxxxxx> wrote:


Hi,

+                               } else {
+                                       pr_warn("relocation against STT_SECTION in non-exec section is not supported!\n");
+                                       return -EINVAL;
+                               }

Kernel build of commit 324c92e5e0ee are failing for me with this error
message:

/builddir/build/BUILD/kernel-5.13-rc4-61-g324c92e5e0ee/linux-5.13.0-0.rc4.20210603git324c92e5e0ee.35.fc35.x86_64/tools/bpf/bpftool/bpftool gen object /builddir/build/BUILD/kernel-5.13-rc4-61-g324c92e5e0ee/linux-5.13.0-0.rc4.20210603git324c92e5e0ee.35.fc35.x86_64/tools/testing/selftests/bpf/bind_perm.linked1.o /builddir/build/BUILD/kernel-5.13-rc4-61-g324c92e5e0ee/linux-5.13.0-0.rc4.20210603git324c92e5e0ee.35.fc35.x86_64/tools/testing/selftests/bpf/bind_perm.o
libbpf: relocation against STT_SECTION in non-exec section is not supported!

What information can I provide to help debug this failure?

Can you please send that bind_perm.o file? Also what's your `clang
--version` output?


clang version 12.0.0 (Fedora 12.0.0-2.fc35)

I suspect this might be due to Clang commit 6a2ea84600ba ("BPF: Add
more relocation kinds"), but I get a different error on 324c92e5e0ee.
So meanwhile you might try applying 9f0c317f6aa1 ("libbpf: Add support
for new llvm bpf relocations") from bpf-next/master and check if that
helps. But please do share bind_perm.o, just to double-check what's
going on.


Here is bind_perm.o: https://fedorapeople.org/~tstellar/bind_perm.o


So somehow you end up with .eh_frame section in BPF object file, which
shouldn't ever happen. So there must be something that you are doing
differently (compiler flags or something else) that makes Clang
produce .eh_frame. So we need to figure out why .eh_frame gets
generated. Not sure how, but maybe you have some ideas of what might
be different about your build.

Tom,

I tried with latest release/12.x branch with top commit
  0826268d59c6 [PowerPC] Fix x86 vector intrinsics wrapper
               compilation under C++
and I cannot reproduce the issue.

$ clang --version
clang version 12.0.1 (https://github.com/llvm/llvm-project.git 0826268d59c6e1bb3530dffd9dc5f6038774486d)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/yhs/work/llvm-project/llvm/build/install/bin

The following is my compilation flag, captured with
  make -C tools/testing/selftests/bpf -j60 V=1
$ cat log.sh
clang -g -D__TARGET_ARCH_x86 -mlittle-endian -I/home/yhs/work/bpf-next/tools/testing/selftests/bpf/tools/include -I/home/yhs/work/bpf-next/tools/testing/selftests/bpf -I/home/yhs/work/bpf-next/tools/include/uapi -I/home/yhs/work/bpf-next/tools/testing/selftests/usr/include -idirafter /home/yhs/work/llvm-project/llvm/build.cur/install/lib/clang/13.0.0/include -idirafter /usr/local/include -idirafter /usr/include -Wno-compare-distinct-pointer-types -DENABLE_ATOMICS_TESTS -O2 -target bpf -c progs/bind_perm.c -o /home/yhs/work/bpf-next/tools/testing/selftests/bpf/bind_perm.o -mcpu=v3

Looking at progs/bind_perm.c, I can see
#include <linux/stddef.h>
#include <linux/bpf.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_endian.h>

So it included some system header files. Maybe some of these
header files changed some function attributes which triggered
.cfi_startproc/.cfi_endproc generation which enabled .eh_frame section
generation.

Maybe you can produce an .i file in your environment
so we can do some further analysis.


Thanks,
Tom



Thanks,
Tom







[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux