summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2024-09-09 08:46:40 +0200
committerDamien Miller <djm@mindrot.org>2024-09-09 08:46:40 +0200
commite8a0f19b56dfa20f98ea9876d7171ec315fb338a (patch)
tree4d61f25d4f3f6acc63cbca3bc61c8192f069f5cf
parenttest for compiler feature needed for ML-KEM (diff)
downloadopenssh-e8a0f19b56dfa20f98ea9876d7171ec315fb338a.tar.xz
openssh-e8a0f19b56dfa20f98ea9876d7171ec315fb338a.zip
fix previous; check for C99 compound literals
The previous commit was incorrect (or at least insufficient), the ML-KEM code is actually using compound literals, so test for them.
-rw-r--r--configure.ac13
-rw-r--r--defines.h4
2 files changed, 9 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index 9b8b1ded3..954de6caf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -353,16 +353,17 @@ AC_COMPILE_IFELSE(
[ AC_MSG_RESULT([no]) ]
)
-AC_MSG_CHECKING([if compiler supports named struct initialisers])
+AC_MSG_CHECKING([if compiler supports compound literals])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <stdlib.h>]],
- [[ struct foo { int bar; int baz; };
- struct foo blerg = {.bar = 1, .baz = 2};
- exit((blerg.bar == 1 && blerg.baz == 2) ? 0 : 1);
+ [[ struct foo { int bar; int baz; };
+ void *fooc = &(struct foo){.bar = 1, .baz = 2};
+ struct foo *foo2 = (struct foo *)fooc;
+ return (foo2->bar == 1 && foo2->baz == 2) ? 0 : 1;
]])],
[ AC_MSG_RESULT([yes])
- AC_DEFINE(NAMED_STRUCT_INITIALISERS, [1],
- [compiler supports named struct initializers]) ],
+ AC_DEFINE(COMPOUND_LITERALS, [1],
+ [compiler supports compound literals]) ],
[ AC_MSG_RESULT([no]) ]
)
diff --git a/defines.h b/defines.h
index d1f6ce33e..3d03b033a 100644
--- a/defines.h
+++ b/defines.h
@@ -942,8 +942,8 @@ struct winsize {
#if defined(VARIABLE_LENGTH_ARRAYS) && defined(VARIABLE_DECLARATION_AFTER_CODE)
# define USE_SNTRUP761X25519 1
#endif
-/* The ML-KEM768 imlementation similarly uses named struct initialisers */
-#ifdef NAMED_STRUCT_INITIALISERS
+/* The ML-KEM768 imlementation similarly uses C99 compound literals */
+#ifdef COMPOUND_LITERALS
# define USE_MLKEM768X25519 1
#endif
#endif /* _DEFINES_H */