diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 94b254f297ce39f39ea1f280b30e9c2f7c8e8268..75fa95988b61df9f44607c6c71f99e834afa07b2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -57,12 +57,11 @@ native/mini-gmp:
   variables:
     EXTRA_CONFIGURE_ARGS: '--enable-mini-gmp'
 
-# FIXME: Need to defeat autoconf that automagically adds -std=gnu11.
 native/c89:
   extends: .native-build
   variables:
     EXTRA_CONFIGURE_ARGS: '--disable-assembler'
-    CC: 'gcc -std=c89'
+    CC: '$CI_PROJECT_DIR/misc/c89'
 
 native/ndebug:
   extends: .native-build
diff --git a/ChangeLog b/ChangeLog
index 69ec07dc1a34ffe78c073928466a3eded8032ea7..136fc78f2c2604071a55063bd7159bf8ac28dccc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2023-10-06  Niels Möller  <nisse@lysator.liu.se>
+
+	* misc/c89: New wrapper script to force compiling in c89 mode.
+
 2023-10-04  Niels Möller  <nisse@lysator.liu.se>
 
 	* bswap-internal.h (bswap32_if_be, bswap32_if_le): New macros.
diff --git a/misc/c89 b/misc/c89
new file mode 100755
index 0000000000000000000000000000000000000000..0190ee886f063847a1ad21ff4e34d20402eceb3c
--- /dev/null
+++ b/misc/c89
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+# GCC wrapper that passes -std=c89, and rejects all other -std flags
+
+for a in "$@" ; do
+	case "$a" in
+	    -std=*)
+		echo "c89 wrapper: option $a rejected" >&2
+		exit 1
+		;;
+	    *)
+		;;
+	esac
+done
+
+gcc -std=c89 "$@"