|
From: <sv...@va...> - 2009-09-04 13:03:53
|
Author: tom
Date: 2009-09-04 14:03:41 +0100 (Fri, 04 Sep 2009)
New Revision: 10885
Log:
Support AT_EXECFN in the ELF auxv, filling it in with the path of
the client executable valgrind is starting.
Based on a patch from John Reiser.
Modified:
trunk/coregrind/m_initimg/initimg-linux.c
Modified: trunk/coregrind/m_initimg/initimg-linux.c
===================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c 2009-09-04 12:52:16 UTC (rev 10884)
+++ trunk/coregrind/m_initimg/initimg-linux.c 2009-09-04 13:03:41 UTC (rev 10885)
@@ -258,6 +258,10 @@
#define AT_RANDOM 25
#endif /* AT_RANDOM */
+#ifndef AT_EXECFN
+#define AT_EXECFN 31
+#endif /* AT_EXECFN */
+
#ifndef AT_SYSINFO
#define AT_SYSINFO 32
#endif /* AT_SYSINFO */
@@ -439,6 +443,8 @@
stringsize += VG_(strlen)(cauxv->u.a_ptr) + 1;
else if (cauxv->a_type == AT_RANDOM)
stringsize += 16;
+ else if (cauxv->a_type == AT_EXECFN)
+ stringsize += VG_(strlen)(VG_(args_the_exename)) + 1;
auxsize += sizeof(*cauxv);
}
@@ -709,6 +715,11 @@
strtab += 16;
break;
+ case AT_EXECFN:
+ /* points to the executable filename */
+ auxv->u.a_ptr = copy_str(&strtab, VG_(args_the_exename));
+ break;
+
default:
/* stomp out anything we don't know about */
VG_(debugLog)(2, "initimg",
|