--- /dev/null
+# -*- autoconf -*-
+
+cat <<\EOF
+
+Torturing config.status.
+
+## ---------------------------------------------------------------- ##
+## This section of tests is trying to make Autoconf produce failing ##
+## `configure' scripts, which must not happen. If these tests ever ##
+## fail, it is extremely important that you report the failure to ##
+## bug-autoconf@gnu.org. ##
+## ---------------------------------------------------------------- ##
+
+EOF
+
+dnl The value used as a big value for AC_DEFINE.
+dnl Don't use sh active chars here, below it is also used in a sh
+dnl assignment.
+define(Big_Value,
+[This value should be long enough to torture the various limits of sed and other tools used by Autoconf.])
+
+define(DEFINE_Description,
+[Define to a long string if your `Autoconf' works properly.])
+
+
+# AT_DUMMY_VAR(NUMBER)
+# --------------------
+# Build a name used for AC_SUBST and AC_DEFINE. Put ac_ in it
+# so that the check for user name space invasion does not complain
+# of the new variables defined.
+#
+# Note that you should not use the name ac_dummy, because it will be
+# turned into ac_uummy during the construction of config.status. Yes,
+# this is admittedly a bug, but it would be too hard to fix this.
+# There is really no point in AC_DEFINE a var named ac_d.*.
+define(AT_DUMMY_VAR,
+[ac_Dummy_[]patsubst([000$1], [.*\(...\)$], [\1])])
+
+dnl This call was quite delicate to write because we wanted to produce
+dnl the 100 commands at hand. Be very careful if you want to touch
+dnl something.
+
+## Require 100 AC_DEFINE and AC_SUBST with a significantly big value.
+## This is mostly to check that Autoconf produces portable sed scripts
+## in config.status. sed is used to skip the first two lines
+## `Generated by...'.
+
+AT_DATA(dummy.in,
+[m4_for(AT_Count, 1, 100,
+[@AT_DUMMY_VAR(AT_Count)@
+])])
+
+AT_TEST_MACRO(config.status under extreme conditions,
+[AC_CONFIG_FILES(dummy)
+[define]([AC_DEFUBST_VALUE], Big_Value)
+[define]([AC_DUMMY_VAR],
+changequote({{, }})dnl
+[defn({{AT_DUMMY_VAR}})]dnl
+changequote([, ]))
+m4_for(AT_Count, 1, 100,
+[AC_DEFUBST(AT_Count)
+])],
+[# Checking that AC_DEFINE worked properly.
+AT_DATA(expout,
+[m4_for(AT_Count, 1, 100,
+[
+/* DEFINE_Description */
+[#define] AT_DUMMY_VAR(AT_Count) "Big_Value"
+])])
+AT_CHECK([sed -n -e '3,$ p' config.h], 0, expout)
+# Checking that AC_SUBST worked properly.
+AT_DATA(expout,
+[m4_for(AT_Count, 1, 100,
+[Big_Value
+])])
+])