[compiler-rt] r190787 - [ASan] Check that getSymbolizer() is defined. Turn magic mapping constants into named variables

Alexey Samsonov samsonov at google.com
Mon Sep 16 08:45:06 PDT 2013


Author: samsonov
Date: Mon Sep 16 10:45:06 2013
New Revision: 190787

URL: http://llvm.org/viewvc/llvm-project?rev=190787&view=rev
Log:
[ASan] Check that getSymbolizer() is defined. Turn magic mapping constants into named variables

Modified:
    compiler-rt/trunk/lib/asan/asan_mapping.h
    compiler-rt/trunk/lib/asan/asan_report.cc
    compiler-rt/trunk/lib/asan/asan_rtl.cc

Modified: compiler-rt/trunk/lib/asan/asan_mapping.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mapping.h?rev=190787&r1=190786&r2=190787&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_mapping.h (original)
+++ compiler-rt/trunk/lib/asan/asan_mapping.h Mon Sep 16 10:45:06 2013
@@ -57,32 +57,36 @@
 // || `[0x0aaa8000, 0x0bffcfff]` || LowShadow  ||
 // || `[0x00000000, 0x0aaa7fff]` || LowMem     ||
 
+static const u64 kDefaultShadowScale = 3;
+static const u64 kDefaultShadowOffset32 = 1ULL << 29;
+static const u64 kDefaultShadowOffset64 = 1ULL << 44;
+static const u64 kDefaultShort64bitShadowOffset = 0x7FFF8000;  // < 2G.
+static const u64 kPPC64_ShadowOffset64 = 1ULL << 41;
+static const u64 kMIPS32_ShadowOffset32 = 0x0aaa8000;
+
 #if ASAN_FLEXIBLE_MAPPING_AND_OFFSET == 1
 extern SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_scale;
 extern SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_offset;
 # define SHADOW_SCALE (__asan_mapping_scale)
 # define SHADOW_OFFSET (__asan_mapping_offset)
 #else
+# define SHADOW_SCALE kDefaultShadowScale
 # if SANITIZER_ANDROID
-#  define SHADOW_SCALE (3)
 #  define SHADOW_OFFSET (0)
 # else
-#  define SHADOW_SCALE (3)
 #  if SANITIZER_WORDSIZE == 32
 #   if defined(__mips__)
-#     define SHADOW_OFFSET 0x0aaa8000
+#     define SHADOW_OFFSET kMIPS32_ShadowOffset32
 #   else
-#     define SHADOW_OFFSET (1 << 29)
+#     define SHADOW_OFFSET kDefaultShadowOffset32
 #   endif
 #  else
 #   if defined(__powerpc64__)
-#    define SHADOW_OFFSET (1ULL << 41)
+#    define SHADOW_OFFSET kPPC64_ShadowOffset64
+#   elif SANITIZER_MAC
+#    define SHADOW_OFFSET kDefaultShadowOffset64
 #   else
-#    if SANITIZER_MAC
-#     define SHADOW_OFFSET (1ULL << 44)
-#    else
-#     define SHADOW_OFFSET 0x7fff8000ULL
-#    endif
+#    define SHADOW_OFFSET kDefaultShort64bitShadowOffset
 #   endif
 #  endif
 # endif

Modified: compiler-rt/trunk/lib/asan/asan_report.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=190787&r1=190786&r2=190787&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_report.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_report.cc Mon Sep 16 10:45:06 2013
@@ -180,8 +180,9 @@ static bool IsASCII(unsigned char c) {
 static const char *MaybeDemangleGlobalName(const char *name) {
   // We can spoil names of globals with C linkage, so use an heuristic
   // approach to check if the name should be demangled.
-  return (name[0] == '_' && name[1] == 'Z') ? getSymbolizer()->Demangle(name)
-                                            : name;
+  return (name[0] == '_' && name[1] == 'Z' && &getSymbolizer)
+             ? getSymbolizer()->Demangle(name)
+             : name;
 }
 
 // Check if the global is a zero-terminated ASCII string. If so, print it.
@@ -543,7 +544,7 @@ class ScopedInErrorReport {
 
 static void ReportSummary(const char *error_type, StackTrace *stack) {
   if (!stack->size) return;
-  if (getSymbolizer()->IsAvailable()) {
+  if (&getSymbolizer && getSymbolizer()->IsAvailable()) {
     AddressInfo ai;
     // Currently, we include the first stack frame into the report summary.
     // Maybe sometimes we need to choose another frame (e.g. skip memcpy/etc).

Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=190787&r1=190786&r2=190787&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_rtl.cc Mon Sep 16 10:45:06 2013
@@ -533,7 +533,7 @@ void __asan_init() {
   InitializeAllocator();
 
   // Start symbolizer process if necessary.
-  if (common_flags()->symbolize) {
+  if (common_flags()->symbolize && &getSymbolizer) {
     getSymbolizer()
         ->InitializeExternal(common_flags()->external_symbolizer_path);
   }





More information about the llvm-commits mailing list