From: "Jose E. Marchesi" <jose.marchesi@oracle.com>
To: SuHsueyu <anolasc13@gmail.com>
Cc: bpf@vger.kernel.org
Subject: Re: Support for gcc
Date: Wed, 21 Dec 2022 19:22:39 +0100 [thread overview]
Message-ID: <871qosy5u8.fsf@oracle.com> (raw)
In-Reply-To: <CAEc2n-vmWk6+hG-fcqvMdeG-hSyuFoHv9R79U5MjnOU7nXQSpw@mail.gmail.com> (SuHsueyu's message of "Tue, 20 Dec 2022 19:45:31 +0800")
> Hello, I use gcc 12.1.0 to compile a source file:
> t.c
> struct t {
> int a:2;
> int b:3;
> int c:2;
> } g;
> with gcc -c -gbtf t.c
> and try to use libbpf API btf__parse_split, bpf_object__open, and
> bpf_object__open to parse and load into the kernel, but it failed with
> "libbpf: elf: /path/to/t.o is not a valid eBPF object file".
>
> Is it wrong for me to do so? Due to some constraint, I cannot use
> clang but gcc. How to parse and load gcc compiled object file with
> libbpf?
It seems to me that you are most likely using a GCC targetted at your
local architecture (x86_64-linux-gnu perhaps?) instead of
bpf-unknown-none.
(Note that GCC can generate BTF for any target, not just BPF.)
So you need a bpf-unknown-none-gcc toolchain.
You can either:
a) Install a pre-compiled cross available in your distro.
Debian ships gcc-bpf, for example. See
https://gcc.gnu.org/wiki/BPFBackEnd for a list.
or,
b) Build crossed versions of binutils and gcc, configuring with
--target=bpf-unknown-none.
or,
c) Use crosstool-ng to build a GCC BPF cross. We recently added support
for bpf-unknown-none there.
Hope this helps.
next prev parent reply other threads:[~2022-12-21 18:18 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-20 11:45 Support for gcc SuHsueyu
2022-12-20 17:27 ` sdf
2022-12-21 0:34 ` Andrii Nakryiko
2022-12-21 11:03 ` SuHsueyu
2022-12-21 17:41 ` Alan Maguire
2022-12-21 18:26 ` Jose E. Marchesi
2022-12-21 18:22 ` Jose E. Marchesi [this message]
2022-12-21 18:30 ` Jose E. Marchesi
2022-12-25 15:24 ` SuHsueyu
2022-12-26 9:42 ` Jose E. Marchesi
-- strict thread matches above, loose matches on Subject: below --
2022-12-29 18:22 Marc Poulhiès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871qosy5u8.fsf@oracle.com \
--to=jose.marchesi@oracle.com \
--cc=anolasc13@gmail.com \
--cc=bpf@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.