diff options
| author | Paul Eggert | 2016-12-21 09:52:28 -0800 |
|---|---|---|
| committer | Paul Eggert | 2016-12-21 09:57:05 -0800 |
| commit | cf6ce9a1fe320ebe5b238af5f7af9416ac954855 (patch) | |
| tree | 492441277954ab7829df6ce9920986ebb9855f6e /src | |
| parent | 8661313efd5fd5b0a27fe82f276a1ff862646424 (diff) | |
| download | emacs-cf6ce9a1fe320ebe5b238af5f7af9416ac954855.tar.gz emacs-cf6ce9a1fe320ebe5b238af5f7af9416ac954855.zip | |
Port dumping better to WSL
Problem reported by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00822.html
* src/sysdep.c (disable_address_randomization):
Detect buggy platforms where 'personality' always returns 0.
Diffstat (limited to 'src')
| -rw-r--r-- | src/sysdep.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index 96c9e538409..86d420f66c4 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -144,11 +144,16 @@ static const int baud_convert[] = | |||
| 144 | bool | 144 | bool |
| 145 | disable_address_randomization (void) | 145 | disable_address_randomization (void) |
| 146 | { | 146 | { |
| 147 | bool disabled = false; | ||
| 148 | int pers = personality (0xffffffff); | 147 | int pers = personality (0xffffffff); |
| 149 | disabled = (! (pers & ADDR_NO_RANDOMIZE) | 148 | if (pers < 0) |
| 150 | && 0 <= personality (pers | ADDR_NO_RANDOMIZE)); | 149 | return false; |
| 151 | return disabled; | 150 | int desired_pers = pers | ADDR_NO_RANDOMIZE; |
| 151 | |||
| 152 | /* Call 'personality' twice, to detect buggy platforms like WSL | ||
| 153 | where 'personality' always returns 0. */ | ||
| 154 | return (pers != desired_pers | ||
| 155 | && personality (desired_pers) == pers | ||
| 156 | && personality (0xffffffff) == desired_pers); | ||
| 152 | } | 157 | } |
| 153 | #endif | 158 | #endif |
| 154 | 159 | ||