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

timurrrr at google.com timurrrr at google.com
Mon Feb 6 06:06:38 PST 2012


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/

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  
0000000000000000000000000000000000000000..7c521a687bbc2b7f0c2db9abc6eb1b2367cc5543
--- /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





More information about the llvm-commits mailing list