[compiler-rt] r182359 - [msan] Replace GetArgv hack with something that is slightly better.

Evgeniy Stepanov eugeni.stepanov at gmail.com
Tue May 21 01:56:23 PDT 2013


Author: eugenis
Date: Tue May 21 03:56:22 2013
New Revision: 182359

URL: http://llvm.org/viewvc/llvm-project?rev=182359&view=rev
Log:
[msan] Replace GetArgv hack with something that is slightly better.

Modified:
    compiler-rt/trunk/lib/msan/tests/msan_test.cc

Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=182359&r1=182358&r2=182359&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)
+++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Tue May 21 03:56:22 2013
@@ -1476,15 +1476,7 @@ TEST(MemorySanitizer, getrusage) {
 }
 
 #ifdef __GLIBC__
-extern "C" {
-  extern void *__libc_stack_end;
-}
-
-static char **GetArgv(void) {
-  uintptr_t *stack_end = (uintptr_t *)__libc_stack_end;
-  return (char**)(stack_end + 1);
-}
-
+extern char *program_invocation_name;
 #else  // __GLIBC__
 # error "TODO: port this"
 #endif
@@ -1492,12 +1484,12 @@ static char **GetArgv(void) {
 // Compute the path to our loadable DSO.  We assume it's in the same
 // directory.  Only use string routines that we intercept so far to do this.
 static int PathToLoadable(char *buf, size_t sz) {
-  char **argv = GetArgv();
   const char *basename = "libmsan_loadable.x86_64.so";
-  char *last_slash = strrchr(argv[0], '/');
+  char *argv0 = program_invocation_name;
+  char *last_slash = strrchr(argv0, '/');
   assert(last_slash);
-  int res = snprintf(buf, sz, "%.*s/%s", int(last_slash - argv[0]), argv[0],
-                     basename);
+  int res =
+      snprintf(buf, sz, "%.*s/%s", int(last_slash - argv0), argv0, basename);
   return res < sz ? 0 : res;
 }
 





More information about the llvm-commits mailing list