[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