CFLAGS_signal.o += -Wframe-larger-than=4096
+CFLAGS_main.o += -Wno-frame-larger-than
+
obj-$(CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA) += elf_aux.o
USER_OBJS := $(user-objs-y) elf_aux.o execvp.o file.o helper.o irq.o \
#include <errno.h>
#include <signal.h>
#include <string.h>
+#include <limits.h>
#include <sys/resource.h>
#include <sys/personality.h>
#include <as-layout.h>
/* Disable randomization and re-exec if it was changed successfully */
ret = personality(PER_LINUX | ADDR_NO_RANDOMIZE);
if (ret >= 0 && (ret & (PER_LINUX | ADDR_NO_RANDOMIZE)) !=
- (PER_LINUX | ADDR_NO_RANDOMIZE))
- execve("/proc/self/exe", argv, envp);
+ (PER_LINUX | ADDR_NO_RANDOMIZE)) {
+ char buf[PATH_MAX] = {};
+ ssize_t ret;
+
+ ret = readlink("/proc/self/exe", buf, sizeof(buf));
+ if (ret < 0 || ret >= sizeof(buf)) {
+ perror("readlink failure");
+ exit(1);
+ }
+ execve(buf, argv, envp);
+ }
set_stklim();