[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