--- emacs-orig/configure.in +++ emacs/configure.in @@ -713,6 +713,8 @@ AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin) dnl Don't use GZIP, which is used by gzip for additional parameters. AC_PATH_PROG(GZIP_PROG, gzip) +AC_PATH_PROG(PAXCTL, paxctl,, + [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin]) ## Need makeinfo >= 4.7 (?) to build the manuals. --- emacs-orig/src/Makefile.in +++ emacs/src/Makefile.in @@ -113,6 +113,12 @@ ## $LDFLAGS or empty if NS_IMPL_GNUSTEP (for some reason). TEMACS_LDFLAGS2 = @TEMACS_LDFLAGS2@ +## If available, the full path to the paxctl program. +## On grsecurity/PaX systems, unexec will fail because memory regions +## of executables are randomized. This can be prevented by disabling +## RANDMMAP of temacs with "paxctl -r". See bug#11398. +PAXCTL = @PAXCTL@ + ## Some systems define this to request special libraries. LIBS_SYSTEM=@LIBS_SYSTEM@ @@ -403,6 +409,7 @@ -f list-load-path-shadows || true; \ else \ LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \ + test -z "$(PAXCTL)" || $(PAXCTL) -zex emacs$(EXEEXT); \ ln -f emacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \ ./emacs -batch -f list-load-path-shadows || true; \ fi @@ -450,6 +457,8 @@ temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) $(lib)/libgnu.a $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \ -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) + test "$(CANNOT_DUMP)" = "yes" || \ + test -z "$(PAXCTL)" || $(PAXCTL) -r temacs$(EXEEXT) ## The following oldxmenu-related rules are only (possibly) used if ## HAVE_X11 && !USE_GTK, but there is no harm in always defining them @@ -597,6 +606,7 @@ ln -f temacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \ else \ $(RUN_TEMACS) --batch --load loadup bootstrap || exit 1; \ + test -z "$(PAXCTL)" || $(PAXCTL) -zex emacs$(EXEEXT); \ mv -f emacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \ fi @: Compile some files earlier to speed up further compilation.