All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yhs@fb.com>
To: Ilya Leoshkevich <iii@linux.ibm.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: <bpf@vger.kernel.org>, Heiko Carstens <heiko.carstens@de.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>
Subject: Re: [PATCH bpf-next 2/6] libbpf: Add BTF_KIND_FLOAT support
Date: Thu, 18 Feb 2021 09:29:46 -0800	[thread overview]
Message-ID: <d88d1796-d70c-38f8-54c8-fb08e6c54380@fb.com> (raw)
In-Reply-To: <4d581ca7743982cb4a1e5baaef2165918f4a2535.camel@linux.ibm.com>



On 2/18/21 5:34 AM, Ilya Leoshkevich wrote:
> On Wed, 2021-02-17 at 23:16 -0800, Yonghong Song wrote:
>> On 2/15/21 5:12 PM, Ilya Leoshkevich wrote:
>>> The logic follows that of BTF_KIND_INT most of the time.
>>> Sanitization
>>> replaces BTF_KIND_FLOATs with equally-sized BTF_KIND_INTs on older
>>> kernels.
>>>
>>> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
>>> ---
>>>    tools/lib/bpf/btf.c             | 44
>>> +++++++++++++++++++++++++++++++++
>>>    tools/lib/bpf/btf.h             |  8 ++++++
>>>    tools/lib/bpf/btf_dump.c        |  4 +++
>>>    tools/lib/bpf/libbpf.c          | 29 +++++++++++++++++++++-
>>>    tools/lib/bpf/libbpf.map        |  5 ++++
>>>    tools/lib/bpf/libbpf_internal.h |  2 ++
>>>    6 files changed, 91 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
>>> index d9c10830d749..07a30e98c3de 100644
>>> --- a/tools/lib/bpf/btf.c
>>> +++ b/tools/lib/bpf/btf.c
> 
> [...]
> 
>>> @@ -2445,6 +2450,9 @@ static void bpf_object__sanitize_btf(struct
>>> bpf_object *obj, struct btf *btf)
>>>                  } else if (!has_func_global && btf_is_func(t)) {
>>>                          /* replace BTF_FUNC_GLOBAL with
>>> BTF_FUNC_STATIC */
>>>                          t->info = BTF_INFO_ENC(BTF_KIND_FUNC, 0,
>>> 0);
>>> +               } else if (!has_float && btf_is_float(t)) {
>>> +                       /* replace FLOAT with INT */
>>> +                       t->info = BTF_INFO_ENC(BTF_KIND_FLOAT, 0,
>>> 0);
>>
>> You can replace float with a "pointer to void" type.
> 
> Wouldn't this cause problems with 32-bit floats on 64-bit machines?

Oh, yes. You are right. I am just thinking of standalone float type, but
obviously it could be struct/union member which makes it very important
to keep the sanatized type having the same size.

So replacing float with "point to void" won't work as you suggested.
Looks like INT is the best candidate to replace, another is CHAR array.
They do not match total size though. Maybe one of modifier type will
be a good choice. For example, you can replace float with a
BTF_KIND_CONST type and the base type for BTF_KIND_CONST type
is an int type with the same size of float and you have to
create that int type somewhere. In power-of-2 cases, it is possible
this type already exists.

> 
> [...]
> 

  reply	other threads:[~2021-02-18 18:49 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-16  1:12 [PATCH bpf-next 0/6] Add BTF_KIND_FLOAT support Ilya Leoshkevich
2021-02-16  1:12 ` [PATCH bpf-next 1/6] bpf: Add BTF_KIND_FLOAT to uapi Ilya Leoshkevich
2021-02-16  1:12 ` [PATCH bpf-next 2/6] libbpf: Add BTF_KIND_FLOAT support Ilya Leoshkevich
2021-02-17 20:58   ` John Fastabend
2021-02-17 21:12     ` John Fastabend
2021-02-17 21:28       ` Ilya Leoshkevich
2021-02-18  1:26         ` John Fastabend
2021-02-18 13:57           ` Ilya Leoshkevich
2021-02-18  6:58   ` Yonghong Song
2021-02-18 13:41     ` Ilya Leoshkevich
2021-02-18 17:39       ` Yonghong Song
2021-02-18  7:16   ` Yonghong Song
2021-02-18 13:34     ` Ilya Leoshkevich
2021-02-18 17:29       ` Yonghong Song [this message]
2021-02-16  1:12 ` [PATCH bpf-next 3/6] tools/bpftool: " Ilya Leoshkevich
2021-02-16  1:12 ` [PATCH bpf-next 4/6] bpf: " Ilya Leoshkevich
2021-02-18  7:13   ` Yonghong Song
2021-02-16  1:12 ` [PATCH bpf-next 5/6] selftest/bpf: Add BTF_KIND_FLOAT tests Ilya Leoshkevich
2021-02-16  1:12 ` [PATCH bpf-next 6/6] bpf: Document BTF_KIND_FLOAT in btf.rst Ilya Leoshkevich

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=d88d1796-d70c-38f8-54c8-fb08e6c54380@fb.com \
    --to=yhs@fb.com \
    --cc=acme@redhat.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=gor@linux.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=iii@linux.ibm.com \
    /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.