]> git.eshelyaron.com Git - emacs.git/commitdiff
; Bump Emacs version to 30.1.90
authorEli Zaretskii <eliz@gnu.org>
Sun, 18 May 2025 09:08:31 +0000 (05:08 -0400)
committerEshel Yaron <me@eshelyaron.com>
Tue, 27 May 2025 14:25:22 +0000 (16:25 +0200)
* README:
* configure.ac:
* exec/configure.ac:
* java/AndroidManifest.xml.in (Version-code):
* nt/README.W32:
* msdos/sed2v2.inp: Bump Emacs version to 30.1.90.

(cherry picked from commit 4c110212604d5d825abe95418db5dd822b7e9375)

README
configure.ac
exec/configure.ac
java/AndroidManifest.xml.in
msdos/sed2v2.inp
nt/README.W32

diff --git a/README b/README
index 20a920ce3cca93b39632a59ac588bc9c3668e9ca..d0f2d580b4fdb9f4edc8b0d0d7c2d001737ffa74 100644 (file)
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ Copyright (C) 2001-2025 Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
 
-This directory tree holds version 31.0.50 of GNU Emacs, the extensible,
+This directory tree holds version 30.1.90 of GNU Emacs, the extensible,
 customizable, self-documenting real-time display editor.
 
 The file INSTALL in this directory says how to build and install GNU
index fc165e6d35cd0c193b25955403f8069d78405284..e57cf55fe862fbaa53d64cd7721e0fd820dfa1bb 100644 (file)
@@ -22,8 +22,8 @@ dnl  You should have received a copy of the GNU General Public License
 dnl  along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 
 AC_PREREQ([2.65])
-dnl Note this is parsed by (at least) make-dist.
-AC_INIT([GNU Emacs], [31.0.50], [bug-gnu-emacs@gnu.org], [],
+dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
+AC_INIT([GNU Emacs], [30.1.90], [bug-gnu-emacs@gnu.org], [],
   [https://www.gnu.org/software/emacs/])
 
 if test "$XCONFIGURE" = "android"; then
@@ -49,11 +49,6 @@ if test "$XCONFIGURE" = "android"; then
     CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=32"
     enable_largefile=no
     enable_year2038=no])
-  # Gnulib should not attempt not to reimplement tzalloc, as strftime
-  # attempts to link with symbols that are only present in the Gnulib
-  # replacement.
-  AS_IF([test "$ANDROID_SDK" -ge "35"],
-    [gl_cv_onwards_func_tzalloc="future OS version"])
 fi
 
 dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
@@ -202,17 +197,11 @@ AS_IF([test "$XCONFIGURE" = "android"],[
 
   AC_MSG_NOTICE([configuring in `exec'])
 
-  # Derive a name for a cache file for this configure script from the
-  # current, if specified.
-  exec_cache_file=
-  AS_CASE([$cache_file], [/dev/null | ""], [],
-    [[[\\/]* | ?:[\\/]*]], [exec_cache_file="--cache-file=$cache_file.2"],
-    [*], [exec_cache_file="--cache-file=../$cache_file.2"])
   OLDCWD=`pwd`
   cd exec
   $CONFIG_SHELL $emacs_srcdir/exec/configure           \
                --host=$host "CC=$CC" "LD=$CC" "AS=$CC" \
-               "AR=$AR" "CFLAGS=$CFLAGS" $exec_cache_file
+               "AR=$AR" "CFLAGS=$CFLAGS"
   emacs_val=$?
   cd $OLDCWD
 
@@ -449,13 +438,28 @@ this option's value should be 'yes' or 'no'.]) ;;
     ],
     [with_pdumper=auto])
 
+AC_ARG_WITH([unexec],
+  AS_HELP_STRING(
+    [--with-unexec=VALUE],
+    [enable unexec support unconditionally
+      ('yes', 'no', or 'auto': default 'auto')]),
+    [ case "${withval}" in
+        yes|no|auto) val=$withval ;;
+        *) AC_MSG_ERROR(
+           ['--with-unexec=$withval' is invalid;
+this option's value should be 'yes' or 'no'.]) ;;
+      esac
+      with_unexec=$val
+    ],
+    [with_unexec=auto])
+
 AC_ARG_WITH([dumping],[AS_HELP_STRING([--with-dumping=VALUE],
     [kind of dumping to use for initial Emacs build
-(VALUE one of: pdumper, none; default pdumper)])],
+(VALUE one of: pdumper, unexec, none; default pdumper)])],
     [ case "${withval}" in
-        pdumper|none) val=$withval ;;
+        pdumper|unexec|none) val=$withval ;;
         *) AC_MSG_ERROR(['--with-dumping=$withval is invalid;
-this option's value should be 'pdumper' or 'none'.])
+this option's value should be 'pdumper', 'unexec', or 'none'.])
         ;;
       esac
       with_dumping=$val
@@ -470,10 +474,22 @@ if test "$with_pdumper" = "auto"; then
   fi
 fi
 
+if test "$with_unexec" = "auto"; then
+  if test "$with_dumping" = "unexec"; then
+    with_unexec=yes
+  else
+    with_unexec=no
+  fi
+fi
+
 if test "$with_dumping" = "pdumper" && test "$with_pdumper" = "no"; then
   AC_MSG_ERROR(['--with-dumping=pdumper' requires pdumper support])
 fi
 
+if test "$with_dumping" = "unexec" && test "$with_unexec" = "no"; then
+  AC_MSG_ERROR(['--with-dumping=unexec' requires unexec support])
+fi
+
 if test "$with_pdumper" = "yes"; then
   AC_DEFINE([HAVE_PDUMPER], [1],
     [Define to build with portable dumper support])
@@ -486,24 +502,6 @@ AC_SUBST([HAVE_PDUMPER])
 DUMPING=$with_dumping
 AC_SUBST([DUMPING])
 
-dnl Where the etc/emacs.service file is to be installed.
-dnl We use $(prefix)/lib/systemd/user as default, but this may not be
-dnl in systemd's search path when prefix is neither /usr nor /usr/local.
-dnl In that case (e.g. for non-root installs) the location can be
-dnl specified with the configure option.
-dnl See https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#id-1.8.5
-dnl for documentation of systemd's unit file load path.
-AC_ARG_WITH([systemduserunitdir],
-  [AS_HELP_STRING([--with-systemduserunitdir=DIR],
-    [directory for systemd user unit file;
-    default 'PREFIX/usr/lib/systemd/user'])],
-  [systemduserunitdir=${withval}],
-  [systemduserunitdir='${prefix}/lib/systemd/user'])
-if test "${systemduserunitdir}" = "no"; then
-  systemduserunitdir=''
-fi
-AC_SUBST([systemduserunitdir])
-
 dnl FIXME currently it is not the last.
 dnl This should be the last --with option, because --with-x is
 dnl added later on when we find the file name of X, and it's best to
@@ -574,7 +572,7 @@ OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI in a Cygwin build])
 OPTION_DEFAULT_OFF([pgtk], [use GTK to support window systems other than X])
 
 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
-OPTION_DEFAULT_IFAVAILABLE([dbus],[compile with D-Bus support])
+OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
 AC_ARG_WITH([gconf],[AS_HELP_STRING([--with-gconf],
 [compile with Gconf support (Gsettings replaces this)])],[],
 [if test $with_features = yes; then
@@ -960,7 +958,7 @@ a valid path to android.jar.  See config.log for more details.])
   fi
 
   AC_CACHE_CHECK([whether android.jar is new enough],
-    [emacs_cv_android_v_or_later],
+    [emacs_cv_android_u_or_later],
     AS_IF([rm -f conftest.class
 cat << EOF > conftest.java
 
@@ -968,18 +966,18 @@ import android.os.Build;
 
 class conftest
 {
-  private static int test = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+  private static int test = Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
 }
 
 EOF
 ("$JAVAC" -classpath "$with_android" -target 1.7 -source 1.7 conftest.java \
   -d . >&AS_MESSAGE_LOG_FD 2>&1) && test -s conftest.class && rm -f conftest.class],
-          [emacs_cv_android_v_or_later=yes],
-          [emacs_cv_android_v_or_later=no]))
+          [emacs_cv_android_u_or_later=yes],
+          [emacs_cv_android_u_or_later=no]))
 
-  if test "$emacs_cv_android_v_or_later" = "no"; then
+  if test "$emacs_cv_android_u_or_later" = "no"; then
     AC_MSG_ERROR([Emacs must be built with an android.jar file produced for \
-Android 15 (Vanilla Ice Cream) or later.])
+Android 14 (Upside Down Cake) or later.])
   fi
 
   dnl See if the Java compiler supports the `--release' option which
@@ -1188,8 +1186,6 @@ main (void)
    foo = "emacs_api_33";
 #elif __ANDROID_API__ < 35
    foo = "emacs_api_34";
-#elif __ANDROID_API__ < 36
-   foo = "emacs_api_35";
 #else
    foo = "emacs_api_future";
 #endif
@@ -1278,11 +1274,6 @@ packages targeting Android 2.2.])])
   emacs_val="--enable-check-lisp-object-type=$enable_check_lisp_object_type"
   passthrough="$passthrough $emacs_val"
 
-  # And derive a name for the recursive configure invocation's cache
-  # file if one should be specified for this.
-  AS_IF([test -n "$cache_file" && test "$cache_file" != "/dev/null"],
-    [passthrough="$passthrough --cache-file=$cache_file.1"])
-
   AS_IF([test "x$with_mailutils" = "xyes"], [emacs_use_mailutils=yes])
   AC_SUBST([emacs_use_mailutils])
 
@@ -1611,6 +1602,10 @@ ac_func_list=$funcs
 AC_DEFUN([gt_TYPE_WINT_T],
   [GNULIBHEADERS_OVERRIDE_WINT_T=0
    AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T])])
+# Emacs does not need precise checks for the Solaris 10 MB_CUR_MAX bug.
+AC_DEFUN_ONCE([gl_STDLIB_H],
+  [AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+   gl_NEXT_HEADERS([stdlib.h])])
 # Emacs does not need to check for off64_t.
 AC_DEFUN([gl_TYPE_OFF64_T],
   [HAVE_OFF64_T=1
@@ -1802,6 +1797,7 @@ AS_IF([test $gl_gcc_warnings = no],
   nw="$nw -Wcast-align=strict"      # Emacs is tricky with pointers.
   nw="$nw -Wduplicated-branches"    # Too many false alarms
   nw="$nw -Wformat-overflow=2"      # False alarms due to GCC bug 110333
+  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
   nw="$nw -Woverlength-strings"     # Not a problem these days
   nw="$nw -Wvla"                    # Emacs uses <vla.h>.
   nw="$nw -Wunused-const-variable=2" # lisp.h declares const objects.
@@ -1856,7 +1852,6 @@ AS_IF([test $gl_gcc_warnings = no],
     gl_WARN_ADD([$w])
   done
   gl_WARN_ADD([-Wredundant-decls])     # Prefer this, as we don't use Bison.
-  gl_WARN_ADD([-Wtrailing-whitespace]) # This project's coding style
   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
   gl_WARN_ADD([-Wno-override-init])    # More trouble than it is worth
   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
@@ -2001,8 +1996,6 @@ ARCH_INDEPENDENT_CONFIG_FILES([src/verbose.mk])
 
 dnl Some other nice autoconf tests.
 AC_PROG_INSTALL
-dnl use "gawk" where possible
-AC_PROG_AWK
 dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
 dnl AC_PROG_MKDIR_P
 dnl if test "x$RANLIB" = x; then
@@ -2067,20 +2060,64 @@ AC_PATH_PROG([GZIP_PROG], [gzip])
 test $with_compress_install != yes && test -n "$GZIP_PROG" && \
    GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)"
 
+if test "$with_dumping" = "unexec" && test "$opsys" = "nacl"; then
+  AC_MSG_ERROR([nacl is not compatible with --with-dumping=unexec])
+fi
+
 AC_CACHE_CHECK([for 'find' args to delete a file],
   [emacs_cv_find_delete],
   [if touch conftest.tmp && find conftest.tmp -delete 2>/dev/null &&
       test ! -f conftest.tmp
-   then emacs_cv_find_delete="-delete" # GNU 'find'
-   elif find . -prune -name x -exec echo {} + 2>/dev/null
-   then emacs_cv_find_delete="-exec rm -f {} +" # POSIX 'find'
-   else emacs_cv_find_delete="-exec rm -f {} + -o -exec true {} +" # AIX 7.3
+   then emacs_cv_find_delete="-delete"
+   else emacs_cv_find_delete="-exec rm -f {} ';'"
    fi])
 FIND_DELETE=$emacs_cv_find_delete
 AC_SUBST([FIND_DELETE])
 
 PAXCTL_dumped=
 PAXCTL_notdumped=
+if test $with_unexec = yes && test $opsys = gnu-linux; then
+  if test "${SETFATTR+set}" != set; then
+    AC_CACHE_CHECK([for setfattr],
+      [emacs_cv_prog_setfattr],
+      [touch conftest.tmp
+       if (setfattr -n user.pax.flags conftest.tmp) >/dev/null 2>&1; then
+        emacs_cv_prog_setfattr=yes
+       else
+        emacs_cv_prog_setfattr=no
+       fi])
+    if test "$emacs_cv_prog_setfattr" = yes; then
+      PAXCTL_notdumped='$(SETFATTR) -n user.pax.flags -v er'
+      SETFATTR=setfattr
+    else
+      SETFATTR=
+    fi
+  fi
+  case $opsys,$PAXCTL_notdumped,$emacs_uname_r in
+    gnu-linux,,* | netbsd,,[0-7].*)
+      AC_PATH_PROG([PAXCTL], [paxctl], [],
+       [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
+      if test -n "$PAXCTL"; then
+       if test "$opsys" = netbsd; then
+         PAXCTL_dumped='$(PAXCTL) +a'
+         PAXCTL_notdumped=$PAXCTL_dumped
+       else
+         AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
+         AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+           [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then
+              AC_MSG_RESULT([yes])
+            else
+              AC_MSG_RESULT([no])
+              PAXCTL=
+            fi])
+         if test -n "$PAXCTL"; then
+           PAXCTL_dumped='$(PAXCTL) -zex'
+           PAXCTL_notdumped='$(PAXCTL) -r'
+         fi
+       fi
+      fi;;
+  esac
+fi
 AC_SUBST([PAXCTL_dumped])
 AC_SUBST([PAXCTL_notdumped])
 AC_SUBST([SETFATTR])
@@ -2147,6 +2184,37 @@ else
     ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
 fi
 
+dnl On some platforms using GNU ld, linking temacs needs -znocombreloc.
+dnl Although this has something to do with dumping, the details are unknown.
+dnl If the flag is used but not needed,
+dnl Emacs should still work (albeit a bit more slowly),
+dnl so use the flag everywhere that it is supported.
+dnl When testing whether the flag works, treat GCC specially
+dnl since it just gives a non-fatal 'unrecognized option'
+dnl if not built to support GNU ld.
+if test "$GCC" = yes; then
+  LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc"
+else
+  LDFLAGS_NOCOMBRELOC="-znocombreloc"
+fi
+
+AC_CACHE_CHECK([for -znocombreloc], [emacs_cv_znocombreloc],
+  [if test $with_unexec = no; then
+     emacs_cv_znocombreloc='not needed'
+   else
+     save_LDFLAGS=$LDFLAGS
+     LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+       [emacs_cv_znocombreloc=yes], [emacs_cv_znocombreloc=no])
+     LDFLAGS=$save_LDFLAGS
+   fi])
+
+case $emacs_cv_znocombreloc in
+  no*)
+    LDFLAGS_NOCOMBRELOC= ;;
+esac
+
+
 AC_CACHE_CHECK([whether addresses are sanitized],
   [emacs_cv_sanitize_address],
   [AC_COMPILE_IFELSE(
@@ -2162,8 +2230,48 @@ AC_CACHE_CHECK([whether addresses are sanitized],
      [emacs_cv_sanitize_address=yes],
      [emacs_cv_sanitize_address=no])])
 
-LD_SWITCH_SYSTEM=
+if test $with_unexec = yes; then
+  AC_DEFINE([HAVE_UNEXEC], [1], [Define if Emacs supports unexec.])
+  if test "$emacs_cv_sanitize_address" = yes; then
+    AC_MSG_WARN([[Addresses are sanitized; suggest --without-unexec]])
+  fi
+fi
+
+
+UNEXEC_OBJ=
+test $with_unexec = yes &&
 case "$opsys" in
+  # MSDOS uses unexcoff.o
+  aix4-2)
+   UNEXEC_OBJ=unexaix.o
+   ;;
+  cygwin)
+   UNEXEC_OBJ=unexcw.o
+   ;;
+  darwin)
+   UNEXEC_OBJ=unexmacosx.o
+   ;;
+  hpux10-20 | hpux11)
+   UNEXEC_OBJ=unexhp9k800.o
+   ;;
+  mingw32)
+   UNEXEC_OBJ=unexw32.o
+   ;;
+  solaris)
+   # Use the Solaris dldump() function, called from unexsol.c, to dump
+   # emacs, instead of the generic ELF dump code found in unexelf.c.
+   # The resulting binary has a complete symbol table, and is better
+   # for debugging and other observability tools (debuggers, pstack, etc).
+   UNEXEC_OBJ=unexsol.o
+   ;;
+  *)
+   UNEXEC_OBJ=unexelf.o
+   ;;
+esac
+AC_SUBST([UNEXEC_OBJ])
+
+LD_SWITCH_SYSTEM=
+test "$with_unexec" = no || case "$opsys" in
   freebsd|dragonfly)
    ## Let 'ld' find image libs and similar things in /usr/local/lib.
    ## The system compiler, GCC, has apparently been modified to not
@@ -2185,7 +2293,9 @@ case "$opsys" in
    ;;
 
   openbsd)
-      :
+   ## Han Boetes <han@boetes.org> says this is necessary,
+   ## otherwise Emacs dumps core on elf systems.
+   LD_SWITCH_SYSTEM="-Z"
    ;;
 esac
 AC_SUBST([LD_SWITCH_SYSTEM])
@@ -2209,50 +2319,21 @@ esac
 
 C_SWITCH_MACHINE=
 
-AC_CACHE_CHECK([for flags to work around GCC bug 58416],
-  [emacs_cv_gcc_bug_58416_CFLAGS],
-  [emacs_cv_gcc_bug_58416_CFLAGS='none needed'
-   AS_CASE([$canonical],
-     [[i[3456]86-* | x86_64-*]],
-       [AS_IF([test "$GCC" = yes],
-         [old_CFLAGS=$CFLAGS
-          # If no flags are needed (e.g., not GCC 4+), don't use any.
-          # Otherwise, use -mfpmath=sse if already assuming SSE2.
-          # Otherwise, use -fno-tree-sra.
-          for emacs_cv_gcc_bug_58416_CFLAGS in \
-              'none needed' -mfpmath=sse -fno-tree-sra
-          do
-            AS_CASE([$emacs_cv_gcc_bug_58416_CFLAGS],
-              ['none needed'], [],
-              [-fno-tree-sra], [break],
-              [CFLAGS="$old_CFLAGS $emacs_cv_gcc_bug_58416_CFLAGS"])
-            AC_COMPILE_IFELSE(
-              [AC_LANG_DEFINES_PROVIDED
-               [/* Work around GCC bug with double in unions on x86,
-                   where the generated insns copy non-floating-point data
-                   via fldl/fstpl instruction pairs.  This can misbehave if
-                   the data's bit pattern looks like a NaN.  See, e.g.:
-                      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416#c10
-                      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71460
-                      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93271
-                      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659
-                   Problem observed with 'gcc -m32' with GCC 14.1.1
-                   20240607 (Red Hat 14.1.1-5) on x86-64.  */
-                #include <float.h>
-                #if \
-                    (4 <= __GNUC__ && __GNUC__ <= 14 && !defined __clang__ \
-                     && (defined __i386__ || defined __x86_64__) \
-                     && ! (0 <= FLT_EVAL_METHOD && FLT_EVAL_METHOD <= 1))
-                # error "GCC bug 58416 is possibly present"
-                #endif
-              ]],
-              [break])
-          done
-          CFLAGS=$old_CFLAGS])])])
-AS_CASE([$emacs_cv_gcc_bug_58416_CFLAGS],
-  [-*],
-    [C_SWITCH_MACHINE="$C_SWITCH_MACHINE $emacs_cv_gcc_bug_58416_CFLAGS"])
-
+test $with_unexec = yes &&
+case $canonical in
+ alpha*)
+    ## With ELF, make sure that all common symbols get allocated to in the
+    ## data section.  Otherwise, the dump of temacs may miss variables in
+    ## the shared library that have been initialized.  For example, with
+    ## GNU libc, __malloc_initialized would normally be resolved to the
+    ## shared library's .bss section, which is fatal.
+    if test "x$GCC" = "xyes"; then
+      C_SWITCH_MACHINE="-fno-common"
+    else
+      AC_MSG_ERROR([Non-GCC compilers are not supported.])
+    fi
+  ;;
+esac
 AC_SUBST([C_SWITCH_MACHINE])
 
 C_SWITCH_SYSTEM=
@@ -2977,17 +3058,6 @@ if test "${opsys}" = "haiku" && test "${with_be_app}" = "yes"; then
                    [AC_MSG_ERROR([The Application Kit headers required for building
 with the Application Kit were not found or cannot be compiled. Either fix this, or
 re-configure with the option '--without-be-app'.])])
-   AC_CACHE_CHECK([whether BObjectList accepts ownership as a template parameter],
-     [emacs_cv_bobjectlist_ownership_is_template_parameter],
-     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-                          #include <support/ObjectList.h>
-                          #include <interface/StringItem.h>
-                          static BObjectList<BStringItem, true> test;]], [])],
-        [emacs_cv_bobjectlist_ownership_is_template_parameter=yes],
-       [emacs_cv_bobjectlist_ownership_is_template_parameter=no])])
-   AS_IF([test "x$emacs_cv_bobjectlist_ownership_is_template_parameter" = "xyes"],
-     [AC_DEFINE([BOBJECTLIST_OWNERSHIP_IS_TEMPLATE_PARAMETER], [1],
-       [Define to 1 if BObjectList ownership is defined as a template parameter.])])
    AC_LANG_POP([C++])
 fi
 
@@ -3031,6 +3101,7 @@ if test "${opsys}" = "mingw32"; then
   HAVE_W32=${emacs_cv_w32api}
 fi
 
+FIRSTFILE_OBJ=
 NTDIR=
 LIBS_ECLIENT=
 LIB_WSOCK32=
@@ -3044,7 +3115,7 @@ if test "${HAVE_W32}" = "yes"; then
   AC_CHECK_TOOL([WINDRES], [windres],
                 [AC_MSG_ERROR([No resource compiler found.])])
   W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
-  W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o w32dwrite.o w32cygwinx.o"
+  W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o w32cygwinx.o"
   EMACSRES="emacs.res"
   case "$canonical" in
     x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
@@ -3078,6 +3149,7 @@ if test "${HAVE_W32}" = "yes"; then
     W32_RES_LINK="\$(EMACSRES)"
     CLIENTRES="emacsclient.res"
     CLIENTW="emacsclientw\$(EXEEXT)"
+    FIRSTFILE_OBJ=firstfile.o
     NTDIR=nt
     CM_OBJ=
     LIBS_ECLIENT="-lcomctl32"
@@ -3099,6 +3171,7 @@ AC_SUBST([EMACS_MANIFEST])
 AC_SUBST([CLIENTRES])
 AC_SUBST([CLIENTW])
 AC_SUBST([W32_RES_LINK])
+AC_SUBST([FIRSTFILE_OBJ])
 AC_SUBST([NTDIR])
 AC_SUBST([CM_OBJ])
 AC_SUBST([LIBS_ECLIENT])
@@ -3236,78 +3309,36 @@ AC_CACHE_CHECK(
        [AC_LANG_PROGRAM(
          [[#include <malloc.h>
            static void hook (void) {}]],
-          [[__after_morecore_hook = hook;
+         [[malloc_set_state (malloc_get_state ());
+           __after_morecore_hook = hook;
            __malloc_initialize_hook = hook;]])],
        [emacs_cv_var_doug_lea_malloc=yes])
    fi])
 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
 
-AC_CHECK_ALIGNOF([int])
-AC_CHECK_ALIGNOF([long])
-AC_CHECK_ALIGNOF([long long])
-AC_CHECK_SIZEOF([long])
-
-AC_CACHE_CHECK([for struct alignment],
-  [emacs_cv_struct_alignment],
-  [AC_COMPILE_IFELSE(
-     [AC_LANG_PROGRAM([[#include <stddef.h>
-                       struct s { char c; } __attribute__ ((aligned (8)));
-                       struct t { char c; struct s s; };
-                       char verify[offsetof (struct t, s) == 8 ? 1 : -1];
-                     ]])],
-     [emacs_cv_struct_alignment=yes],
-     [emacs_cv_struct_alignment=no])])
-if test "$emacs_cv_struct_alignment" = yes; then
-  AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], [1],
-    [Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the
-     structure to an N-byte boundary.])
-fi
-
+hybrid_malloc=
 system_malloc=yes
 
-# If it appears as if the system malloc can't be trusted to return
-# adequately positioned memory, enable the GNU malloc, which more
-# consistently provides allocations at low addresses, as is required for
-# the pdumper to load dump files at a representable location.
-AS_IF([test "$with_pdumper" = "yes" && test "$with_wide_int" != "yes"],
-  AC_CHECK_HEADERS([stdalign.h])
-  [AC_CACHE_CHECK([whether alignas is required yet unavailable],
-    [emacs_cv_alignas_unavailable],
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#ifdef HAVE_STDALIGN_H
-#include <stdalign.h>
-#endif
-      #include <limits.h>
-     ]], [[
-#define IDEAL_GCALIGNMENT 8
-#if INTPTR_MAX <= INT_MAX && !defined WIDE_EMACS_INT
-#  define ALIGNOF_EMACS_INT ALIGNOF_INT
-# elif INTPTR_MAX <= LONG_MAX && !defined WIDE_EMACS_INT
-#  define ALIGNOF_EMACS_INT ALIGNOF_LONG
-# elif INTPTR_MAX <= LLONG_MAX
-#  define ALIGNOF_EMACS_INT ALIGNOF_LONG_LONG
-# else
-# error "INTPTR_MAX too large"
-#endif
-
-#if (ALIGNOF_EMACS_INT < IDEAL_GCALIGNMENT && !defined alignas \
-     && !defined HAVE_STRUCT_ATTRIBUTE_ALIGNED                 \
-     && !defined __alignas_is_defined                          \
-     && __STDC_VERSION__ < 202311 && __cplusplus < 201103)
-#error "!USE_LSB_TAG required"
-#endif
-   ]])], [emacs_cv_alignas_unavailable=no],
-        [emacs_cv_alignas_unavailable=yes])])
-   AS_IF([test "$emacs_cv_alignas_unavailable" = "yes"],
-     [system_malloc=no
-       AC_MSG_WARN([The GNU memory manager will be enabled as your system
-does not guarantee that the portable dumper can allocate memory at a suitably
-low address.])])])
-
 dnl This must be before the test of $ac_cv_func_sbrk below.
 AC_CHECK_FUNCS_ONCE([sbrk])
 
+test $with_unexec = yes &&
+case "$opsys" in
+  ## darwin ld insists on the use of malloc routines in the System framework.
+  darwin | mingw32 | nacl | solaris) ;;
+  cygwin | qnxnto | freebsd)
+         hybrid_malloc=yes
+          system_malloc= ;;
+  *) test "$ac_cv_func_sbrk" = yes && system_malloc=$emacs_cv_sanitize_address;;
+esac
+
+if test "${system_malloc}" != yes && test "${doug_lea_malloc}" != yes \
+   && test "${UNEXEC_OBJ}" = unexelf.o; then
+  hybrid_malloc=yes
+fi
+
 GMALLOC_OBJ=
+HYBRID_MALLOC=
 if test "${system_malloc}" = "yes"; then
   AC_DEFINE([SYSTEM_MALLOC], [1],
     [Define to 1 to use the system memory allocator, even if it is not
@@ -3316,6 +3347,14 @@ if test "${system_malloc}" = "yes"; then
   GNU_MALLOC_reason="
     (The GNU allocators don't work with this system configuration.)"
   VMLIMIT_OBJ=
+elif test "$hybrid_malloc" = yes; then
+  AC_DEFINE([HYBRID_MALLOC], [1],
+    [Define to use gmalloc before dumping and the system malloc after.])
+  HYBRID_MALLOC=1
+  GNU_MALLOC=no
+  GNU_MALLOC_reason=" (only before dumping)"
+  GMALLOC_OBJ=gmalloc.o
+  VMLIMIT_OBJ=
 else
   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
   VMLIMIT_OBJ=vm-limit.o
@@ -3334,17 +3373,18 @@ else
        of the main data segment.])
   fi
 fi
+AC_SUBST([HYBRID_MALLOC])
 AC_SUBST([GMALLOC_OBJ])
 AC_SUBST([VMLIMIT_OBJ])
 
-if test "$doug_lea_malloc" = "yes"; then
+if test "$doug_lea_malloc" = "yes" && test "$hybrid_malloc" != yes; then
   if test "$GNU_MALLOC" = yes ; then
     GNU_MALLOC_reason="
       (Using Doug Lea's new malloc from the GNU C Library.)"
   fi
   AC_DEFINE([DOUG_LEA_MALLOC], [1],
     [Define to 1 if the system memory allocator is Doug Lea style,
-     with malloc hooks.])
+     with malloc hooks and malloc_set_state.])
 
   ## Use mmap directly for allocating larger buffers.
   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
@@ -3399,7 +3439,8 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
              status += pthread_create (&th, 0, 0, 0);
              status += pthread_sigmask (SIG_BLOCK, &new_mask, &old_mask);
              status += pthread_kill (th, 0);
-             #if ! (defined SYSTEM_MALLOC || defined DOUG_LEA_MALLOC)
+             #if ! (defined SYSTEM_MALLOC || defined HYBRID_MALLOC \
+                    || defined DOUG_LEA_MALLOC)
              /* Test for pthread_atfork only if gmalloc uses it,
                 as older-style hosts like MirBSD 10 lack it.  */
              status += pthread_atfork (noop, noop, noop);
@@ -3487,39 +3528,6 @@ if test "${HAVE_X11}" = "yes"; then
     export LD_RUN_PATH
   fi
 
-  if test "${opsys}" = "gnu-linux"; then
-    AC_CACHE_CHECK([whether X on GNU/Linux needs -b to link], [emacs_cv_b_link],
-    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
-     [[XOpenDisplay ("foo");]])],
-     [xgnu_linux_first_failure=no],
-     [xgnu_linux_first_failure=yes])
-    if test "${xgnu_linux_first_failure}" = "yes"; then
-      OLD_CPPFLAGS="$CPPFLAGS"
-      OLD_LIBS="$LIBS"
-      CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
-      LIBS="$LIBS -b i486-linuxaout"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
-       [[XOpenDisplay ("foo");]])],
-       [xgnu_linux_second_failure=no],
-       [xgnu_linux_second_failure=yes])
-      if test "${xgnu_linux_second_failure}" = "yes"; then
-       # If we get the same failure with -b, there is no use adding -b.
-       # So leave it out.  This plays safe.
-        emacs_cv_b_link=no
-      else
-        emacs_cv_b_link=yes
-      fi
-      CPPFLAGS=$OLD_CPPFLAGS
-      LIBS=$OLD_LIBS
-    else
-      emacs_cv_b_link=no
-    fi])
-    if test "x$emacs_cv_b_link" = xyes ; then
-      LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
-      C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
-    fi
-  fi
-
   # Reportedly, some broken Solaris systems have XKBlib.h but are missing
   # header files included from there.
   AC_CACHE_CHECK([for Xkb], [emacs_cv_xkb],
@@ -3651,18 +3659,9 @@ if test "${with_sqlite3}" != "no"; then
        CFLAGS="$SAVE_CFLAGS"
      fi
    else
-     AC_CACHE_CHECK([for sqlite3],
-       [emacs_cv_have_sqlite3],
-       [OLIBS=$LIBS
-       LIBS="-lsqlite3 $LIBS"
-       AC_LINK_IFELSE(
-         [AC_LANG_PROGRAM([[#include <sqlite3.h>
-                            sqlite3 *handle;]],
-                          [[return sqlite3_open_v2 ("", &handle, 0, "");]])],
-         [emacs_cv_have_sqlite3=yes],
-         [emacs_cv_have_sqlite3=no])
-       LIBS=$OLIBS])
-     HAVE_SQLITE3=$emacs_cv_have_sqlite3
+     AC_CHECK_LIB([sqlite3], [sqlite3_open_v2],
+       [HAVE_SQLITE3=yes],
+       [HAVE_SQLITE3=no])
      if test "$HAVE_SQLITE3" = "yes"; then
        SQLITE3_LIBS=-lsqlite3
        LIBS="$SQLITE3_LIBS $LIBS"
@@ -3913,15 +3912,13 @@ dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
 dnl other platforms.
 HAVE_DBUS=no
 DBUS_OBJ=
-if test "${with_dbus}" != "no" ; then
-   EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0], [HAVE_DBUS=yes], [HAVE_DBUS=no])
+if test "${with_dbus}" = "yes"; then
+   EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0])
    if test "$HAVE_DBUS" = yes; then
      AC_DEFINE([HAVE_DBUS], [1], [Define to 1 if using D-Bus.])
      dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
      dnl dbus_type_is_valid and dbus_validate_* have been introduced in
      dnl D-Bus 1.5.12.
-     dnl dbus_message_set_allow_interactive_authorization was introduced
-     dnl in D-Bus 1.8.10.
      OLD_LIBS=$LIBS
      LIBS="$LIBS $DBUS_LIBS"
      AC_CHECK_FUNCS([dbus_watch_get_unix_fd \
@@ -3929,8 +3926,7 @@ if test "${with_dbus}" != "no" ; then
                    dbus_validate_bus_name \
                     dbus_validate_path \
                    dbus_validate_interface \
-                   dbus_validate_member \
-                    dbus_message_set_allow_interactive_authorization])
+                   dbus_validate_member])
      LIBS=$OLD_LIBS
      DBUS_OBJ=dbusbind.o
    fi
@@ -4543,7 +4539,6 @@ fi
 ### End of font-backend (under any platform) section.
 
 ### Start of font-backend (under X11) section.
-is_xft_version_outdated=no
 if test "${HAVE_X11}" = "yes"; then
   if test $HAVE_CAIRO = yes; then
     dnl Strict linkers fail with
@@ -4592,20 +4587,7 @@ if test "${HAVE_X11}" = "yes"; then
 
        if test "${HAVE_XFT}" = "yes"; then
          AC_DEFINE([HAVE_XFT], [1], [Define to 1 if you have the Xft library.])
-         AC_SUBST([XFT_LIBS])
-         AC_CACHE_CHECK([whether libXft is not recent enough to support color fonts],
-           [emacs_cv_is_xft_version_outdated],
-           [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-             [[
-               #include <X11/Xlib.h>
-               #include <X11/Xft/Xft.h>
-               #if XftVersion < 20306
-               #error "Xft < 2.3.6"
-               #endif /* XftVersion < 20306 */
-             ]], [])],
-             [emacs_cv_is_xft_version_outdated=no],
-             [emacs_cv_is_xft_version_outdated=yes])])
-         is_xft_version_outdated=$emacs_cv_is_xft_version_outdated
+           AC_SUBST([XFT_LIBS])
          C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
        fi                        # "${HAVE_XFT}" = "yes"
        CPPFLAGS=$OLD_CPPFLAGS
@@ -4994,29 +4976,22 @@ AC_SUBST([LCMS2_LIBS])
 
 HAVE_ZLIB=no
 LIBZ=
-AS_IF([test "${with_zlib}" != "no"],
-  [AC_CACHE_CHECK([for library containing inflateEnd],
-     [emacs_cv_libz],
-     [AC_LANG_CONFTEST([AC_LANG_PROGRAM([[#include <zlib.h>
-                                         z_stream stream;]],
-                                       [[return inflateEnd (&stream);]])])
-      OLIBS=$LIBS
-      for emacs_cv_libz in '' -lz no; do
-       test "$emacs_cv_libz" = no && break
-       LIBS="$emacs_cv_libz $OLIBS"
-       AC_LINK_IFELSE([], [break])
-      done
-      LIBS=$OLIBS])
-
-   AS_CASE([$emacs_cv_libz],
-     [-* | ''],
-       [# mingw32 doesn't use -lz, since it loads the library dynamically.
-       AS_CASE([$opsys],
-         [mingw32], [LIBZ=],
-         [LIBZ=$emacs_cv_libz])
-       HAVE_ZLIB=yes
-       AC_DEFINE([HAVE_ZLIB], [1],
-         [Define to 1 if you have the zlib library (-lz).])])])
+if test "${with_zlib}" != "no"; then
+  OLIBS=$LIBS
+  AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes])
+  LIBS=$OLIBS
+  case $ac_cv_search_inflateEnd in
+    -*) LIBZ=$ac_cv_search_inflateEnd ;;
+  esac
+fi
+if test "${HAVE_ZLIB}" = "yes"; then
+  AC_DEFINE([HAVE_ZLIB], [1],
+    [Define to 1 if you have the zlib library (-lz).])
+  ### mingw32 doesn't use -lz, since it loads the library dynamically.
+  if test "${opsys}" = "mingw32"; then
+     LIBZ=
+  fi
+fi
 AC_SUBST([LIBZ])
 
 ### Dynamic library support
@@ -5096,14 +5071,12 @@ AC_SUBST_FILE([module_env_snippet_27])
 AC_SUBST_FILE([module_env_snippet_28])
 AC_SUBST_FILE([module_env_snippet_29])
 AC_SUBST_FILE([module_env_snippet_30])
-AC_SUBST_FILE([module_env_snippet_31])
 module_env_snippet_25="$srcdir/src/module-env-25.h"
 module_env_snippet_26="$srcdir/src/module-env-26.h"
 module_env_snippet_27="$srcdir/src/module-env-27.h"
 module_env_snippet_28="$srcdir/src/module-env-28.h"
 module_env_snippet_29="$srcdir/src/module-env-29.h"
 module_env_snippet_30="$srcdir/src/module-env-30.h"
-module_env_snippet_31="$srcdir/src/module-env-31.h"
 emacs_major_version=`AS_ECHO([$PACKAGE_VERSION]) | sed 's/[[.]].*//'`
 AC_SUBST([emacs_major_version])
 
@@ -5233,9 +5206,15 @@ if test "${with_native_compilation}" = "default"; then
       # Check if libgccjit really works.
       AC_RUN_IFELSE([libgccjit_smoke_test], [], [libgccjit_broken])
     fi
+    if test "$with_unexec" = yes; then
+      with_native_compilation=no
+    fi
 fi
 
 if test "${with_native_compilation}" != "no"; then
+    if test "$with_unexec" = yes; then
+       AC_MSG_ERROR(['--with-native-compilation' is not compatible with unexec])
+    fi
     if test "${HAVE_ZLIB}" = no; then
        AC_MSG_ERROR(['--with-native-compilation' requires zlib])
     fi
@@ -5310,7 +5289,7 @@ if test "${with_native_compilation}" != "no"; then
     LIBS=$SAVE_LIBS
 fi
 AC_DEFINE_UNQUOTED([NATIVE_ELISP_SUFFIX], [".eln"],
-  [System extension for native-compiled elisp])
+  [System extension for native compiled elisp])
 AC_SUBST([HAVE_NATIVE_COMP])
 AC_SUBST([LIBGCCJIT_CFLAGS])
 AC_SUBST([LIBGCCJIT_LIBS])
@@ -5523,11 +5502,6 @@ if test "${HAVE_X11}" = "yes"; then
        WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-tiff=ifavailable";;
   esac
 fi
-case $with_dbus,$HAVE_DBUS in
-  no,* | ifavailable,* | *,yes) ;;
-  *) MISSING="$MISSING dbus-1"
-     WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-dbus=ifavailable";;
-esac
 case $with_gnutls,$HAVE_GNUTLS in
   no,* | ifavailable,* | *,yes) ;;
   *) MISSING="$MISSING gnutls"
@@ -5954,6 +5928,7 @@ AC_SUBST([HAVE_LIBSECCOMP])
 AC_SUBST([LIBSECCOMP_LIBS])
 AC_SUBST([LIBSECCOMP_CFLAGS])
 
+AC_CHECK_SIZEOF([long])
 SIZEOF_LONG="$ac_cv_sizeof_long"
 AC_SUBST([SIZEOF_LONG])
 
@@ -5962,7 +5937,7 @@ LIBS="$LIB_PTHREAD $LIB_MATH $LIBS"
 AC_CHECK_FUNCS([accept4 fchdir gethostname \
 getrusage get_current_dir_name \
 lrand48 random rint tcdrain trunc \
-select getpagesize newlocale \
+select getpagesize setlocale newlocale \
 getrlimit setrlimit shutdown \
 pthread_sigmask strsignal setitimer \
 sendto recvfrom getsockname getifaddrs freeifaddrs \
@@ -6048,6 +6023,19 @@ dnl No need to check for posix_memalign if aligned_alloc works.
 AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
 AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]])
 
+case $with_unexec,$canonical in
+  yes,alpha*)
+    AC_CHECK_DECL([__ELF__], [],
+      [AC_MSG_ERROR([Non-ELF systems are not supported on this platform.])]);;
+esac
+
+if test "$with_unexec" = yes && test "$opsys" = "haiku"; then
+  dnl A serious attempt was actually made to port unexec to Haiku.
+  dnl Something in libstdc++ seems to prevent it from working.
+  AC_MSG_ERROR([Haiku is not supported by the legacy unexec dumper.
+Please use the portable dumper instead.])
+fi
+
 # Dump loading.  Android lacks posix_madvise.
 AC_CHECK_FUNCS([posix_madvise madvise])
 
@@ -6379,10 +6367,10 @@ dnl posix_spawn.  The chdir and setsid functionality is relatively
 dnl recent, so we check for it specifically.
 AC_CHECK_HEADERS([spawn.h])
 AC_SUBST([HAVE_SPAWN_H])
-gl_CHECK_FUNCS_ANDROID([posix_spawn], [#include <spawn.h>])
-gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir], [#include <spawn.h>])
-gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir_np], [#include <spawn.h>])
-gl_CHECK_FUNCS_ANDROID([posix_spawnattr_setflags], [#include <spawn.h>])
+AC_CHECK_FUNCS([posix_spawn \
+                posix_spawn_file_actions_addchdir \
+                posix_spawn_file_actions_addchdir_np \
+                posix_spawnattr_setflags])
 AC_SUBST([HAVE_POSIX_SPAWN])
 AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR])
 AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP])
@@ -7067,9 +7055,6 @@ AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
                            #ifdef USG5_4
                            # include <sys/filio.h>
                            #endif
-                           #ifdef HAVE_UNISTD_H
-                           # include <unistd.h> /* defines ioctl() on Solaris */
-                           #endif
                          ]],
                          [[int foo = ioctl (0, FIONREAD, &foo);]])],
         [emacs_cv_usable_FIONREAD=yes],
@@ -7316,6 +7301,22 @@ else
 fi
 AC_SUBST([LIBXMENU])
 
+AC_CACHE_CHECK([for struct alignment],
+  [emacs_cv_struct_alignment],
+  [AC_COMPILE_IFELSE(
+     [AC_LANG_PROGRAM([[#include <stddef.h>
+                       struct s { char c; } __attribute__ ((aligned (8)));
+                       struct t { char c; struct s s; };
+                       char verify[offsetof (struct t, s) == 8 ? 1 : -1];
+                     ]])],
+     [emacs_cv_struct_alignment=yes],
+     [emacs_cv_struct_alignment=no])])
+if test "$emacs_cv_struct_alignment" = yes; then
+  AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], [1],
+    [Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the
+     structure to an N-byte boundary.])
+fi
+
 AC_C_RESTRICT
 AC_C_TYPEOF
 
@@ -7347,10 +7348,21 @@ AC_SUBST([RALLOC_OBJ])
 
 if test "$opsys" = "cygwin"; then
   CYGWIN_OBJ="cygw32.o"
+  ## Cygwin differs because of its unexec().
+  PRE_ALLOC_OBJ=
+  POST_ALLOC_OBJ=lastfile.o
+elif test "$opsys" = "mingw32"; then
+  CYGWIN_OBJ=
+  PRE_ALLOC_OBJ=
+  POST_ALLOC_OBJ=lastfile.o
 else
   CYGWIN_OBJ=
+  PRE_ALLOC_OBJ=lastfile.o
+  POST_ALLOC_OBJ=
 fi
 AC_SUBST([CYGWIN_OBJ])
+AC_SUBST([PRE_ALLOC_OBJ])
+AC_SUBST([POST_ALLOC_OBJ])
 
 dnl Call this 'FORTIFY_SOUR' so that it sorts before the 'FORTIFY_SOURCE'
 dnl verbatim defined above.  The tricky name is apropos, as this hack
@@ -7466,6 +7478,9 @@ case "$opsys" in
    ## about 14 to about 34. Setting it high gets us plenty of slop and
    ## only costs about 1.5K of wasted binary space.
    headerpad_extra=1000
+   if test "$with_unexec" = yes; then
+     LD_SWITCH_SYSTEM_TEMACS="-fno-pie $LD_SWITCH_SYSTEM_TEMACS -Xlinker -headerpad -Xlinker $headerpad_extra"
+   fi
 
    ## This is here because src/Makefile.in did some extra fiddling around
    ## with LD_SWITCH_SYSTEM.  It seems cleaner to put this in
@@ -7491,11 +7506,49 @@ case "$opsys" in
      x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x400000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
      *) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
    esac
+   ## If they want unexec, disable Windows ASLR for the Emacs binary
+   if test "$with_dumping" = "unexec"; then
+      case "$canonical" in
+        x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -Wl,-disable-dynamicbase -Wl,-disable-high-entropy-va -Wl,-default-image-base-low" ;;
+        *) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -Wl,-disable-dynamicbase" ;;
+      esac
+   fi
    ;;
 
   *) LD_SWITCH_SYSTEM_TEMACS= ;;
 esac
 
+# -no-pie or -nopie fixes a temacs segfault on Gentoo, OpenBSD,
+# Ubuntu, and other systems with "hardened" GCC configurations for
+# some reason (Bug#18784).  We don't know why this works, but not
+# segfaulting is better than segfaulting.  Use ac_c_werror_flag=yes
+# when trying the option, otherwise clang keeps warning that it does
+# not understand it, and pre-4.6 GCC has a similar problem
+# (Bug#20338).  Prefer -no-pie to -nopie, as -no-pie is the
+# spelling used by GCC 6.1.0 and later (Bug#24682).
+AC_CACHE_CHECK(
+  [for $CC option to disable position independent executables],
+  [emacs_cv_prog_cc_no_pie],
+  [if test $with_unexec = no; then
+     emacs_cv_prog_cc_no_pie='not needed'
+   else
+     emacs_save_c_werror_flag=$ac_c_werror_flag
+     emacs_save_LDFLAGS=$LDFLAGS
+     ac_c_werror_flag=yes
+     for emacs_cv_prog_cc_no_pie in -no-pie -nopie no; do
+       test $emacs_cv_prog_cc_no_pie = no && break
+       LDFLAGS="$emacs_save_LDFLAGS $emacs_cv_prog_cc_no_pie"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [break])
+     done
+     ac_c_werror_flag=$emacs_save_c_werror_flag
+     LDFLAGS=$emacs_save_LDFLAGS
+   fi])
+case $emacs_cv_prog_cc_no_pie in
+  -*)
+    LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS $emacs_cv_prog_cc_no_pie"
+    ;;
+esac
+
 if test x$ac_enable_profiling != x ; then
   case $opsys in
     *freebsd | gnu-linux) ;;
@@ -7523,6 +7576,35 @@ fi
 
 AC_SUBST([WINDOW_SYSTEM_OBJ])
 
+# Some systems have MB_CUR_MAX defined to a call to
+# __ctype_get_mb_cur_max, but do not have __ctype_get_mb_cur_max in
+# libc.  Check for that situation and define MB_CUR_MAX to something
+# sane.
+
+AC_CHECK_FUNC([__ctype_get_mb_cur_max])
+
+AC_CACHE_CHECK([whether MB_CUR_MAX is defined to function that won't link],
+  [emacs_cv_broken_mb_cur_max],
+  [AC_EGREP_CPP(__ctype_get_mb_cur_max, [
+#include <stdlib.h>
+#ifndef MB_CUR_MAX
+#define MB_CUR_MAX -1
+#endif
+static int foo = MB_CUR_MAX;
+], [AS_IF([test "$ac_cv_func___ctype_get_mb_cur_max" = "yes"],
+     [emacs_cv_broken_mb_cur_max=no],
+     [emacs_cv_broken_mb_cur_max=yes])],
+  [emacs_cv_broken_mb_cur_max=no])])
+
+AS_IF([test "$emacs_cv_broken_mb_cur_max" = "yes"],
+ # Define this to 4, which is right for Android.
+ [AS_CASE([$opsys], [android],
+   [AC_DEFINE([REPLACEMENT_MB_CUR_MAX], [4],
+      [Define to MB_CUR_MAX if stdlib.h is broken.])],
+   [AC_MSG_ERROR([MB_CUR_MAX does not work on your system.
+Please modify configure.ac to set an appropriate value, then
+send your change to bug-gnu-emacs@gnu.org])])])
+
 AH_TOP([/* GNU Emacs site configuration template file.
 
 Copyright (C) 1988-2025 Free Software Foundation, Inc.
@@ -7604,12 +7686,12 @@ for opt in ACL BE_APP CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTING
  HARFBUZZ IMAGEMAGICK JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 \
  M17N_FLT MODULES NATIVE_COMP NOTIFY NS OLDXMENU PDUMPER PGTK PNG RSVG SECCOMP \
  SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER \
- UNEXEC WEBP X11 XAW3D XDBE XFT XIM XINERAMA XINPUT2 XPM XRANDR XWIDGETS \
X_TOOLKIT ZLIB; do
+ UNEXEC WEBP X11 XAW3D XDBE XFT XIM XINPUT2 XPM XWIDGETS X_TOOLKIT \
+ ZLIB; do
 
     case $opt in
       PDUMPER) val=${with_pdumper} ;;
-      UNEXEC) val=no ;;
+      UNEXEC) val=${with_unexec} ;;
       GLIB) val=${emacs_cv_links_glib} ;;
       NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
       TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;;
@@ -7685,6 +7767,7 @@ AS_ECHO(["  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D
   Does Emacs support Xwidgets?                            ${HAVE_XWIDGETS}
   Does Emacs have threading support in lisp?              ${threads_enabled}
   Does Emacs support the portable dumper?                 ${with_pdumper}
+  Does Emacs support legacy unexec dumping?               ${with_unexec}
   Which dumping strategy does Emacs use?                  ${with_dumping}
   Does Emacs have native lisp compiler?                   ${HAVE_NATIVE_COMP}
   Does Emacs use version 2 of the X Input Extension?      ${HAVE_XINPUT2}
@@ -7767,6 +7850,7 @@ if test -f "$srcdir/$opt_makefile.in"; then
   dnl Again, it's best not to use a variable.  Though you can add
   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
   ARCH_INDEPENDENT_CONFIG_FILES([test/Makefile])
+  ARCH_INDEPENDENT_CONFIG_FILES([test/manual/noverlay/Makefile])
 fi
 opt_makefile=test/infra/Makefile
 if test -f "$srcdir/$opt_makefile.in"; then
@@ -7782,9 +7866,10 @@ fi
 
 dnl The admin/ directory used to be excluded from tarfiles.
 if test -d $srcdir/admin; then
-  SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/charsets/Makefile admin/unidata/Makefile"
+  SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/charsets/Makefile admin/unidata/Makefile admin/grammars/Makefile"
   ARCH_INDEPENDENT_CONFIG_FILES([admin/charsets/Makefile])
   ARCH_INDEPENDENT_CONFIG_FILES([admin/unidata/Makefile])
+  ARCH_INDEPENDENT_CONFIG_FILES([admin/grammars/Makefile])
 fi                              dnl -d admin
 
 
@@ -7932,11 +8017,12 @@ you can continue to support by using '$0 --with-pop'.])
   esac
 fi
 
-if test "${HAVE_XFT}" = yes && test "$is_xft_version_outdated" = "yes"; then
-  AC_MSG_WARN([This configuration uses a version of libXft earlier than 2.3.6,
-    which is impacted by a number of rendering issues up to and including
-    crashes.  Please consider using Cairo graphics instead (they are
-    auto-detected if the relevant development headers are installed).])
+if test "${HAVE_XFT}" = yes; then
+  AC_MSG_WARN([This configuration uses libXft, which has a number of
+    font rendering issues, and is being considered for removal in the
+    next release of Emacs.  Please consider using Cairo graphics +
+    HarfBuzz text shaping instead (they are auto-detected if the
+    relevant development headers are installed).])
 fi
 
 if test "${HAVE_CAIRO}" = "yes" && test "${HAVE_HARFBUZZ}" = no; then
index ef825e267882e933a3fc27cfcd40e245c7361152..c66c7276d8cedc420fd6e81fb7f48071c7a09450 100644 (file)
@@ -22,10 +22,10 @@ dnl  You should have received a copy of the GNU General Public License
 dnl  along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 
 AC_PREREQ([2.65])
-AC_INIT([libexec], [31.0.50], [bug-gnu-emacs@gnu.org], [],
+AC_INIT([libexec], [30.1.90], [bug-gnu-emacs@gnu.org], [],
   [https://www.gnu.org/software/emacs/])
 
-AH_TOP([/* Copyright (C) 2025 Free Software Foundation, Inc.
+AH_TOP([/* Copyright (C) 2024-2025 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -42,6 +42,11 @@ General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>. */])
 
+AC_ARG_WITH([reentrancy],
+  [AS_HELP_STRING([--with-reentrancy],
+    [Generate library which can be used within a signal handler.])],
+  [AC_DEFINE([REENTRANT], [1])])
+
 AC_USE_SYSTEM_EXTENSIONS
 AC_PROG_CC
 AC_PROG_CPP
@@ -69,9 +74,9 @@ AC_CHECK_FUNC([process_vm_readv],
       ]])])])
 AC_CHECK_HEADERS([sys/param.h sys/uio.h])
 AC_CHECK_MEMBERS([siginfo_t.si_syscall], [], [],
-[[
+  [[
 #include <signal.h>
-]])
+  ]])
 
 AH_BOTTOM([
 #ifdef HAVE_STDBOOL_H
@@ -115,7 +120,6 @@ AH_TEMPLATE([SYSCALL_ARG2_REG], [Define to register holding arg2 to system calls
 AH_TEMPLATE([SYSCALL_ARG3_REG], [Define to register holding arg3 to system calls.])
 AH_TEMPLATE([SYSCALL_RET_REG], [Define to register holding value of system calls.])
 AH_TEMPLATE([STACK_POINTER], [Define to register holding the stack pointer.])
-AH_TEMPLATE([PROGRAM_COUNTER], [Define to register holding the program counter.])
 AH_TEMPLATE([EXEC_SYSCALL], [Define to number of the `exec' system call.])
 AH_TEMPLATE([USER_WORD], [Define to word type used by tracees.])
 AH_TEMPLATE([USER_SWORD], [Define to signed word type used by tracees.])
@@ -130,8 +134,7 @@ AH_TEMPLATE([READLINK_SYSCALL], [Define to number of the `readlink' system call.
 AH_TEMPLATE([READLINKAT_SYSCALL], [Define to number of the `readlinkat' system call.])
 AH_TEMPLATE([OPEN_SYSCALL], [Define to number of the `open' system call.])
 AH_TEMPLATE([OPENAT_SYSCALL], [Define to number of the `openat' system call.])
-AH_TEMPLATE([HAVE_SECCOMP], [Define to 1 if secure computing filters are available
-to accelerate interception of system calls.])
+AH_TEMPLATE([REENTRANT], [Define to 1 if the library is used within a signal handler.])
 
 AC_CANONICAL_HOST
 
@@ -213,11 +216,11 @@ AC_CACHE_CHECK([whether MIPS NABI calling convention is used],
   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #include <sgidefs.h>
 ]], [[
-#if !defined __mips64__ && !defined __LP64__
+#ifndef  __mips64__
 #if _MIPS_SIM == _ABIO32
 OABI in use.
 #endif /* _MIPS_SIM == _ABIO32 */
-#endif /* !__mips64__ && !defined __LP64__ */
+#endif /* !__mips64__ */
 ]])], [exec_cv_mips_nabi=yes],
   [exec_cv_mips_nabi=no])])
 
@@ -247,7 +250,6 @@ AS_CASE([$host], [x86_64-*linux*],
      AC_DEFINE([SYSCALL_ARG2_REG], [rdx])
      AC_DEFINE([SYSCALL_ARG3_REG], [r10])
      AC_DEFINE([STACK_POINTER], [rsp])
-     AC_DEFINE([PROGRAM_COUNTER], [rip])
      AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
      AC_DEFINE([USER_WORD], [uintptr_t])
      AC_DEFINE([USER_SWORD], [intptr_t])
@@ -281,7 +283,6 @@ AS_CASE([$host], [x86_64-*linux*],
      AC_DEFINE([SYSCALL_ARG2_REG], [edx])
      AC_DEFINE([SYSCALL_ARG3_REG], [esi])
      AC_DEFINE([STACK_POINTER], [esp])
-     AC_DEFINE([PROGRAM_COUNTER], [eip])
      AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
      AC_DEFINE([USER_WORD], [uintptr_t])
      AC_DEFINE([USER_SWORD], [intptr_t])
@@ -313,7 +314,6 @@ AS_CASE([$host], [x86_64-*linux*],
      AC_DEFINE([SYSCALL_ARG2_REG], [[regs[2]]])
      AC_DEFINE([SYSCALL_ARG3_REG], [[regs[3]]])
      AC_DEFINE([STACK_POINTER], [sp])
-     AC_DEFINE([PROGRAM_COUNTER], [pc])
      AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
      AC_DEFINE([USER_WORD], [uintptr_t])
      AC_DEFINE([USER_SWORD], [intptr_t])
@@ -346,7 +346,6 @@ AS_CASE([$host], [x86_64-*linux*],
      AC_DEFINE([SYSCALL_ARG2_REG], [[uregs[2]]])
      AC_DEFINE([SYSCALL_ARG3_REG], [[uregs[3]]])
      AC_DEFINE([STACK_POINTER], [[uregs[13]]])
-     AC_DEFINE([PROGRAM_COUNTER], [[uregs[15]]])
      AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
      AC_DEFINE([USER_WORD], [uintptr_t])
      AC_DEFINE([USER_SWORD], [intptr_t])
@@ -372,7 +371,6 @@ AS_CASE([$host], [x86_64-*linux*],
        AC_DEFINE([SYSCALL_ARG2_REG], [[uregs[2]]])
        AC_DEFINE([SYSCALL_ARG3_REG], [[uregs[3]]])
        AC_DEFINE([STACK_POINTER], [[uregs[13]]])
-       AC_DEFINE([STACK_POINTER], [[uregs[15]]])
        AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
        AC_DEFINE([USER_WORD], [uintptr_t])
        AC_DEFINE([USER_SWORD], [intptr_t])
@@ -404,7 +402,6 @@ AS_CASE([$host], [x86_64-*linux*],
    AC_DEFINE([SYSCALL_ARG2_REG], [[gregs[4]]]) # a2
    AC_DEFINE([SYSCALL_ARG3_REG], [[gregs[5]]]) # a3
    AC_DEFINE([STACK_POINTER], [[gregs[29]]]) # sp
-   AC_DEFINE([PROGRAM_COUNTER], [[cp0_epc]]) # pc
    AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
    AC_DEFINE([USER_WORD], [uintptr_t])
    AC_DEFINE([USER_SWORD], [intptr_t])
@@ -435,7 +432,6 @@ AS_CASE([$host], [x86_64-*linux*],
    AC_DEFINE([SYSCALL_ARG2_REG], [[gregs[4]]]) # a2
    AC_DEFINE([SYSCALL_ARG3_REG], [[gregs[5]]]) # a3
    AC_DEFINE([STACK_POINTER], [[gregs[29]]]) # sp
-   AC_DEFINE([PROGRAM_COUNTER], [[cp0_epc]]) # pc
    AC_DEFINE([EXEC_SYSCALL], [__NR_execve])
    AC_DEFINE([USER_WORD], [uintptr_t])
    AC_DEFINE([USER_SWORD], [intptr_t])
@@ -455,12 +451,12 @@ AS_CASE([$host], [x86_64-*linux*],
       .section text
       .global __start
 __start:
-       li      \$t0, 0
-       li      \$t1, 0
-       daddi   \$t0, \$t1, 1
-       daddi   \$t0, \$t1, -1
-       daddi   \$t0, -1
-       daddi   \$t0, 1
+       li      $t0, 0
+       li      $t1, 0
+       daddi   $t0, $t1, 1
+       daddi   $t0, $t1, -1
+       daddi   $t0, -1
+       daddi   $t0, 1
 
 _ACEOF
       $AS $ASFLAGS conftest.s -o conftest.$OBJEXT \
@@ -470,8 +466,7 @@ _ACEOF
    AS_IF([test "x$exec_cv_as_daddi" != "xyes"],
      [DADDI_BROKEN=yes])
    exec_CHECK_LINUX_CLONE3
-   AC_DEFINE([MIPS_NABI], [1],
-    [Define to 1 if MIPS NABI calling convention is being used.])
+   exec_CHECK_MIPS_NABI
    LOADERFLAGS="$LOADERFLAGS $LDPREFIX-Ttext=0x3e00000000"
    is_mips=yes
    exec_loader=loader-mips64el.s], [*],
@@ -485,12 +480,6 @@ AC_ARG_VAR([LOADERFLAGS], [Flags used to link the loader.])
 AC_ARG_VAR([ARFLAGS], [Flags for the archiver.])
 AC_ARG_VAR([ASFLAGS], [Flags for the assembler.])
 
-# Search for seccomp headers and declarations.
-AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h],
-  [AC_CHECK_DECLS([SECCOMP_SET_MODE_FILTER, SECCOMP_FILTER_FLAG_TSYNC, SECCOMP_RET_TRACE],
-    [AC_DEFINE([HAVE_SECCOMP], [1])], [],
-    [[#include <linux/seccomp.h>]])])
-
 # Make the assembler optimize for code size.  Don't do this on MIPS,
 # as the assembler code manages branch delays manually.
 
@@ -558,9 +547,7 @@ FIND_DELETE=$exec_cv_find_delete
 AC_SUBST([FIND_DELETE])
 
 AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_FILES([Makefile])
-AS_IF([test "x$is_mips" = xyes],
-  [AC_CONFIG_FILES([config-mips.m4])])
+AC_CONFIG_FILES([Makefile config-mips.m4])
 
 AC_SUBST([AUTO_DEPEND])
 AC_SUBST([LOADERFLAGS])
@@ -569,6 +556,5 @@ AC_SUBST([ASFLAGS])
 AC_SUBST([exec_loader])
 AC_SUBST([MIPS_N32])
 AC_SUBST([OBJS])
-AC_SUBST([is_mips])
 
 AC_OUTPUT
index ceec7a97b98ef1d43a91547ec7de972d55a5832a..711d34cff301a741bc85b6b963a2a964faa80a47 100644 (file)
@@ -207,7 +207,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>. -->
   <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
 
   <uses-sdk android:minSdkVersion="@ANDROID_MIN_SDK@"
-           android:targetSdkVersion="35"/>
+           android:targetSdkVersion="34"/>
 
   <application android:name="org.gnu.emacs.EmacsApplication"
               android:label="Emacs"
@@ -350,6 +350,6 @@ repositories require an incrementing numeric version code to detect
 upgrades, which is provided here and is altered by admin/admin.el.
 Refer to e.g. https://forum.f-droid.org/t/emacs-packaging/30424/25.
 
-Version-code: 310050000
+Version-code: 300190000
 
 -->
index cb44aea463460a5332209020026dda0ad6c480e8..f9b5af84e25733e869503941ec0bc195be9d796d 100644 (file)
@@ -37,6 +37,7 @@
 /^#undef HAVE_STRUCT_UTIMBUF *$/s/^.*$/#define HAVE_STRUCT_UTIMBUF 1/
 /^#undef LOCALTIME_CACHE *$/s/^.*$/#define LOCALTIME_CACHE 1/
 /^#undef HAVE_TZSET *$/s/^.*$/#define HAVE_TZSET 1/
+/^#undef HAVE_UNEXEC *$/s/^.*$/#define HAVE_UNEXEC 1/
 /^#undef HAVE_RINT *$/s/^.*$/#define HAVE_RINT 1/
 /^#undef HAVE_C99_STRTOLD *$/s/^.*$/#define HAVE_C99_STRTOLD 1/
 /^#undef HAVE_DIFFTIME *$/s/^.*$/#define HAVE_DIFFTIME 1/
@@ -66,7 +67,7 @@
 /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
 /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/
 /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
-/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "31.0.50"/
+/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.1.90"/
 /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
 /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
 /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/
@@ -137,12 +138,8 @@ s/^#undef HAVE_DECL_PUTCHAR_UNLOCKED *$/#define HAVE_DECL_PUTCHAR_UNLOCKED 0/
 s/^#undef HAVE_DECL_PUTC_UNLOCKED *$/#define HAVE_DECL_PUTC_UNLOCKED 0/
 s/^#undef HAVE_DECL_STRTOLL *$/#define HAVE_DECL_STRTOLL 1/
 s/^#undef HAVE_DECL_STRTOIMAX *$/#define HAVE_DECL_STRTOIMAX 1/
-s/^#undef HAVE_PDUMPER *$/#define HAVE_PDUMPER 1/
 s/^#undef HAVE_STRTOLL *$/#define HAVE_STRTOLL 1/
 s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/
-/^#undef ALIGNOF_INT *$/s/^.*$/#define ALIGNOF_INT 4/
-/^#undef ALIGNOF_LONG *$/s/^.*$/#define ALIGNOF_LONG 4/
-/^#undef ALIGNOF_LONG_LONG *$/s/^.*$/#define ALIGNOF_LONG_LONG 4/
 /^#undef HAVE_STRUCT_DIRENT_D_TYPE *$/c\
 #if __DJGPP__ + (__DJGPP_MINOR__ >= 5) >= 3\
 #define HAVE_STRUCT_DIRENT_D_TYPE 1/\
index 800e851a22d48ce1a960ff0ee317070207b59a11..bdd726f038d902cd5a05fcdb4880e38cf6d557e8 100644 (file)
@@ -1,7 +1,7 @@
 Copyright (C) 2001-2025 Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
-               Emacs version 31.0.50 for MS-Windows
+               Emacs version 30.1.90 for MS-Windows
 
   This README file describes how to set up and run a precompiled
   distribution of the latest version of GNU Emacs for MS-Windows.  You
@@ -104,9 +104,12 @@ See the end of the file for license conditions.
   + addpm.exe - A basic installer that adds Emacs to "Start" menus and
     adds Emacs-related entries to the Windows Registry.
 
-  + etags.exe - Tool for generating tag files.  See the
+  + ctags.exe, etags.exe - Tools for generating tag files.  See the
     `Tags' node of the Emacs manual.
 
+  + ebrowse.exe - A tool for generating C++ browse information.  See the
+    `Ebrowse' manual.
+
   Several helper programs are in a version-specific subdirectory of
   the libexec directory: