Hi Kostya, Can you please review these Windows malloc interceptors? Thanks, Timur
r149875, thanks! On Mon, Feb 6, 2012 at 6:06 AM, <timurrrr@google.com> wrote: > Reviewers: kcc1, > > Message: > Hi Kostya, > > Can you please review these Windows malloc interceptors? > > Thanks, > Timur > > Description: > [AddressSanitizer] The first version of Windows malloc interceptors > > Please review this at http://codereview.appspot.com/**5636049/<http://codereview.appspot.com/5636049/> > > Affected files: > A lib/asan/asan_malloc_win.cc > > > Index: lib/asan/asan_malloc_win.cc > diff --git a/lib/asan/asan_malloc_win.cc b/lib/asan/asan_malloc_win.cc > new file mode 100644 > index 000000000000000000000000000000**0000000000..** > 7c521a687bbc2b7f0c2db9abc6eb1b**2367cc5543 > --- /dev/null > +++ b/lib/asan/asan_malloc_win.cc > @@ -0,0 +1,57 @@ > +//===-- asan_malloc_win.cc ------------------------------**------*- C++ > -*-===// > +// > +// The LLVM Compiler Infrastructure > +// > +// This file is distributed under the University of Illinois Open Source > +// License. See LICENSE.TXT for details. > +// > +//===------------------------**------------------------------** > ----------------===// > +// > +// This file is a part of AddressSanitizer, an address sanity checker. > +// > +// Windows-specific malloc interception. > +//===------------------------**------------------------------** > ----------------===// > +#ifdef _WIN32 > + > +#include "asan_allocator.h" > +#include "asan_interceptors.h" > +#include "asan_internal.h" > +#include "asan_stack.h" > + > +namespace __asan { > +void ReplaceSystemMalloc() { > + // TODO(timurrrr): investigate whether any action is needed. > +} > +} // namespace __asan > + > +// ---------------------- Replacement functions ---------------- {{{1 > +using namespace __asan; // NOLINT > + > +// TODO(timurrrr): Simply defining functins with the same signature in > *.obj > +// files overrides the standard functions in *.lib > +// This works well for simple helloworld-like tests but might need to be > +// revisited in the future. > + > +extern "C" { > +void free(void *ptr) { > + GET_STACK_TRACE_HERE_FOR_FREE(**ptr); > + return asan_free(ptr, &stack); > +} > + > +void *malloc(size_t size) { > + GET_STACK_TRACE_HERE_FOR_**MALLOC; > + return asan_malloc(size, &stack); > +} > + > +void *calloc(size_t nmemb, size_t size) { > + GET_STACK_TRACE_HERE_FOR_**MALLOC; > + return asan_calloc(nmemb, size, &stack); > +} > + > +void *realloc(void *ptr, size_t size) { > + GET_STACK_TRACE_HERE_FOR_**MALLOC; > + return asan_realloc(ptr, size, &stack); > +} > +} // extern "C" > + > +#endif // _WIN32 > > >