23 #ifdef HAVE_PERSONALITY
24 # include <sys/personality.h>
25 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
26 # define ADDR_NO_RANDOMIZE 0x0040000
30 #ifdef HAVE_PERSONALITY
37 restore_personality (
void *arg)
39 int personality_orig = (int) (uintptr_t)
arg;
42 personality (personality_orig);
44 warning (
_(
"Error restoring address space randomization: %s"),
58 #ifdef HAVE_PERSONALITY
59 if (personality_set != 0)
61 (
void *) (uintptr_t) personality_orig);
72 int personality_orig = 0;
73 int personality_set = 0;
75 #ifdef HAVE_PERSONALITY
76 if (disable_randomization)
79 personality_orig = personality (0xffffffff);
80 if (
errno == 0 && !(personality_orig & ADDR_NO_RANDOMIZE))
83 personality (personality_orig | ADDR_NO_RANDOMIZE);
85 if (
errno != 0 || (personality_set
86 && !(personality (0xffffffff) & ADDR_NO_RANDOMIZE)))
87 warning (
_(
"Error disabling address space randomization: %s"),
void warning(const char *fmt,...)
void null_cleanup(void *arg)
int disable_randomization
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
struct cleanup * maybe_disable_address_space_randomization(int disable_randomization)
char * safe_strerror(int)
static struct cleanup * make_disable_asr_cleanup(int personality_set, int personality_orig)