From: André Hentschel Subject: loader: More generic pre_exec for Linux (try 2) Message-Id: <54A1CF95.5020306@dawncrow.de> Date: Mon, 29 Dec 2014 23:03:01 +0100 --- loader/main.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/loader/main.c b/loader/main.c index ce21173..a5b9ddb 100644 --- a/loader/main.c +++ b/loader/main.c @@ -109,7 +109,15 @@ static void check_command_line( int argc, char *argv[] ) } -#if defined(__linux__) && defined(__i386__) +#if defined(__linux__) + +#if defined(__i386__) || defined(__x86_64__) + #define HAS_PRELOADER 1 +#else + #define HAS_PRELOADER 0 +#endif /* defined(__i386__) || defined(__x86_64__) */ + +#if defined(__i386__) /* separate thread to check for NPTL and TLS features */ static void *needs_pthread( void *arg ) @@ -141,6 +149,14 @@ static void check_threading(void) if (!ret) exit(1); } +#else + +static void check_threading(void) +{ +} + +#endif /* defined(__i386__) */ + static void check_vmsplit( void *stack ) { if (stack < (void *)0x80000000) @@ -171,14 +187,8 @@ static int pre_exec(void) check_threading(); check_vmsplit( &temp ); set_max_limit( RLIMIT_AS ); - return 1; -} -#elif defined(__linux__) && defined(__x86_64__) - -static int pre_exec(void) -{ - return 1; /* we have a preloader on x86-64 */ + return HAS_PRELOADER; } #elif (defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__DragonFly__))