[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] scratch/gnus-cloud 4eae8f1 20/28: Merge branch 'master' of
From: |
Teodor Zlatanov |
Subject: |
[Emacs-diffs] scratch/gnus-cloud 4eae8f1 20/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs |
Date: |
Mon, 18 Jul 2016 14:04:14 +0000 (UTC) |
branch: scratch/gnus-cloud
commit 4eae8f1f0860de6efbd516e1b40e61006815775a
Merge: 1aa29cc e95b023
Author: Ted Zlatanov <address@hidden>
Commit: Ted Zlatanov <address@hidden>
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
---
admin/CPP-DEFINES | 2 +-
configure.ac | 20 +++++++++++---------
src/emacs.c | 30 ++++++++++++++----------------
3 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index c7ec8ce..5e6146b 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -233,7 +233,7 @@ HAVE_NET_IF_DL_H
HAVE_NET_IF_H
HAVE_NLIST_H
HAVE_OTF_GET_VARIATION_GLYPHS
-HAVE_PERSONALITY_LINUX32
+HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
HAVE_PNG
HAVE_PNG_H
HAVE_POSIX_MEMALIGN
diff --git a/configure.ac b/configure.ac
index dd1af5b..c94ecb6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1643,15 +1643,17 @@ AC_CHECK_HEADERS_ONCE(
sys/resource.h
sys/utsname.h pwd.h utmp.h util.h)
-AC_MSG_CHECKING(if personality LINUX32 can be set)
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]],
[[personality (PER_LINUX32)]])],
- emacs_cv_personality_linux32=yes,
- emacs_cv_personality_linux32=no)
-AC_MSG_RESULT($emacs_cv_personality_linux32)
-
-if test $emacs_cv_personality_linux32 = yes; then
- AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
- [Define to 1 if personality LINUX32 can be set.])
+AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
+ [emacs_cv_personality_addr_no_randomize],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <sys/personality.h>]],
+ [[personality (personality (0xffffffff)
+ | ADDR_NO_RANDOMIZE)]])],
+ [emacs_cv_personality_addr_no_randomize=yes],
+ [emacs_cv_personality_addr_no_randomize=no])])
+if test $emacs_cv_personality_addr_no_randomize = yes; then
+ AC_DEFINE([HAVE_PERSONALITY_ADDR_NO_RANDOMIZE], [1],
+ [Define to 1 if personality flag ADDR_NO_RANDOMIZE exists.])
fi
# Note that Solaris has sys/sysinfo.h which defines struct
diff --git a/src/emacs.c b/src/emacs.c
index bb85733..b221984 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -112,7 +112,7 @@ extern void moncontrol (int mode);
#include <sys/resource.h>
#endif
-#ifdef HAVE_PERSONALITY_LINUX32
+#ifdef HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
#include <sys/personality.h>
#endif
@@ -796,24 +796,22 @@ main (int argc, char **argv)
dumping = !initialized && (strcmp (argv[argc - 1], "dump") == 0
|| strcmp (argv[argc - 1], "bootstrap") == 0);
-#ifdef HAVE_PERSONALITY_LINUX32
- if (dumping && ! getenv ("EMACS_HEAP_EXEC"))
+#ifdef HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
+ if (dumping)
{
- /* Set this so we only do this once. */
- xputenv ("EMACS_HEAP_EXEC=true");
-
- /* A flag to turn off address randomization which is introduced
- in linux kernel shipped with fedora core 4 */
-#define ADD_NO_RANDOMIZE 0x0040000
- personality (PER_LINUX32 | ADD_NO_RANDOMIZE);
-#undef ADD_NO_RANDOMIZE
-
- execvp (argv[0], argv);
+ int pers = personality (0xffffffff);
+ if (! (pers & ADDR_NO_RANDOMIZE)
+ && 0 <= personality (pers | ADDR_NO_RANDOMIZE))
+ {
+ /* Address randomization was enabled, but is now disabled.
+ Re-execute Emacs to get a clean slate. */
+ execvp (argv[0], argv);
- /* If the exec fails, try to dump anyway. */
- emacs_perror (argv[0]);
+ /* If the exec fails, warn and then try without a clean slate. */
+ perror (argv[0]);
+ }
}
-#endif /* HAVE_PERSONALITY_LINUX32 */
+#endif
#if defined (HAVE_SETRLIMIT) && defined (RLIMIT_STACK) && !defined (CYGWIN)
/* Extend the stack space available. Don't do that if dumping,
- [Emacs-diffs] scratch/gnus-cloud 9af4ba0 08/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, (continued)
- [Emacs-diffs] scratch/gnus-cloud 9af4ba0 08/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud e582450 24/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 82fe6fa 17/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 4bc13b7 25/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 0c9487a 12/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud e6381fa 13/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 8d67982 01/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud ae18a15 21/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 73e10a8 15/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud cbd54d0 28/28: Minor gnus-cloud UI improvements., Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 4eae8f1 20/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs,
Teodor Zlatanov <=
- [Emacs-diffs] scratch/gnus-cloud aba6d42 09/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud bef171c 26/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud f5a4b91 05/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18
- [Emacs-diffs] scratch/gnus-cloud 4a92b20 23/28: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs, Teodor Zlatanov, 2016/07/18