From cb027023344bbfa78221e1215144c0773a2123f7 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 28 May 2009 12:51:24 +0000 Subject: [PATCH] Add support for AT_RANDOM to keep glibc happy when it is built to assume kernel 2.6.29 or later. Closes #194429. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10160 --- coregrind/m_initimg/initimg-linux.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 054a04e53..f5b0278b3 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -248,6 +248,10 @@ static HChar** setup_client_env ( HChar** origenv, const HChar* toolname) #define AT_UCACHEBSIZE 21 #endif /* AT_UCACHEBSIZE */ +#ifndef AT_RANDOM +#define AT_RANDOM 25 +#endif /* AT_RANDOM */ + #ifndef AT_SYSINFO #define AT_SYSINFO 32 #endif /* AT_SYSINFO */ @@ -426,6 +430,8 @@ Addr setup_client_stack( void* init_sp, for (cauxv = orig_auxv; cauxv->a_type != AT_NULL; cauxv++) { if (cauxv->a_type == AT_PLATFORM) stringsize += VG_(strlen)(cauxv->u.a_ptr) + 1; + else if (cauxv->a_type == AT_RANDOM) + stringsize += 16; auxsize += sizeof(*cauxv); } @@ -686,6 +692,15 @@ Addr setup_client_stack( void* init_sp, auxv->a_type = AT_IGNORE; break; + case AT_RANDOM: + /* points to 16 random bytes - we need to ensure this is + propagated to the client as glibc will assume it is + present if it is built for kernel 2.6.29 or later */ + auxv->u.a_ptr = strtab; + VG_(memcpy)(strtab, orig_auxv->u.a_ptr, 16); + strtab += 16; + break; + default: /* stomp out anything we don't know about */ VG_(debugLog)(2, "initimg",