diff mbox series

[v2,1/3] tools build: Add feature test for libelf with ZSTD

Message ID 20241211093114.263742-2-leo.yan@arm.com (mailing list archive)
State New
Delegated to: BPF
Headers show
Series bpftool: Fix the static linkage failure | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch
bpf/vmtest-bpf-PR fail merge-conflict

Commit Message

Leo Yan Dec. 11, 2024, 9:31 a.m. UTC
Add a test for checking if libelf supports ZSTD compress algorithm.

The macro ELFCOMPRESS_ZSTD is defined for the algorithm, pass it as an
argument to the elf_compress() function.  If the build succeeds, it
means the feature is supported.

Signed-off-by: Leo Yan <leo.yan@arm.com>
---
 tools/build/Makefile.feature           | 1 +
 tools/build/feature/Makefile           | 4 ++++
 tools/build/feature/test-all.c         | 4 ++++
 tools/build/feature/test-libelf-zstd.c | 9 +++++++++
 4 files changed, 18 insertions(+)
 create mode 100644 tools/build/feature/test-libelf-zstd.c

Comments

Quentin Monnet Dec. 11, 2024, 12:48 p.m. UTC | #1
2024-12-11 09:31 UTC+0000 ~ Leo Yan <leo.yan@arm.com>
> Add a test for checking if libelf supports ZSTD compress algorithm.
> 
> The macro ELFCOMPRESS_ZSTD is defined for the algorithm, pass it as an
> argument to the elf_compress() function.  If the build succeeds, it
> means the feature is supported.
> 
> Signed-off-by: Leo Yan <leo.yan@arm.com>
> ---
>  tools/build/Makefile.feature           | 1 +
>  tools/build/feature/Makefile           | 4 ++++
>  tools/build/feature/test-all.c         | 4 ++++
>  tools/build/feature/test-libelf-zstd.c | 9 +++++++++
>  4 files changed, 18 insertions(+)
>  create mode 100644 tools/build/feature/test-libelf-zstd.c
> 
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index bca47d136f05..b2884bc23775 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -43,6 +43,7 @@ FEATURE_TESTS_BASIC :=                  \
>          libelf-getphdrnum               \
>          libelf-gelf_getnote             \
>          libelf-getshdrstrndx            \
> +        libelf-zstd                     \
>          libnuma                         \
>          numa_num_possible_cpus          \
>          libperl                         \
> diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> index 043dfd00fce7..f12b89103d7a 100644
> --- a/tools/build/feature/Makefile
> +++ b/tools/build/feature/Makefile
> @@ -28,6 +28,7 @@ FILES=                                          \
>           test-libelf-getphdrnum.bin             \
>           test-libelf-gelf_getnote.bin           \
>           test-libelf-getshdrstrndx.bin          \
> +         test-libelf-zstd.bin                   \
>           test-libdebuginfod.bin                 \
>           test-libnuma.bin                       \
>           test-numa_num_possible_cpus.bin        \
> @@ -196,6 +197,9 @@ $(OUTPUT)test-libelf-gelf_getnote.bin:
>  $(OUTPUT)test-libelf-getshdrstrndx.bin:
>  	$(BUILD) -lelf
>  
> +$(OUTPUT)test-libelf-zstd.bin:
> +	$(BUILD) -lelf -lz -lzstd
> +
>  $(OUTPUT)test-libdebuginfod.bin:
>  	$(BUILD) -ldebuginfod
>  
> diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> index 80ac297f8196..67125f967860 100644
> --- a/tools/build/feature/test-all.c
> +++ b/tools/build/feature/test-all.c
> @@ -58,6 +58,10 @@
>  # include "test-libelf-getshdrstrndx.c"
>  #undef main
>  
> +#define main main_test_libelf_zstd
> +# include "test-libelf-zstd.c"
> +#undef main
> +
>  #define main main_test_libslang
>  # include "test-libslang.c"
>  #undef main
> diff --git a/tools/build/feature/test-libelf-zstd.c b/tools/build/feature/test-libelf-zstd.c
> new file mode 100644
> index 000000000000..a1324a1db3bb
> --- /dev/null
> +++ b/tools/build/feature/test-libelf-zstd.c
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include <stddef.h>
> +#include <libelf.h>
> +
> +int main(void)
> +{
> +	elf_compress(NULL, ELFCOMPRESS_ZSTD, 0);
> +	return 0;
> +}


It's not obvious that the feature indicates that (in the case of
bpftool) support for ZSTD _must_ be added when the probe builds, it
reads more like it _can_ be added if we're after the feature, but that's
fine by me. I double-checked and ELFCOMPRESS_ZSTD support was introduced
in libelf 0.189 indeed, which is the version introducing the linkage
issue for static bpftool builds (maybe this is some info we could
mention in the commit description, by the way). As expected, the probe
sample fails to build on Ubuntu 22.04 (libelf 0.186) but passes on
Ubuntu 24.04 (libelf 0.190). Thanks!

Tested-by: Quentin Monnet <qmo@kernel.org>
Reviewed-by: Quentin Monnet <qmo@kernel.org>

Note: This being a bpftool fix, I suppose you're targetting the bpf-next
tree? If so, you've got a conflict on test-all.c given that commit
176c9d1e6a06 ("tools features: Don't check for libunwind devel files by
default") has not been synced there yet.

Thanks,
Quentin
Jiri Olsa Dec. 11, 2024, 3:05 p.m. UTC | #2
On Wed, Dec 11, 2024 at 09:31:12AM +0000, Leo Yan wrote:
> Add a test for checking if libelf supports ZSTD compress algorithm.
> 
> The macro ELFCOMPRESS_ZSTD is defined for the algorithm, pass it as an
> argument to the elf_compress() function.  If the build succeeds, it
> means the feature is supported.
> 
> Signed-off-by: Leo Yan <leo.yan@arm.com>

lgtm

Acked-by: Jiri Olsa <jolsa@kernel.org>

jirka

> ---
>  tools/build/Makefile.feature           | 1 +
>  tools/build/feature/Makefile           | 4 ++++
>  tools/build/feature/test-all.c         | 4 ++++
>  tools/build/feature/test-libelf-zstd.c | 9 +++++++++
>  4 files changed, 18 insertions(+)
>  create mode 100644 tools/build/feature/test-libelf-zstd.c
> 
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index bca47d136f05..b2884bc23775 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -43,6 +43,7 @@ FEATURE_TESTS_BASIC :=                  \
>          libelf-getphdrnum               \
>          libelf-gelf_getnote             \
>          libelf-getshdrstrndx            \
> +        libelf-zstd                     \
>          libnuma                         \
>          numa_num_possible_cpus          \
>          libperl                         \
> diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> index 043dfd00fce7..f12b89103d7a 100644
> --- a/tools/build/feature/Makefile
> +++ b/tools/build/feature/Makefile
> @@ -28,6 +28,7 @@ FILES=                                          \
>           test-libelf-getphdrnum.bin             \
>           test-libelf-gelf_getnote.bin           \
>           test-libelf-getshdrstrndx.bin          \
> +         test-libelf-zstd.bin                   \
>           test-libdebuginfod.bin                 \
>           test-libnuma.bin                       \
>           test-numa_num_possible_cpus.bin        \
> @@ -196,6 +197,9 @@ $(OUTPUT)test-libelf-gelf_getnote.bin:
>  $(OUTPUT)test-libelf-getshdrstrndx.bin:
>  	$(BUILD) -lelf
>  
> +$(OUTPUT)test-libelf-zstd.bin:
> +	$(BUILD) -lelf -lz -lzstd
> +
>  $(OUTPUT)test-libdebuginfod.bin:
>  	$(BUILD) -ldebuginfod
>  
> diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> index 80ac297f8196..67125f967860 100644
> --- a/tools/build/feature/test-all.c
> +++ b/tools/build/feature/test-all.c
> @@ -58,6 +58,10 @@
>  # include "test-libelf-getshdrstrndx.c"
>  #undef main
>  
> +#define main main_test_libelf_zstd
> +# include "test-libelf-zstd.c"
> +#undef main
> +
>  #define main main_test_libslang
>  # include "test-libslang.c"
>  #undef main
> diff --git a/tools/build/feature/test-libelf-zstd.c b/tools/build/feature/test-libelf-zstd.c
> new file mode 100644
> index 000000000000..a1324a1db3bb
> --- /dev/null
> +++ b/tools/build/feature/test-libelf-zstd.c
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include <stddef.h>
> +#include <libelf.h>
> +
> +int main(void)
> +{
> +	elf_compress(NULL, ELFCOMPRESS_ZSTD, 0);
> +	return 0;
> +}
> -- 
> 2.34.1
>
diff mbox series

Patch

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index bca47d136f05..b2884bc23775 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -43,6 +43,7 @@  FEATURE_TESTS_BASIC :=                  \
         libelf-getphdrnum               \
         libelf-gelf_getnote             \
         libelf-getshdrstrndx            \
+        libelf-zstd                     \
         libnuma                         \
         numa_num_possible_cpus          \
         libperl                         \
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 043dfd00fce7..f12b89103d7a 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -28,6 +28,7 @@  FILES=                                          \
          test-libelf-getphdrnum.bin             \
          test-libelf-gelf_getnote.bin           \
          test-libelf-getshdrstrndx.bin          \
+         test-libelf-zstd.bin                   \
          test-libdebuginfod.bin                 \
          test-libnuma.bin                       \
          test-numa_num_possible_cpus.bin        \
@@ -196,6 +197,9 @@  $(OUTPUT)test-libelf-gelf_getnote.bin:
 $(OUTPUT)test-libelf-getshdrstrndx.bin:
 	$(BUILD) -lelf
 
+$(OUTPUT)test-libelf-zstd.bin:
+	$(BUILD) -lelf -lz -lzstd
+
 $(OUTPUT)test-libdebuginfod.bin:
 	$(BUILD) -ldebuginfod
 
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
index 80ac297f8196..67125f967860 100644
--- a/tools/build/feature/test-all.c
+++ b/tools/build/feature/test-all.c
@@ -58,6 +58,10 @@ 
 # include "test-libelf-getshdrstrndx.c"
 #undef main
 
+#define main main_test_libelf_zstd
+# include "test-libelf-zstd.c"
+#undef main
+
 #define main main_test_libslang
 # include "test-libslang.c"
 #undef main
diff --git a/tools/build/feature/test-libelf-zstd.c b/tools/build/feature/test-libelf-zstd.c
new file mode 100644
index 000000000000..a1324a1db3bb
--- /dev/null
+++ b/tools/build/feature/test-libelf-zstd.c
@@ -0,0 +1,9 @@ 
+// SPDX-License-Identifier: GPL-2.0
+#include <stddef.h>
+#include <libelf.h>
+
+int main(void)
+{
+	elf_compress(NULL, ELFCOMPRESS_ZSTD, 0);
+	return 0;
+}