[llvm-commits] [compiler-rt] r150398 - in /compiler-rt/trunk/lib/asan: asan_internal.h asan_linux.cc asan_mac.cc asan_rtl.cc asan_win.cc
David Dean
david_dean at apple.com
Mon Feb 13 09:30:46 PST 2012
Alexander,
I think you missed something in this commit:
COMPILE: clang_darwin/asan_osx/i386: /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/llvm/projects/compiler-rt/lib/asan/asan_thread.cc
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/llvm/projects/compiler-rt/lib/asan/asan_mac.cc:106:31: error: use of undeclared identifier 'kLowShadowBeg'
kLowShadowBeg - kMmapGranularity,
^
On 13 Feb 2012, at 9:09 AM, Alexander Potapenko wrote:
> Author: glider
> Date: Mon Feb 13 11:09:40 2012
> New Revision: 150398
>
> URL: http://llvm.org/viewvc/llvm-project?rev=150398&view=rev
> Log:
> Move the non-trivial implementation of AsanShadowRangeIsAvailable to asan_mac.cc
> to avoid crashes on Linux and Win.
>
> Modified:
> compiler-rt/trunk/lib/asan/asan_internal.h
> compiler-rt/trunk/lib/asan/asan_linux.cc
> compiler-rt/trunk/lib/asan/asan_mac.cc
> compiler-rt/trunk/lib/asan/asan_rtl.cc
> compiler-rt/trunk/lib/asan/asan_win.cc
>
> 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=150398&r1=150397&r2=150398&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_internal.h (original)
> +++ compiler-rt/trunk/lib/asan/asan_internal.h Mon Feb 13 11:09:40 2012
> @@ -125,8 +125,9 @@
>
> void OutOfMemoryMessageAndDie(const char *mem_type, size_t size);
>
> -// asan_linux.cc / asan_mac.cc
> +// asan_linux.cc / asan_mac.cc / asan_win.cc
> void *AsanDoesNotSupportStaticLinkage();
> +bool AsanShadowRangeIsAvailable();
> int AsanOpenReadonly(const char* filename);
> const char *AsanGetEnv(const char *name);
>
>
> Modified: compiler-rt/trunk/lib/asan/asan_linux.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_linux.cc?rev=150398&r1=150397&r2=150398&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_linux.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_linux.cc Mon Feb 13 11:09:40 2012
> @@ -43,6 +43,11 @@
> return &_DYNAMIC; // defined in link.h
> }
>
> +bool AsanShadowRangeIsAvailable() {
> + // FIXME: shall we need anything here on Linux?
> + return true;
> +}
> +
> void GetPcSpBp(void *context, uintptr_t *pc, uintptr_t *sp, uintptr_t *bp) {
> #ifdef ANDROID
> *pc = *sp = *bp = 0;
>
> Modified: compiler-rt/trunk/lib/asan/asan_mac.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=150398&r1=150397&r2=150398&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_mac.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_mac.cc Mon Feb 13 11:09:40 2012
> @@ -76,6 +76,42 @@
> return NULL;
> }
>
> +inline bool IntervalsAreSeparate(uintptr_t start1, uintptr_t end1,
> + uintptr_t start2, uintptr_t end2) {
> + CHECK(start1 <= end1);
> + CHECK(start2 <= end2);
> + if (start1 == start2) {
> + return false;
> + } else {
> + if (start1 < start2) {
> + return (end1 < start2);
> + } else {
> + return (end2 < start1);
> + }
> + }
> + return false;
> +}
> +
> +// FIXME: this is thread-unsafe, but should not cause problems most of the time.
> +// When the shadow is mapped only a single thread usually exists (plus maybe
> +// several worker threads on Mac, which aren't expected to map big chunks of
> +// memory).
> +bool AsanShadowRangeIsAvailable() {
> + AsanProcMaps procmaps;
> + uintptr_t start, end;
> + bool available = true;
> + while (procmaps.Next(&start, &end,
> + /*offset*/NULL, /*filename*/NULL, /*size*/NULL)) {
> + if (!IntervalsAreSeparate(start, end,
> + kLowShadowBeg - kMmapGranularity,
> + kHighShadowEnd)) {
> + available = false;
> + break;
> + }
> + }
> + return available;
> +}
> +
> bool AsanInterceptsSignal(int signum) {
> return (signum == SIGSEGV || signum == SIGBUS) && FLAG_handle_segv;
> }
>
> 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=150398&r1=150397&r2=150398&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_rtl.cc Mon Feb 13 11:09:40 2012
> @@ -118,42 +118,6 @@
> CHECK(res == (void*)beg && "ReserveShadowMemoryRange failed");
> }
>
> -inline bool IntervalsAreSeparate(uintptr_t start1, uintptr_t end1,
> - uintptr_t start2, uintptr_t end2) {
> - CHECK(start1 <= end1);
> - CHECK(start2 <= end2);
> - if (start1 == start2) {
> - return false;
> - } else {
> - if (start1 < start2) {
> - return (end1 < start2);
> - } else {
> - return (end2 < start1);
> - }
> - }
> - return false;
> -}
> -
> -// FIXME: this is thread-unsafe, but should not cause problems most of the time.
> -// When the shadow is mapped only a single thread usually exists (plus maybe
> -// several worker threads on Mac, which aren't expected to map big chunks of
> -// memory.
> -bool AsanShadowRangeIsAvailable() {
> - AsanProcMaps procmaps;
> - uintptr_t start, end;
> - bool available = true;
> - while (procmaps.Next(&start, &end,
> - /*offset*/NULL, /*filename*/NULL, /*size*/NULL)) {
> - if (!IntervalsAreSeparate(start, end,
> - kLowShadowBeg - kMmapGranularity,
> - kHighShadowEnd)) {
> - available = false;
> - break;
> - }
> - }
> - return available;
> -}
> -
> // ---------------------- LowLevelAllocator ------------- {{{1
> void *LowLevelAllocator::Allocate(size_t size) {
> CHECK((size & (size - 1)) == 0 && "size must be a power of two");
>
> Modified: compiler-rt/trunk/lib/asan/asan_win.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_win.cc?rev=150398&r1=150397&r2=150398&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_win.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_win.cc Mon Feb 13 11:09:40 2012
> @@ -223,6 +223,11 @@
> return NULL;
> }
>
> +bool AsanShadowRangeIsAvailable() {
> + // FIXME: shall we do anything here on Windows?
> + return true;
> +}
> +
> int AtomicInc(int *a) {
> return InterlockedExchangeAdd((LONG*)a, 1) + 1;
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-David
More information about the llvm-commits
mailing list