[compiler-rt] r243688 - [dfsan] Enable dfsan for aarch64

Daniel Sanders Daniel.Sanders at imgtec.com
Fri Jul 31 01:54:20 PDT 2015


You've probably seen the buildbot email but custom.cc is XPASSing at  http://lab.llvm.org:8011/builders/clang-native-aarch64-full/builds/2041. It's possible that r243686 (committed in the middle of your series and tested in the same build) might have fixed the issue you were seeing. 

> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Adhemerval Zanella
> Sent: 30 July 2015 22:13
> To: llvm-commits at cs.uiuc.edu
> Subject: [compiler-rt] r243688 - [dfsan] Enable dfsan for aarch64
> 
> Author: azanella
> Date: Thu Jul 30 16:13:21 2015
> New Revision: 243688
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=243688&view=rev
> Log:
> [dfsan] Enable dfsan for aarch64
> 
> This patch enable DFSan for AArch64 (39-bit VMA).  All tests are passing
> but:
> 
>  * test/dfsan/custom.cc
> 
> Due an invalid access in dl_iterate_phdr instrumentation (commenting out
> this function make the testcase to pass).  The test is XFAIL for aarch64
> for now.
> 
> 
> Modified:
>     compiler-rt/trunk/cmake/config-ix.cmake
>     compiler-rt/trunk/lib/dfsan/dfsan.cc
>     compiler-rt/trunk/lib/dfsan/dfsan.h
>     compiler-rt/trunk/test/dfsan/custom.cc
> 
> Modified: compiler-rt/trunk/cmake/config-ix.cmake
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/config-
> ix.cmake?rev=243688&r1=243687&r2=243688&view=diff
> ==========================================================
> ====================
> --- compiler-rt/trunk/cmake/config-ix.cmake (original)
> +++ compiler-rt/trunk/cmake/config-ix.cmake Thu Jul 30 16:13:21 2015
> @@ -258,7 +258,7 @@ filter_available_targets(ASAN_SUPPORTED_
>  if(ANDROID)
>    filter_available_targets(ASAN_SUPPORTED_ARCH aarch64)
>  endif()
> -filter_available_targets(DFSAN_SUPPORTED_ARCH x86_64 mips64
> mips64el)
> +filter_available_targets(DFSAN_SUPPORTED_ARCH x86_64 mips64 mips64el
> aarch64)
>  filter_available_targets(LSAN_SUPPORTED_ARCH x86_64 mips64 mips64el)
>  filter_available_targets(MSAN_SUPPORTED_ARCH x86_64 mips64 mips64el)
>  filter_available_targets(PROFILE_SUPPORTED_ARCH x86_64 i386 i686 arm
> mips mips64
> 
> Modified: compiler-rt/trunk/lib/dfsan/dfsan.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-
> rt/trunk/lib/dfsan/dfsan.cc?rev=243688&r1=243687&r2=243688&view=diff
> ==========================================================
> ====================
> --- compiler-rt/trunk/lib/dfsan/dfsan.cc (original)
> +++ compiler-rt/trunk/lib/dfsan/dfsan.cc Thu Jul 30 16:13:21 2015
> @@ -80,6 +80,22 @@ SANITIZER_INTERFACE_ATTRIBUTE THREADLOCA
>  // | reserved by kernel |
>  // +--------------------+ 0x0000000000
> 
> +// On Linux/AArch64 (39-bit VMA), memory is laid out as follow:
> +//
> +// +--------------------+ 0x8000000000 (top of memory)
> +// | application memory |
> +// +--------------------+ 0x7000008000 (kAppAddr)
> +// |                    |
> +// |       unused       |
> +// |                    |
> +// +--------------------+ 0x1200000000 (kUnusedAddr)
> +// |    union table     |
> +// +--------------------+ 0x1000000000 (kUnionTableAddr)
> +// |   shadow memory    |
> +// +--------------------+ 0x0000010000 (kShadowAddr)
> +// | reserved by kernel |
> +// +--------------------+ 0x0000000000
> +
>  typedef atomic_dfsan_label
> dfsan_union_table_t[kNumLabels][kNumLabels];
> 
>  #if defined(__x86_64__)
> @@ -92,6 +108,11 @@ static const uptr kShadowAddr = 0x10000;
>  static const uptr kUnionTableAddr = 0x2000000000;
>  static const uptr kUnusedAddr = kUnionTableAddr +
> sizeof(dfsan_union_table_t);
>  static const uptr kAppAddr = 0xF000008000;
> +#elif defined(__aarch64__)
> +static const uptr kShadowAddr = 0x10000;
> +static const uptr kUnionTableAddr = 0x1000000000;
> +static const uptr kUnusedAddr = kUnionTableAddr +
> sizeof(dfsan_union_table_t);
> +static const uptr kAppAddr = 0x7000008000;
>  #else
>  # error "DFSan not supported for this platform!"
>  #endif
> 
> Modified: compiler-rt/trunk/lib/dfsan/dfsan.h
> URL: http://llvm.org/viewvc/llvm-project/compiler-
> rt/trunk/lib/dfsan/dfsan.h?rev=243688&r1=243687&r2=243688&view=diff
> ==========================================================
> ====================
> --- compiler-rt/trunk/lib/dfsan/dfsan.h (original)
> +++ compiler-rt/trunk/lib/dfsan/dfsan.h Thu Jul 30 16:13:21 2015
> @@ -48,6 +48,8 @@ inline dfsan_label *shadow_for(void *ptr
>    return (dfsan_label *) ((((uptr) ptr) & ~0x700000000000) << 1);
>  #elif defined(__mips64)
>    return (dfsan_label *) ((((uptr) ptr) & ~0xF000000000) << 1);
> +#elif defined(__aarch64__)
> +  return (dfsan_label *) ((((uptr) ptr) & ~0x7800000000) << 1);
>  #endif
>  }
> 
> 
> Modified: compiler-rt/trunk/test/dfsan/custom.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-
> rt/trunk/test/dfsan/custom.cc?rev=243688&r1=243687&r2=243688&view=dif
> f
> ==========================================================
> ====================
> --- compiler-rt/trunk/test/dfsan/custom.cc (original)
> +++ compiler-rt/trunk/test/dfsan/custom.cc Thu Jul 30 16:13:21 2015
> @@ -5,6 +5,9 @@
> 
>  // Tests custom implementations of various glibc functions.
> 
> +// AArch64 segfaults in the dl_iterate_phdr test.
> +// XFAIL: aarch64
> +
>  #include <sanitizer/dfsan_interface.h>
> 
>  #include <arpa/inet.h>
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list