We have only implemented longjmp() on the EFI architectures.

Define a symbol CONFIG_HAVE_SETJMP and have it selected by the relevant
architectures.

Use CONFIG_HAVE_SETJMP to decide if the longjmp test shall be built.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
 arch/Kconfig      | 9 +++++++++
 test/lib/Makefile | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 8f1f4667012..674c68bff09 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -8,6 +8,11 @@ config CREATE_ARCH_SYMLINK
 config HAVE_ARCH_IOREMAP
        bool
 
+config HAVE_SETJMP
+       bool
+       help
+        The architecture supports setjmp() and longjmp().
+
 config SUPPORT_BIG_ENDIAN
        bool
 
@@ -73,6 +78,7 @@ config ARC
 
 config ARM
        bool "ARM architecture"
+       select HAVE_SETJMP
        select ARCH_SUPPORTS_LTO
        select CREATE_ARCH_SYMLINK
        select HAVE_PRIVATE_LIBGCC if !ARM64
@@ -129,6 +135,7 @@ config PPC
 config RISCV
        bool "RISC-V architecture"
        select CREATE_ARCH_SYMLINK
+       select HAVE_SETJMP
        select SUPPORT_ACPI
        select SUPPORT_LITTLE_ENDIAN
        select SUPPORT_OF_CONTROL
@@ -154,6 +161,7 @@ config RISCV
 
 config SANDBOX
        bool "Sandbox"
+       select HAVE_SETJMP
        select ARCH_SUPPORTS_LTO
        select BOARD_LATE_INIT
        select BZIP2
@@ -248,6 +256,7 @@ config SH
 
 config X86
        bool "x86 architecture"
+       select HAVE_SETJMP
        select SUPPORT_SPL
        select SUPPORT_TPL
        select SUPPORT_LITTLE_ENDIAN
diff --git a/test/lib/Makefile b/test/lib/Makefile
index a54387a058e..7146ffa1b1f 100644
--- a/test/lib/Makefile
+++ b/test/lib/Makefile
@@ -11,7 +11,7 @@ obj-$(CONFIG_EFI_SECURE_BOOT) += efi_image_region.o
 obj-y += hexdump.o
 obj-$(CONFIG_SANDBOX) += kconfig.o
 obj-y += lmb.o
-obj-y += longjmp.o
+obj-$(CONFIG_HAVE_SETJMP) += longjmp.o
 obj-$(CONFIG_CONSOLE_RECORD) += test_print.o
 obj-$(CONFIG_SSCANF) += sscanf.o
 obj-y += string.o
-- 
2.45.2

Reply via email to