* [PATCH v2 bpf-next] libbpf: fix clang compilation error in btf_relocate.c
@ 2024-06-24 19:29 Alan Maguire
2024-06-26 23:40 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Alan Maguire @ 2024-06-24 19:29 UTC (permalink / raw)
To: andrii, eddyz87, ast
Cc: acme, daniel, jolsa, martin.lau, song, yonghong.song,
john.fastabend, kpsingh, sdf, haoluo, mcgrof, masahiroy, nathan,
mykolal, thinker.li, bentiss, tanggeliang, bpf, Alan Maguire
When building with clang for ARCH=i386, the following errors are
observed:
CC kernel/bpf/btf_relocate.o
./tools/lib/bpf/btf_relocate.c:206:23: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
206 | info[id].needs_size = true;
| ^ ~
./tools/lib/bpf/btf_relocate.c:256:25: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
256 | base_info.needs_size = true;
| ^ ~
2 errors generated.
The problem is we use 1-bit, 31-bit bitfields in a signed int.
Changing to
bool needs_size: 1;
unsigned int size:31;
...resolves the error and pahole reports that 4 bytes are used
for the underlying representation:
$ pahole btf_name_info tools/lib/bpf/btf_relocate.o
struct btf_name_info {
const char * name; /* 0 8 */
unsigned int needs_size:1; /* 8: 0 4 */
unsigned int size:31; /* 8: 1 4 */
__u32 id; /* 12 4 */
/* size: 16, cachelines: 1, members: 4 */
/* last cacheline: 16 bytes */
};
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
---
tools/lib/bpf/btf_relocate.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/lib/bpf/btf_relocate.c b/tools/lib/bpf/btf_relocate.c
index 2281dbbafa11..66c6204c4064 100644
--- a/tools/lib/bpf/btf_relocate.c
+++ b/tools/lib/bpf/btf_relocate.c
@@ -58,8 +58,8 @@ struct btf_relocate {
struct btf_name_info {
const char *name;
/* set when search requires a size match */
- int needs_size:1,
- size:31;
+ bool needs_size: 1;
+ unsigned int size: 31;
__u32 id;
};
--
2.31.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2 bpf-next] libbpf: fix clang compilation error in btf_relocate.c
2024-06-24 19:29 [PATCH v2 bpf-next] libbpf: fix clang compilation error in btf_relocate.c Alan Maguire
@ 2024-06-26 23:40 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-06-26 23:40 UTC (permalink / raw)
To: Alan Maguire
Cc: andrii, eddyz87, ast, acme, daniel, jolsa, martin.lau, song,
yonghong.song, john.fastabend, kpsingh, sdf, haoluo, mcgrof,
masahiroy, nathan, mykolal, thinker.li, bentiss, tanggeliang, bpf
Hello:
This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:
On Mon, 24 Jun 2024 20:29:03 +0100 you wrote:
> When building with clang for ARCH=i386, the following errors are
> observed:
>
> CC kernel/bpf/btf_relocate.o
> ./tools/lib/bpf/btf_relocate.c:206:23: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
> 206 | info[id].needs_size = true;
> | ^ ~
> ./tools/lib/bpf/btf_relocate.c:256:25: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
> 256 | base_info.needs_size = true;
> | ^ ~
> 2 errors generated.
>
> [...]
Here is the summary with links:
- [v2,bpf-next] libbpf: fix clang compilation error in btf_relocate.c
https://git.kernel.org/bpf/bpf-next/c/0f31c2c61f69
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-06-26 23:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-24 19:29 [PATCH v2 bpf-next] libbpf: fix clang compilation error in btf_relocate.c Alan Maguire
2024-06-26 23:40 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox