|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86emul: Fix blowfish build in 64bit-clean environments
commit 15341fcac7668858438333c6467364aa2d47ec94
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Fri Mar 28 17:18:51 2025 +0000
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Mon Mar 31 14:38:56 2025 +0100
x86emul: Fix blowfish build in 64bit-clean environments
In a 64bit-clean environment, blowfish fails:
make[6]: Leaving directory
'/builddir/build/BUILD/xen-4.19.1/tools/tests/x86_emulator'
In file included from /usr/include/features.h:535,
from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdint.h:26,
from
/usr/lib/gcc/x86_64-xenserver-linux/12/include/stdint.h:9,
from blowfish.c:18:
/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such
file or directory
7 | # include <gnu/stubs-32.h>
| ^~~~~~~~~~~~~~~~
compilation terminated.
make[6]: *** [testcase.mk:15: blowfish.bin] Error 1
because of lack of glibc-i386-devel or equivelent. It's non-fatal, but
reduces the content in test_x86_emulator, which we do care about running.
Instead, convert all emulator testcases to being freestanding builds,
resuing
the tools/firmware/include/ headers.
This in turn requires making firmware's stdint.h compatible with 64bit
builds.
We now have compiler types for every standard type we use.
Suggested-by: Jan Beulich <jbeulich@xxxxxxxx>
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
tools/firmware/include/stdint.h | 27 ++++++++++-----------------
tools/tests/x86_emulator/testcase.mk | 3 ++-
2 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/tools/firmware/include/stdint.h b/tools/firmware/include/stdint.h
index 16a0b6de19..5c41cb8bda 100644
--- a/tools/firmware/include/stdint.h
+++ b/tools/firmware/include/stdint.h
@@ -1,21 +1,14 @@
#ifndef _STDINT_H_
#define _STDINT_H_
-#if defined(__LP64__) || defined(__P64__)
-#error "32bit only header"
-#endif
-
-typedef unsigned char uint8_t;
-typedef signed char int8_t;
-
-typedef unsigned short uint16_t;
-typedef signed short int16_t;
-
-typedef unsigned int uint32_t;
-typedef signed int int32_t;
-
-typedef unsigned long long uint64_t;
-typedef signed long long int64_t;
+typedef __INT8_TYPE__ int8_t;
+typedef __UINT8_TYPE__ uint8_t;
+typedef __INT16_TYPE__ int16_t;
+typedef __UINT16_TYPE__ uint16_t;
+typedef __INT32_TYPE__ int32_t;
+typedef __UINT32_TYPE__ uint32_t;
+typedef __INT64_TYPE__ int64_t;
+typedef __UINT64_TYPE__ uint64_t;
#define INT8_MIN (-0x7f-1)
#define INT16_MIN (-0x7fff-1)
@@ -32,8 +25,8 @@ typedef signed long long int64_t;
#define UINT32_MAX 0xffffffffu
#define UINT64_MAX 0xffffffffffffffffull
-typedef uint32_t uintptr_t;
+typedef __UINTPTR_TYPE__ uintptr_t;
-#define UINTPTR_MAX UINT32_MAX
+#define UINTPTR_MAX __UINTPTR_MAX__
#endif
diff --git a/tools/tests/x86_emulator/testcase.mk
b/tools/tests/x86_emulator/testcase.mk
index 7875b95d7c..e47fd0917b 100644
--- a/tools/tests/x86_emulator/testcase.mk
+++ b/tools/tests/x86_emulator/testcase.mk
@@ -4,7 +4,8 @@ include $(XEN_ROOT)/tools/Rules.mk
$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
-CFLAGS += -fno-builtin -fno-stack-protector -g0 $($(TESTCASE)-cflags)
+CFLAGS += -ffreestanding -nostdinc -I$(XEN_ROOT)/tools/firmware/include
+CFLAGS += -fno-stack-protector -g0 $($(TESTCASE)-cflags)
LDFLAGS_DIRECT += $(shell { $(LD) -v --warn-rwx-segments; } >/dev/null 2>&1 &&
echo --no-warn-rwx-segments)
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |