2011/7/14 Petr Salinger <petr.salin...@seznam.cz>: > > It looks like a collision, namely between > > AT_STACKPROT x AT_SECURE
Good guess Petr, it is indeed AT_SECURE. Here's a possible patch to fix this. I haven't tested it yet. Does this look like the right approach? I also wonder if we should hunt down the other Linux-specific ELF notes in that file. -- Robert Millan
--- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -237,11 +237,13 @@ gid ^= av->a_un.a_val; seen |= 8; break; +#ifdef AT_SECURE case AT_SECURE: seen = -1; __libc_enable_secure = av->a_un.a_val; __libc_enable_secure_decided = 1; break; +#endif case AT_RANDOM: _dl_random = (void *) av->a_un.a_val; break; --- a/elf/dl-sysdep.c +++ b/elf/dl-sysdep.c @@ -147,12 +147,14 @@ gid ^= av->a_un.a_val; break; #endif +#ifdef AT_SECURE case AT_SECURE: #ifndef HAVE_AUX_SECURE seen = -1; #endif INTUSE(__libc_enable_secure) = av->a_un.a_val; break; +#endif case AT_PLATFORM: GLRO(dl_platform) = (void *) av->a_un.a_val; break; @@ -296,7 +298,9 @@ [AT_ICACHEBSIZE - 2] = { "ICACHEBSIZE: 0x", hex }, [AT_UCACHEBSIZE - 2] = { "UCACHEBSIZE: 0x", hex }, [AT_IGNOREPPC - 2] = { "IGNOREPPC", ignore }, +#ifdef AT_SECURE [AT_SECURE - 2] = { "SECURE: ", dec }, +#endif [AT_BASE_PLATFORM - 2] = { "BASE_PLATFORM:", str }, [AT_SYSINFO - 2] = { "SYSINFO: 0x", hex }, [AT_SYSINFO_EHDR - 2] = { "SYSINFO_EHDR: 0x", hex }, --- a/elf/elf.h +++ b/elf/elf.h @@ -981,7 +981,9 @@ interpretation of the AUXV. Must be > 16. */ #define AT_IGNOREPPC 22 /* Entry should be ignored. */ +#ifdef __linux__ #define AT_SECURE 23 /* Boolean, was exec setuid-like? */ +#endif #define AT_BASE_PLATFORM 24 /* String identifying real platforms.*/