2024-03-25 11:46:13

by Gaosheng Cui

[permalink] [raw]
Subject: [PATCH -next] tools headers: Make linux/btf_ids.h self-contained

Add the missing #include <linux/types.h>.

Fix the following compile error:
In file included from main.c:73:
tools/include/linux/btf_ids.h:7:9: error: unknown type name ‘u32’
7 | u32 cnt;
| ^~~
tools/include/linux/btf_ids.h:8:9: error: unknown type name ‘u32’
8 | u32 ids[];
| ^~~

Signed-off-by: Gaosheng Cui <[email protected]>
---
tools/include/linux/btf_ids.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h
index 72535f00572f..7969607efe0d 100644
--- a/tools/include/linux/btf_ids.h
+++ b/tools/include/linux/btf_ids.h
@@ -3,6 +3,8 @@
#ifndef _LINUX_BTF_IDS_H
#define _LINUX_BTF_IDS_H

+#include <linux/types.h>
+
struct btf_id_set {
u32 cnt;
u32 ids[];
--
2.25.1



2024-03-28 03:49:57

by Yicong Yang

[permalink] [raw]
Subject: Re: [PATCH -next] tools headers: Make linux/btf_ids.h self-contained

Hi,

On 2024/3/25 9:10, Gaosheng Cui wrote:
> Add the missing #include <linux/types.h>.
>
> Fix the following compile error:
> In file included from main.c:73:
> tools/include/linux/btf_ids.h:7:9: error: unknown type name ‘u32’
> 7 | u32 cnt;
> | ^~~
> tools/include/linux/btf_ids.h:8:9: error: unknown type name ‘u32’
> 8 | u32 ids[];
> | ^~~
>

I also met this on 6.9-rc1 and this patch could solve the issue.

I suspect this is introduced by 9707ac4fe2f5 ("tools/resolve_btfids: Refactor set sorting with types from btf_ids.h")?

Since we didn't contain this header before and compiling was fine, could we only include
this header in tools/bpf/resolve_btfids/main.c where error happens (tested fine)?

There's a same fix in [1] and the glibc/compiler version was blamed there. I compiled on
Ubuntu 18.04.1 with gcc 10.2.0 and glibc 2.27.

[1] https://lore.kernel.org/all/[email protected]/#t

> Signed-off-by: Gaosheng Cui <[email protected]>
> ---
> tools/include/linux/btf_ids.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h
> index 72535f00572f..7969607efe0d 100644
> --- a/tools/include/linux/btf_ids.h
> +++ b/tools/include/linux/btf_ids.h
> @@ -3,6 +3,8 @@
> #ifndef _LINUX_BTF_IDS_H
> #define _LINUX_BTF_IDS_H
>
> +#include <linux/types.h>
> +
> struct btf_id_set {
> u32 cnt;
> u32 ids[];
>