All of lore.kernel.org
 help / color / mirror / Atom feed
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.

  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.