[compiler-rt] r238621 - Add descriptive names to sanitizer entries in /proc/self/maps. Helps debugging.
Alexey Samsonov
vonosmas at gmail.com
Wed Jun 3 17:41:40 PDT 2015
Right, see logic regarding MAP_NORESERVE in sanitizer_posix.cc
On Wed, Jun 3, 2015 at 5:33 PM, Galina Kistanova <gkistanova at gmail.com>
wrote:
> Hello Evgeniy,
>
> This patch has broken the FreeBSD sanitizer buildbot.
> Looks like an issue with the missing system header.
>
> Could you take a look, please?
>
> http://lab.llvm.org:8011/builders/sanitizer_x86_64-freebsd/builds/5381/steps/compile/logs/stdio
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__lab.llvm.org-3A8011_builders_sanitizer-5Fx86-5F64-2Dfreebsd_builds_5381_steps_compile_logs_stdio&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=RY42wAxqL6rIuAHeI1twdE1xcznCOTZHvPg-JZYKivE&e=>
>
> Thanks
>
> Galina
>
> On Fri, May 29, 2015 at 3:31 PM, Evgeniy Stepanov <
> eugeni.stepanov at gmail.com> wrote:
>
>> Author: eugenis
>> Date: Fri May 29 17:31:28 2015
>> New Revision: 238621
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=238621&view=rev
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D238621-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=Jq54UZEHNqH8xfNrlsBRWtzej4PTdHf3cBAiMLuaADk&e=>
>> Log:
>> Add descriptive names to sanitizer entries in /proc/self/maps. Helps
>> debugging.
>>
>> This is done by creating a named shared memory region, unlinking it
>> and setting up a private (i.e. copy-on-write) mapping of that instead
>> of a regular anonymous mapping. I've experimented with regular
>> (sparse) files, but they can not be scaled to the size of MSan shadow
>> mapping, at least on Linux/X86_64 and ext3 fs.
>>
>> Controlled by a common flag, decorate_proc_maps, disabled by default.
>>
>> This patch has a few shortcomings:
>> * not all mappings are annotated, especially in TSan.
>> * our handling of memset() of shadow via mmap() puts small anonymous
>> mappings inside larger named mappings, which looks ugly and can, in
>> theory, hit the mapping number limit.
>>
>> Added:
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/
>>
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/lit.local.cfg
>> Modified:
>> compiler-rt/trunk/cmake/config-ix.cmake
>> compiler-rt/trunk/lib/asan/CMakeLists.txt
>> compiler-rt/trunk/lib/asan/asan_internal.h
>> compiler-rt/trunk/lib/asan/asan_poisoning.h
>> compiler-rt/trunk/lib/asan/asan_rtl.cc
>> compiler-rt/trunk/lib/asan/tests/CMakeLists.txt
>> compiler-rt/trunk/lib/msan/msan_linux.cc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
>> compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
>> compiler-rt/trunk/lib/tsan/go/buildgo.sh
>> compiler-rt/trunk/lib/tsan/rtl/tsan_platform_linux.cc
>> compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc
>> compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.h
>> compiler-rt/trunk/test/sanitizer_common/lit.common.cfg
>>
>> Modified: compiler-rt/trunk/cmake/config-ix.cmake
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/config-ix.cmake?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_cmake_config-2Dix.cmake-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=zbS-27xescuq6zInGY-MO9jHjKWUbd3i_EIjEVOIM7E&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/cmake/config-ix.cmake (original)
>> +++ compiler-rt/trunk/cmake/config-ix.cmake Fri May 29 17:31:28 2015
>> @@ -62,6 +62,7 @@ check_symbol_exists(__func__ "" COMPILER
>> # Libraries.
>> check_library_exists(c printf "" COMPILER_RT_HAS_LIBC)
>> check_library_exists(dl dlopen "" COMPILER_RT_HAS_LIBDL)
>> +check_library_exists(rt shm_open "" COMPILER_RT_HAS_LIBRT)
>> check_library_exists(m pow "" COMPILER_RT_HAS_LIBM)
>> check_library_exists(pthread pthread_create ""
>> COMPILER_RT_HAS_LIBPTHREAD)
>> check_library_exists(stdc++ __cxa_throw "" COMPILER_RT_HAS_LIBSTDCXX)
>>
>> Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_asan_CMakeLists.txt-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=9luYcmzMVB2K49QsJC5gkHR9-lPtJxyKAyCsBHK7x6Y&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/asan/CMakeLists.txt Fri May 29 17:31:28 2015
>> @@ -66,6 +66,7 @@ append_list_if(MSVC /DEBUG ASAN_DYNAMIC_
>>
>> append_list_if(COMPILER_RT_HAS_LIBC c ASAN_DYNAMIC_LIBS)
>> append_list_if(COMPILER_RT_HAS_LIBDL dl ASAN_DYNAMIC_LIBS)
>> +append_list_if(COMPILER_RT_HAS_LIBRT rt ASAN_DYNAMIC_LIBS)
>> append_list_if(COMPILER_RT_HAS_LIBM m ASAN_DYNAMIC_LIBS)
>> append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread ASAN_DYNAMIC_LIBS)
>> append_list_if(COMPILER_RT_HAS_LIBSTDCXX stdc++ ASAN_DYNAMIC_LIBS)
>>
>> Modified: compiler-rt/trunk/lib/asan/asan_internal.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_internal.h?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_asan_asan-5Finternal.h-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=dBGT5ttjqLTeeQtPY8lNHZh6UVkkSMjLE4-Ds-sme10&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/asan_internal.h (original)
>> +++ compiler-rt/trunk/lib/asan/asan_internal.h Fri May 29 17:31:28 2015
>> @@ -93,7 +93,7 @@ void AppendToErrorMessageBuffer(const ch
>>
>> void *AsanDlSymNext(const char *sym);
>>
>> -void ReserveShadowMemoryRange(uptr beg, uptr end);
>> +void ReserveShadowMemoryRange(uptr beg, uptr end, const char *name);
>>
>> // Platform-specific options.
>> #if SANITIZER_MAC
>>
>> Modified: compiler-rt/trunk/lib/asan/asan_poisoning.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_poisoning.h?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_asan_asan-5Fpoisoning.h-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=q1q-wghMB0JrEqFORfctWiOIUcnyKMO2FCINo2aD24Y&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/asan_poisoning.h (original)
>> +++ compiler-rt/trunk/lib/asan/asan_poisoning.h Fri May 29 17:31:28 2015
>> @@ -64,7 +64,7 @@ ALWAYS_INLINE void FastPoisonShadow(uptr
>> if (page_end != shadow_end) {
>> REAL(memset)((void *)page_end, 0, shadow_end - page_end);
>> }
>> - ReserveShadowMemoryRange(page_beg, page_end - 1);
>> + ReserveShadowMemoryRange(page_beg, page_end - 1, nullptr);
>> }
>> }
>> }
>>
>> 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=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_asan_asan-5Frtl.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=SWvYPGmH_5-wAYYapq6moC8uPzogDYRErKCOFZn8BRw&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)
>> +++ compiler-rt/trunk/lib/asan/asan_rtl.cc Fri May 29 17:31:28 2015
>> @@ -89,12 +89,12 @@ void ShowStatsAndAbort() {
>> // ---------------------- mmap -------------------- {{{1
>> // Reserve memory range [beg, end].
>> // We need to use inclusive range because end+1 may not be representable.
>> -void ReserveShadowMemoryRange(uptr beg, uptr end) {
>> +void ReserveShadowMemoryRange(uptr beg, uptr end, const char *name) {
>> CHECK_EQ((beg % GetPageSizeCached()), 0);
>> CHECK_EQ(((end + 1) % GetPageSizeCached()), 0);
>> uptr size = end - beg + 1;
>> DecreaseTotalMmap(size); // Don't count the shadow against
>> mmap_limit_mb.
>> - void *res = MmapFixedNoReserve(beg, size);
>> + void *res = MmapFixedNoReserve(beg, size, name);
>> if (res != (void*)beg) {
>> Report("ReserveShadowMemoryRange failed while trying to map 0x%zx
>> bytes. "
>> "Perhaps you're using ulimit -v\n", size);
>> @@ -298,7 +298,7 @@ static void InitializeHighMemEnd() {
>> }
>>
>> static void ProtectGap(uptr addr, uptr size) {
>> - void *res = MmapNoAccess(addr, size);
>> + void *res = MmapNoAccess(addr, size, "shadow gap");
>> if (addr == (uptr)res)
>> return;
>> Report("ERROR: Failed to protect the shadow gap. "
>> @@ -422,9 +422,9 @@ static void AsanInitInternal() {
>> if (full_shadow_is_available) {
>> // mmap the low shadow plus at least one page at the left.
>> if (kLowShadowBeg)
>> - ReserveShadowMemoryRange(shadow_start, kLowShadowEnd);
>> + ReserveShadowMemoryRange(shadow_start, kLowShadowEnd, "low
>> shadow");
>> // mmap the high shadow.
>> - ReserveShadowMemoryRange(kHighShadowBeg, kHighShadowEnd);
>> + ReserveShadowMemoryRange(kHighShadowBeg, kHighShadowEnd, "high
>> shadow");
>> // protect the gap.
>> ProtectGap(kShadowGapBeg, kShadowGapEnd - kShadowGapBeg + 1);
>> CHECK_EQ(kShadowGapEnd, kHighShadowBeg - 1);
>> @@ -433,11 +433,11 @@ static void AsanInitInternal() {
>> MemoryRangeIsAvailable(kMidMemEnd + 1, kHighShadowEnd)) {
>> CHECK(kLowShadowBeg != kLowShadowEnd);
>> // mmap the low shadow plus at least one page at the left.
>> - ReserveShadowMemoryRange(shadow_start, kLowShadowEnd);
>> + ReserveShadowMemoryRange(shadow_start, kLowShadowEnd, "low shadow");
>> // mmap the mid shadow.
>> - ReserveShadowMemoryRange(kMidShadowBeg, kMidShadowEnd);
>> + ReserveShadowMemoryRange(kMidShadowBeg, kMidShadowEnd, "mid shadow");
>> // mmap the high shadow.
>> - ReserveShadowMemoryRange(kHighShadowBeg, kHighShadowEnd);
>> + ReserveShadowMemoryRange(kHighShadowBeg, kHighShadowEnd, "high
>> shadow");
>> // protect the gaps.
>> ProtectGap(kShadowGapBeg, kShadowGapEnd - kShadowGapBeg + 1);
>> ProtectGap(kShadowGap2Beg, kShadowGap2End - kShadowGap2Beg + 1);
>>
>> Modified: compiler-rt/trunk/lib/asan/tests/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/CMakeLists.txt?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_asan_tests_CMakeLists.txt-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=dVBCaM-8XURQ09oV8oFyfzH-6Uh7_EoxswG9TisC3eQ&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/asan/tests/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/asan/tests/CMakeLists.txt Fri May 29 17:31:28
>> 2015
>> @@ -99,6 +99,7 @@ append_list_if(ANDROID atomic ASAN_UNITT
>> set(ASAN_UNITTEST_NOINST_LINKFLAGS ${ASAN_UNITTEST_COMMON_LINKFLAGS})
>> append_list_if(COMPILER_RT_HAS_LIBM -lm ASAN_UNITTEST_NOINST_LINKFLAGS)
>> append_list_if(COMPILER_RT_HAS_LIBDL -ldl ASAN_UNITTEST_NOINST_LINKFLAGS)
>> +append_list_if(COMPILER_RT_HAS_LIBRT -lrt ASAN_UNITTEST_NOINST_LINKFLAGS)
>> append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread
>> ASAN_UNITTEST_NOINST_LINKFLAGS)
>> append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread
>> ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINKFLAGS)
>>
>> Modified: compiler-rt/trunk/lib/msan/msan_linux.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_linux.cc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_msan_msan-5Flinux.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=oj3jdCwzG02pfAM00fVKpieLyTN6hrJqBBCvmPucNGI&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/msan/msan_linux.cc (original)
>> +++ compiler-rt/trunk/lib/msan/msan_linux.cc Fri May 29 17:31:28 2015
>> @@ -53,16 +53,16 @@ static bool CheckMemoryRangeAvailability
>> return true;
>> }
>>
>> -static bool ProtectMemoryRange(uptr beg, uptr size) {
>> +static bool ProtectMemoryRange(uptr beg, uptr size, const char *name) {
>> if (size > 0) {
>> - void *addr = MmapNoAccess(beg, size);
>> + void *addr = MmapNoAccess(beg, size, name);
>> if (beg == 0 && addr != 0) {
>> // Depending on the kernel configuration, we may not be able to
>> protect
>> // the page at address zero.
>> uptr gap = 16 * GetPageSizeCached();
>> beg += gap;
>> size -= gap;
>> - addr = MmapNoAccess(beg, size);
>> + addr = MmapNoAccess(beg, size, name);
>> }
>> if ((uptr)addr != beg) {
>> uptr end = beg + size - 1;
>> @@ -135,7 +135,7 @@ bool InitShadow(bool init_origins) {
>> if (map) {
>> if (!CheckMemoryRangeAvailability(start, size))
>> return false;
>> - if ((uptr)MmapFixedNoReserve(start, size) != start)
>> + if ((uptr)MmapFixedNoReserve(start, size, kMemoryLayout[i].name)
>> != start)
>> return false;
>> if (common_flags()->use_madv_dontdump)
>> DontDumpShadowMemory(start, size);
>> @@ -143,7 +143,7 @@ bool InitShadow(bool init_origins) {
>> if (protect) {
>> if (!CheckMemoryRangeAvailability(start, size))
>> return false;
>> - if (!ProtectMemoryRange(start, size))
>> + if (!ProtectMemoryRange(start, size, kMemoryLayout[i].name))
>> return false;
>> }
>> }
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_sanitizer-5Fcommon_sanitizer-5Fcommon.h-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=4_IYGSTX-QDW8pdv3xo9SsSfyiOPanL2Dv-sBkr9I0c&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri May 29
>> 17:31:28 2015
>> @@ -69,10 +69,11 @@ void GetThreadStackAndTls(bool main, upt
>> // Memory management
>> void *MmapOrDie(uptr size, const char *mem_type);
>> void UnmapOrDie(void *addr, uptr size);
>> -void *MmapFixedNoReserve(uptr fixed_addr, uptr size);
>> +void *MmapFixedNoReserve(uptr fixed_addr, uptr size,
>> + const char *name = nullptr);
>> void *MmapNoReserveOrDie(uptr size, const char *mem_type);
>> void *MmapFixedOrDie(uptr fixed_addr, uptr size);
>> -void *MmapNoAccess(uptr fixed_addr, uptr size);
>> +void *MmapNoAccess(uptr fixed_addr, uptr size, const char *name =
>> nullptr);
>> // Map aligned chunk of address space; size and alignment are powers of
>> two.
>> void *MmapAlignedOrDie(uptr size, uptr alignment, const char *mem_type);
>> // Disallow access to a memory range. Use MmapNoAccess to allocate an
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_sanitizer-5Fcommon_sanitizer-5Fflags.inc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=5Z-zq4LOuJAsHrkDUmrw79FtQZkpWWWT-6i9Prnnb54&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc Fri May 29
>> 17:31:28 2015
>> @@ -163,3 +163,6 @@ COMMON_FLAG(bool, intercept_strspn, true
>> COMMON_FLAG(bool, intercept_strpbrk, true,
>> "If set, uses custom wrappers for strpbrk function "
>> "to find more errors.")
>> +COMMON_FLAG(bool, decorate_proc_maps, false, "If set, decorate sanitizer
>> "
>> + "mappings in
>> /proc/self/maps with "
>> + "user-readable names")
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_sanitizer-5Fcommon_sanitizer-5Fposix.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=ubESMdbDt2nRe2rT1mOXOIOewAUgpbw3C4q7UgGxApM&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc Fri May 29
>> 17:31:28 2015
>> @@ -165,22 +165,6 @@ void *MmapNoReserveOrDie(uptr size, cons
>> return (void *)p;
>> }
>>
>> -void *MmapFixedNoReserve(uptr fixed_addr, uptr size) {
>> - uptr PageSize = GetPageSizeCached();
>> - uptr p = internal_mmap((void*)(fixed_addr & ~(PageSize - 1)),
>> - RoundUpTo(size, PageSize),
>> - PROT_READ | PROT_WRITE,
>> - MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE,
>> - -1, 0);
>> - int reserrno;
>> - if (internal_iserror(p, &reserrno))
>> - Report("ERROR: %s failed to "
>> - "allocate 0x%zx (%zd) bytes at address %zx (errno: %d)\n",
>> - SanitizerToolName, size, size, fixed_addr, reserrno);
>> - IncreaseTotalMmap(size);
>> - return (void *)p;
>> -}
>> -
>> void *MmapFixedOrDie(uptr fixed_addr, uptr size) {
>> uptr PageSize = GetPageSizeCached();
>> uptr p = internal_mmap((void*)(fixed_addr & ~(PageSize - 1)),
>> @@ -199,13 +183,6 @@ void *MmapFixedOrDie(uptr fixed_addr, up
>> return (void *)p;
>> }
>>
>> -void *MmapNoAccess(uptr fixed_addr, uptr size) {
>> - return (void *)internal_mmap((void*)fixed_addr, size,
>> - PROT_NONE,
>> - MAP_PRIVATE | MAP_ANON | MAP_FIXED |
>> - MAP_NORESERVE, -1, 0);
>> -}
>> -
>> bool MprotectNoAccess(uptr addr, uptr size) {
>> return 0 == internal_mprotect((void*)addr, size, PROT_NONE);
>> }
>>
>> Modified:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_sanitizer-5Fcommon_sanitizer-5Fposix-5Flibcdep.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=FRAAL-i_ZdhuPPtsb6MJ4mMGyEnwFxZgfgG546gFfUw&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>> (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc Fri
>> May 29 17:31:28 2015
>> @@ -24,6 +24,7 @@
>> #include "sanitizer_symbolizer.h"
>>
>> #include <errno.h>
>> +#include <fcntl.h>
>> #include <pthread.h>
>> #include <signal.h>
>> #include <stdlib.h>
>> @@ -31,6 +32,7 @@
>> #include <sys/resource.h>
>> #include <sys/time.h>
>> #include <sys/types.h>
>> +#include <sys/stat.h>
>> #include <unistd.h>
>>
>> namespace __sanitizer {
>> @@ -217,6 +219,55 @@ void PrepareForSandboxing(__sanitizer_sa
>> #endif
>> }
>>
>> +#if SANITIZER_ANDROID
>> +int GetNamedMappingFd(const char *name, uptr size) {
>> + return -1;
>> +}
>> +#else
>> +int GetNamedMappingFd(const char *name, uptr size) {
>> + if (!common_flags()->decorate_proc_maps)
>> + return -1;
>> + char shmname[200];
>> + CHECK(internal_strlen(name) < sizeof(shmname) - 10);
>> + internal_snprintf(shmname, sizeof(shmname), "%zu [%s]",
>> internal_getpid(),
>> + name);
>> + int fd = shm_open(shmname, O_RDWR | O_CREAT | O_TRUNC, S_IRWXU);
>> + CHECK_GE(fd, 0);
>> + int res = internal_ftruncate(fd, size);
>> + CHECK_EQ(0, res);
>> + res = shm_unlink(shmname);
>> + CHECK_EQ(0, res);
>> + return fd;
>> +}
>> +#endif
>> +
>> +void *MmapFixedNoReserve(uptr fixed_addr, uptr size, const char *name) {
>> + int fd = name ? GetNamedMappingFd(name, size) : -1;
>> + unsigned flags = MAP_PRIVATE | MAP_FIXED | MAP_NORESERVE;
>> + if (fd == -1) flags |= MAP_ANON;
>> +
>> + uptr PageSize = GetPageSizeCached();
>> + uptr p = internal_mmap((void *)(fixed_addr & ~(PageSize - 1)),
>> + RoundUpTo(size, PageSize), PROT_READ |
>> PROT_WRITE,
>> + flags, fd, 0);
>> + int reserrno;
>> + if (internal_iserror(p, &reserrno))
>> + Report("ERROR: %s failed to "
>> + "allocate 0x%zx (%zd) bytes at address %zx (errno: %d)\n",
>> + SanitizerToolName, size, size, fixed_addr, reserrno);
>> + IncreaseTotalMmap(size);
>> + return (void *)p;
>> +}
>> +
>> +void *MmapNoAccess(uptr fixed_addr, uptr size, const char *name) {
>> + int fd = name ? GetNamedMappingFd(name, size) : -1;
>> + unsigned flags = MAP_PRIVATE | MAP_FIXED | MAP_NORESERVE;
>> + if (fd == -1) flags |= MAP_ANON;
>> +
>> + return (void *)internal_mmap((void *)fixed_addr, size, PROT_NONE,
>> flags, fd,
>> + 0);
>> +}
>> +
>> } // namespace __sanitizer
>>
>> #endif // SANITIZER_POSIX
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_sanitizer-5Fcommon_sanitizer-5Fwin.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=E464Jwc_jd-Y3d3REnr4eli1FHt3VMeG3KsKKaNWdV8&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc Fri May 29
>> 17:31:28 2015
>> @@ -104,9 +104,10 @@ void UnmapOrDie(void *addr, uptr size) {
>> }
>> }
>>
>> -void *MmapFixedNoReserve(uptr fixed_addr, uptr size) {
>> +void *MmapFixedNoReserve(uptr fixed_addr, uptr size, const char *name) {
>> // FIXME: is this really "NoReserve"? On Win32 this does not matter
>> much,
>> // but on Win64 it does.
>> + (void)name; // unsupported
>> void *p = VirtualAlloc((LPVOID)fixed_addr, size,
>> MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
>> if (p == 0)
>> @@ -125,7 +126,8 @@ void *MmapNoReserveOrDie(uptr size, cons
>> return MmapOrDie(size, mem_type);
>> }
>>
>> -void *MmapNoAccess(uptr fixed_addr, uptr size) {
>> +void *MmapNoAccess(uptr fixed_addr, uptr size, const char *name) {
>> + (void)name; // unsupported
>> void *res = VirtualAlloc((LPVOID)fixed_addr, size,
>> MEM_RESERVE | MEM_COMMIT, PAGE_NOACCESS);
>> if (res == 0)
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_sanitizer-5Fcommon_tests_CMakeLists.txt-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=LsdSsv6Tzm3Pq9agAeiIG-7qL4pPfnFq4Ph8pG3SY6w&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt Fri May
>> 29 17:31:28 2015
>> @@ -73,6 +73,7 @@ append_list_if(ANDROID log SANITIZER_TES
>> append_list_if(ANDROID atomic SANITIZER_TEST_LINK_LIBS)
>>
>> append_list_if(COMPILER_RT_HAS_LIBDL -ldl
>> SANITIZER_TEST_LINK_FLAGS_COMMON)
>> +append_list_if(COMPILER_RT_HAS_LIBRT -lrt
>> SANITIZER_TEST_LINK_FLAGS_COMMON)
>> append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread
>> SANITIZER_TEST_LINK_FLAGS_COMMON)
>> # x86_64 FreeBSD 9.2 additionally requires libc++ to build the tests.
>> Also,
>> # 'libm' shall be specified explicitly to build i386 tests.
>>
>> Modified: compiler-rt/trunk/lib/tsan/go/buildgo.sh
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/go/buildgo.sh?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_tsan_go_buildgo.sh-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=ONVUxZaMJf3hH-IEnnx9TIPCiq-1dHJDylPekN7dimY&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/tsan/go/buildgo.sh (original)
>> +++ compiler-rt/trunk/lib/tsan/go/buildgo.sh Fri May 29 17:31:28 2015
>> @@ -36,7 +36,7 @@ SRCS="
>> if [ "`uname -a | grep Linux`" != "" ]; then
>> SUFFIX="linux_amd64"
>> OSCFLAGS="-fPIC -ffreestanding -Wno-maybe-uninitialized
>> -Wno-unused-const-variable -Werror -Wno-unknown-warning-option"
>> - OSLDFLAGS="-lpthread -fPIC -fpie"
>> + OSLDFLAGS="-lpthread -lrt -fPIC -fpie"
>> SRCS="
>> $SRCS
>> ../rtl/tsan_platform_linux.cc
>>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_platform_linux.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_platform_linux.cc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_tsan_rtl_tsan-5Fplatform-5Flinux.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=GqAD_Omb2G4138XM8keGvU8Qk2smg3CLdvsX9t5az7A&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_platform_linux.cc (original)
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_platform_linux.cc Fri May 29
>> 17:31:28 2015
>> @@ -202,8 +202,8 @@ static void MapRodata() {
>>
>> void InitializeShadowMemory() {
>> // Map memory shadow.
>> - uptr shadow = (uptr)MmapFixedNoReserve(kShadowBeg,
>> - kShadowEnd - kShadowBeg);
>> + uptr shadow =
>> + (uptr)MmapFixedNoReserve(kShadowBeg, kShadowEnd - kShadowBeg,
>> "shadow");
>> if (shadow != kShadowBeg) {
>> Printf("FATAL: ThreadSanitizer can not mmap the shadow memory\n");
>> Printf("FATAL: Make sure to compile with -fPIE and "
>> @@ -232,7 +232,8 @@ void InitializeShadowMemory() {
>>
>> // Map meta shadow.
>> uptr meta_size = kMetaShadowEnd - kMetaShadowBeg;
>> - uptr meta = (uptr)MmapFixedNoReserve(kMetaShadowBeg, meta_size);
>> + uptr meta =
>> + (uptr)MmapFixedNoReserve(kMetaShadowBeg, meta_size, "meta shadow");
>> if (meta != kMetaShadowBeg) {
>> Printf("FATAL: ThreadSanitizer can not mmap the shadow memory\n");
>> Printf("FATAL: Make sure to compile with -fPIE and "
>>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_tsan_rtl_tsan-5Frtl.cc-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=4SomCrf9zBTHrHRbT0ImmIUPRi0ThfxO7mg5qBLQDt4&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc (original)
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc Fri May 29 17:31:28 2015
>> @@ -67,9 +67,12 @@ static char thread_registry_placeholder[
>>
>> static ThreadContextBase *CreateThreadContext(u32 tid) {
>> // Map thread trace when context is created.
>> - MapThreadTrace(GetThreadTrace(tid), TraceSize() * sizeof(Event));
>> + char name[50];
>> + internal_snprintf(name, sizeof(name), "trace %u", tid);
>> + MapThreadTrace(GetThreadTrace(tid), TraceSize() * sizeof(Event), name);
>> const uptr hdr = GetThreadTraceHeader(tid);
>> - MapThreadTrace(hdr, sizeof(Trace));
>> + internal_snprintf(name, sizeof(name), "trace header %u", tid);
>> + MapThreadTrace(hdr, sizeof(Trace), name);
>> new((void*)hdr) Trace();
>> // We are going to use only a small part of the trace with the default
>> // value of history_size. However, the constructor writes to the whole
>> trace.
>> @@ -237,7 +240,7 @@ void MapShadow(uptr addr, uptr size) {
>> // Global data is not 64K aligned, but there are no adjacent mappings,
>> // so we can get away with unaligned mapping.
>> // CHECK_EQ(addr, addr & ~((64 << 10) - 1)); // windows wants 64K
>> alignment
>> - MmapFixedNoReserve(MemToShadow(addr), size * kShadowMultiplier);
>> + MmapFixedNoReserve(MemToShadow(addr), size * kShadowMultiplier,
>> "shadow");
>>
>> // Meta shadow is 2:1, so tread carefully.
>> static bool data_mapped = false;
>> @@ -249,7 +252,7 @@ void MapShadow(uptr addr, uptr size) {
>> if (!data_mapped) {
>> // First call maps data+bss.
>> data_mapped = true;
>> - MmapFixedNoReserve(meta_begin, meta_end - meta_begin);
>> + MmapFixedNoReserve(meta_begin, meta_end - meta_begin, "meta shadow");
>> } else {
>> // Mapping continous heap.
>> // Windows wants 64K alignment.
>> @@ -259,19 +262,19 @@ void MapShadow(uptr addr, uptr size) {
>> return;
>> if (meta_begin < mapped_meta_end)
>> meta_begin = mapped_meta_end;
>> - MmapFixedNoReserve(meta_begin, meta_end - meta_begin);
>> + MmapFixedNoReserve(meta_begin, meta_end - meta_begin, "meta shadow");
>> mapped_meta_end = meta_end;
>> }
>> VPrintf(2, "mapped meta shadow for (%p-%p) at (%p-%p)\n",
>> addr, addr+size, meta_begin, meta_end);
>> }
>>
>> -void MapThreadTrace(uptr addr, uptr size) {
>> +void MapThreadTrace(uptr addr, uptr size, const char *name) {
>> DPrintf("#0: Mapping trace at %p-%p(0x%zx)\n", addr, addr + size,
>> size);
>> CHECK_GE(addr, kTraceMemBeg);
>> CHECK_LE(addr + size, kTraceMemEnd);
>> CHECK_EQ(addr, addr & ~((64 << 10) - 1)); // windows wants 64K
>> alignment
>> - uptr addr1 = (uptr)MmapFixedNoReserve(addr, size);
>> + uptr addr1 = (uptr)MmapFixedNoReserve(addr, size, name);
>> if (addr1 != addr) {
>> Printf("FATAL: ThreadSanitizer can not mmap thread trace
>> (%p/%p->%p)\n",
>> addr, size, addr1);
>>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.h?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_tsan_rtl_tsan-5Frtl.h-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=njgawxDIW0s-bz13epJ7xIQn_we2KNiRhyL9c_tOL1A&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.h (original)
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.h Fri May 29 17:31:28 2015
>> @@ -574,7 +574,7 @@ void ALWAYS_INLINE StatSet(ThreadState *
>> }
>>
>> void MapShadow(uptr addr, uptr size);
>> -void MapThreadTrace(uptr addr, uptr size);
>> +void MapThreadTrace(uptr addr, uptr size, const char *name);
>> void DontNeedShadowFor(uptr addr, uptr size);
>> void InitializeShadowMemory();
>> void InitializeInterceptors();
>>
>> Added:
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc?rev=238621&view=auto
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_sanitizer-5Fcommon_TestCases_Posix_decorate-5Fproc-5Fmaps.cc-3Frev-3D238621-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=KYiHkqOpyvVJ214lk_OPwp6mczt-KmE6AWEqmsZ-s9U&e=>
>>
>> ==============================================================================
>> ---
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc
>> (added)
>> +++
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc
>> Fri May 29 17:31:28 2015
>> @@ -0,0 +1,60 @@
>> +// RUN: %clangxx -g %s -o %t
>> +// RUN: %tool_options=decorate_proc_maps=1 %run %t 2>&1 | FileCheck %s
>> --check-prefix=CHECK-%tool_name
>> +#include <errno.h>
>> +#include <fcntl.h>
>> +#include <pthread.h>
>> +#include <stdio.h>
>> +#include <sys/stat.h>
>> +#include <sys/types.h>
>> +#include <unistd.h>
>> +
>> +bool CopyFdToFd(int in_fd, int out_fd) {
>> + const size_t kBufSize = 0x10000;
>> + static char buf[kBufSize];
>> + while (true) {
>> + ssize_t got = read(in_fd, buf, kBufSize);
>> + if (got > 0) {
>> + write(out_fd, buf, got);
>> + } else if (got == 0) {
>> + break;
>> + } else if (errno != EAGAIN || errno != EWOULDBLOCK || errno !=
>> EINTR) {
>> + fprintf(stderr, "error reading file, errno %d\n", errno);
>> + return false;
>> + }
>> + }
>> + return true;
>> +}
>> +
>> +void *ThreadFn(void *arg) {
>> + (void)arg;
>> + int fd = open("/proc/self/maps", O_RDONLY);
>> + bool res = CopyFdToFd(fd, 2);
>> + close(fd);
>> + return (void *)!res;
>> +}
>> +
>> +int main(void) {
>> + pthread_t t;
>> + void *res;
>> + pthread_create(&t, 0, ThreadFn, 0);
>> + pthread_join(t, &res);
>> + return (int)(size_t)res;
>> +}
>> +
>> +// CHECK-asan: rw-p {{.*}} [low shadow]
>> +// CHECK-asan: ---p {{.*}} [shadow gap]
>> +// CHECK-asan: rw-p {{.*}} [high shadow]
>> +
>> +// CHECK-msan: ---p {{.*}} [invalid]
>> +// CHECK-msan: rw-p {{.*}} [shadow]
>> +// CHECK-msan: ---p {{.*}} [origin]
>> +
>> +// CHECK-tsan: rw-p {{.*}} [shadow]
>> +// CHECK-tsan: rw-p {{.*}} [meta shadow]
>> +// CHECK-tsan: rw-p {{.*}} [trace 0]
>> +// CHECK-tsan: rw-p {{.*}} [trace header 0]
>> +// CHECK-tsan: rw-p {{.*}} [trace 1]
>> +// CHECK-tsan: rw-p {{.*}} [trace header 1]
>> +
>> +// Nothing interesting with standalone LSan.
>> +// CHECK-lsan: decorate_proc_maps
>>
>> Added:
>> compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/lit.local.cfg
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/lit.local.cfg?rev=238621&view=auto
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_sanitizer-5Fcommon_TestCases_Posix_lit.local.cfg-3Frev-3D238621-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=cPBKqksgsqwq9C3InqzVLUBvhcjbwBXg9b2qk3aWGvk&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/lit.local.cfg
>> (added)
>> +++ compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/lit.local.cfg
>> Fri May 29 17:31:28 2015
>> @@ -0,0 +1,9 @@
>> +def getRoot(config):
>> + if not config.parent:
>> + return config
>> + return getRoot(config.parent)
>> +
>> +root = getRoot(config)
>> +
>> +if root.host_os in ['Windows']:
>> + config.unsupported = True
>>
>> Modified: compiler-rt/trunk/test/sanitizer_common/lit.common.cfg
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/lit.common.cfg?rev=238621&r1=238620&r2=238621&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_sanitizer-5Fcommon_lit.common.cfg-3Frev-3D238621-26r1-3D238620-26r2-3D238621-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=-pUnf1LZcWMi7bm1XRUdGHsXk_eq4VIkIBnNdZtljzU&s=pNUVTdhEmeoDhhxb2j0JfGsAM1W3d2drtl9gpoXXi8o&e=>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/test/sanitizer_common/lit.common.cfg (original)
>> +++ compiler-rt/trunk/test/sanitizer_common/lit.common.cfg Fri May 29
>> 17:31:28 2015
>> @@ -30,6 +30,7 @@ def build_invocation(compile_flags):
>>
>> config.substitutions.append( ("%clang ", build_invocation(clang_cflags))
>> )
>> config.substitutions.append( ("%clangxx ",
>> build_invocation(clang_cxxflags)) )
>> +config.substitutions.append( ("%tool_name", config.tool_name) )
>> config.substitutions.append( ("%tool_options", tool_options) )
>>
>> config.suffixes = ['.c', '.cc', '.cpp']
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
--
Alexey Samsonov
vonosmas at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150603/f7a4fba6/attachment.html>
More information about the llvm-commits
mailing list