[llvm-commits] [AddressSanitizer] The first version of Windows malloc interceptors (issue 5636049)

Kostya Serebryany kcc at google.com
Mon Feb 6 10:01:02 PST 2012


r149875, thanks!

On Mon, Feb 6, 2012 at 6:06 AM, <timurrrr at 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
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120206/f75950db/attachment.html>


More information about the llvm-commits mailing list