Thanks Chandler! <div>This may cause us some minor headache (e.g. the Makefile.old is now broken), but overall the change is useful. </div><div><br></div><div>--kcc <br><br><div class="gmail_quote">On Wed, Aug 29, 2012 at 6:27 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: chandlerc<br>
Date: Tue Aug 28 21:27:54 2012<br>
New Revision: 162822<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=162822&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=162822&view=rev</a><br>
Log:<br>
Relocate the external headers provided by ASan and the common sanitizer<br>
library.<br>
<br>
These headers are intended to be available to user code when built with<br>
AddressSanitizer (or one of the other sanitizer's in the future) to<br>
interface with the runtime library. As such, they form stable external<br>
C interfaces, and the headers shouldn't be located within the<br>
implementation.<br>
<br>
I've pulled them out into what seem like fairly obvious locations and<br>
names, but I'm wide open to further bikeshedding of these names and<br>
locations.<br>
<br>
I've updated the code and the build system to cope with the new<br>
locations, both CMake and Makefile. Please let me know if this breaks<br>
anyone's build.<br>
<br>
The eventual goal is to install these headers along side the Clang<br>
builtin headers when we build the ASan runtime and install it. My<br>
current thinking is to locate them at:<br>
<br>
  <prefix>/lib/clang/X.Y/include/sanitizer/common_interface_defs.h<br>
  <prefix>/lib/clang/X.Y/include/sanitizer/asan_interface.h<br>
  <prefix>/lib/clang/X.Y/include/sanitizer/...<br>
<br>
But maybe others have different suggestions?<br>
<br>
Fixing the style of the #include between these headers at least unblocks<br>
experimentation with installing them as they now should work when<br>
installed in these locations.<br>
<br>
Added:<br>
    compiler-rt/trunk/include/<br>
    compiler-rt/trunk/include/sanitizer/<br>
    compiler-rt/trunk/include/sanitizer/asan_interface.h<br>
      - copied, changed from r162809, compiler-rt/trunk/lib/asan/asan_interface.h<br>
    compiler-rt/trunk/include/sanitizer/common_interface_defs.h<br>
      - copied, changed from r162809, compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h<br>
Removed:<br>
    compiler-rt/trunk/lib/asan/asan_interface.h<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h<br>
Modified:<br>
    compiler-rt/trunk/CMakeLists.txt<br>
    compiler-rt/trunk/lib/asan/asan_allocator.cc<br>
    compiler-rt/trunk/lib/asan/asan_flags.h<br>
    compiler-rt/trunk/lib/asan/asan_globals.cc<br>
    compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
    compiler-rt/trunk/lib/asan/asan_poisoning.cc<br>
    compiler-rt/trunk/lib/asan/asan_report.h<br>
    compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
    compiler-rt/trunk/lib/asan/asan_stack.cc<br>
    compiler-rt/trunk/lib/asan/asan_stats.cc<br>
    compiler-rt/trunk/lib/asan/lit_tests/interface_symbols.c<br>
    compiler-rt/trunk/lib/asan/output_tests/test_output.sh<br>
    compiler-rt/trunk/lib/asan/tests/asan_noinst_test.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h<br>
    compiler-rt/trunk/make/<a href="http://config.mk" target="_blank">config.mk</a><br>
<br>
Modified: compiler-rt/trunk/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/CMakeLists.txt (original)<br>
+++ compiler-rt/trunk/CMakeLists.txt Tue Aug 28 21:27:54 2012<br>
@@ -100,6 +100,9 @@<br>
   set_property(TARGET ${target} PROPERTY COMPILE_FLAGS "${argstring}")<br>
 endfunction()<br>
<br>
+# Add the public header's directory to the includes for all of compiler-rt.<br>
+include_directories(include)<br>
+<br>
 add_subdirectory(lib)<br>
<br>
 if(LLVM_INCLUDE_TESTS)<br>
<br>
Copied: compiler-rt/trunk/include/sanitizer/asan_interface.h (from r162809, compiler-rt/trunk/lib/asan/asan_interface.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/include/sanitizer/asan_interface.h?p2=compiler-rt/trunk/include/sanitizer/asan_interface.h&p1=compiler-rt/trunk/lib/asan/asan_interface.h&r1=162809&r2=162822&rev=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/include/sanitizer/asan_interface.h?p2=compiler-rt/trunk/include/sanitizer/asan_interface.h&p1=compiler-rt/trunk/lib/asan/asan_interface.h&r1=162809&r2=162822&rev=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_interface.h (original)<br>
+++ compiler-rt/trunk/include/sanitizer/asan_interface.h Tue Aug 28 21:27:54 2012<br>
@@ -1,4 +1,4 @@<br>
-//===-- asan_interface.h ----------------------------------------*- C++ -*-===//<br>
+//===-- sanitizer/asan_interface.h ------------------------------*- C++ -*-===//<br>
 //<br>
 //                     The LLVM Compiler Infrastructure<br>
 //<br>
@@ -12,10 +12,11 @@<br>
 // This header can be included by the instrumented program to fetch<br>
 // data (mostly allocator statistics) from ASan runtime library.<br>
 //===----------------------------------------------------------------------===//<br>
-#ifndef ASAN_INTERFACE_H<br>
-#define ASAN_INTERFACE_H<br>
+#ifndef SANITIZER_ASAN_INTERFACE_H<br>
+#define SANITIZER_ASAN_INTERFACE_H<br>
+<br>
+#include <sanitizer/common_interface_defs.h><br>
<br>
-#include "sanitizer_common/sanitizer_interface_defs.h"<br>
 // ----------- ATTENTION -------------<br>
 // This header should NOT include any other headers from ASan runtime.<br>
 // All functions in this header are extern "C" and start with __asan_.<br>
@@ -198,4 +199,4 @@<br>
       SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;<br>
 }  // extern "C"<br>
<br>
-#endif  // ASAN_INTERFACE_H<br>
+#endif  // SANITIZER_ASAN_INTERFACE_H<br>
<br>
Copied: compiler-rt/trunk/include/sanitizer/common_interface_defs.h (from r162809, compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/include/sanitizer/common_interface_defs.h?p2=compiler-rt/trunk/include/sanitizer/common_interface_defs.h&p1=compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h&r1=162809&r2=162822&rev=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/include/sanitizer/common_interface_defs.h?p2=compiler-rt/trunk/include/sanitizer/common_interface_defs.h&p1=compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h&r1=162809&r2=162822&rev=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h (original)<br>
+++ compiler-rt/trunk/include/sanitizer/common_interface_defs.h Tue Aug 28 21:27:54 2012<br>
@@ -1,4 +1,4 @@<br>
-//===-- sanitizer_interface_defs.h -----------------------------*- C++ -*-===//<br>
+//===-- sanitizer/common_interface_defs.h -----------------------*- C++ -*-===//<br>
 //<br>
 //                     The LLVM Compiler Infrastructure<br>
 //<br>
@@ -12,8 +12,8 @@<br>
 // NOTE: This file may be included into user code.<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#ifndef SANITIZER_INTERFACE_DEFS_H<br>
-#define SANITIZER_INTERFACE_DEFS_H<br>
+#ifndef SANITIZER_COMMON_INTERFACE_DEFS_H<br>
+#define SANITIZER_COMMON_INTERFACE_DEFS_H<br>
<br>
 // ----------- ATTENTION -------------<br>
 // This header should NOT include any other headers to avoid portability issues.<br>
@@ -53,4 +53,4 @@<br>
<br>
 }  // namespace __sanitizer<br>
<br>
-#endif  // SANITIZER_INTERFACE_DEFS_H<br>
+#endif  // SANITIZER_COMMON_INTERFACE_DEFS_H<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_allocator.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_allocator.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_allocator.cc Tue Aug 28 21:27:54 2012<br>
@@ -27,7 +27,6 @@<br>
<br>
 #include "asan_allocator.h"<br>
 #include "asan_interceptors.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_lock.h"<br>
 #include "asan_mapping.h"<br>
@@ -35,6 +34,7 @@<br>
 #include "asan_report.h"<br>
 #include "asan_thread.h"<br>
 #include "asan_thread_registry.h"<br>
+#include "sanitizer/asan_interface.h"<br>
 #include "sanitizer_common/sanitizer_atomic.h"<br>
<br>
 #if defined(_WIN32) && !defined(__clang__)<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_flags.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_flags.h?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_flags.h?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_flags.h (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_flags.h Tue Aug 28 21:27:54 2012<br>
@@ -15,7 +15,7 @@<br>
 #ifndef ASAN_FLAGS_H<br>
 #define ASAN_FLAGS_H<br>
<br>
-#include "sanitizer_common/sanitizer_interface_defs.h"<br>
+#include "sanitizer/common_interface_defs.h"<br>
<br>
 // ASan flag values can be defined in three ways:<br>
 // 1) initialized with default values at startup.<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_globals.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_globals.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_globals.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_globals.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_globals.cc Tue Aug 28 21:27:54 2012<br>
@@ -12,7 +12,6 @@<br>
 // Handle globals.<br>
 //===----------------------------------------------------------------------===//<br>
 #include "asan_interceptors.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_lock.h"<br>
 #include "asan_mapping.h"<br>
@@ -20,6 +19,7 @@<br>
 #include "asan_stack.h"<br>
 #include "asan_stats.h"<br>
 #include "asan_thread.h"<br>
+#include "sanitizer/asan_interface.h"<br>
<br>
 namespace __asan {<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Tue Aug 28 21:27:54 2012<br>
@@ -15,7 +15,6 @@<br>
<br>
 #include "asan_allocator.h"<br>
 #include "asan_intercepted_functions.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_mapping.h"<br>
 #include "asan_report.h"<br>
@@ -23,6 +22,7 @@<br>
 #include "asan_stats.h"<br>
 #include "asan_thread_registry.h"<br>
 #include "interception/interception.h"<br>
+#include "sanitizer/asan_interface.h"<br>
 #include "sanitizer_common/sanitizer_libc.h"<br>
<br>
 namespace __asan {<br>
<br>
Removed: compiler-rt/trunk/lib/asan/asan_interface.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interface.h?rev=162821&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interface.h?rev=162821&view=auto</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_interface.h (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_interface.h (removed)<br>
@@ -1,201 +0,0 @@<br>
-//===-- asan_interface.h ----------------------------------------*- C++ -*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-//<br>
-// This file is a part of AddressSanitizer, an address sanity checker.<br>
-//<br>
-// This header can be included by the instrumented program to fetch<br>
-// data (mostly allocator statistics) from ASan runtime library.<br>
-//===----------------------------------------------------------------------===//<br>
-#ifndef ASAN_INTERFACE_H<br>
-#define ASAN_INTERFACE_H<br>
-<br>
-#include "sanitizer_common/sanitizer_interface_defs.h"<br>
-// ----------- ATTENTION -------------<br>
-// This header should NOT include any other headers from ASan runtime.<br>
-// All functions in this header are extern "C" and start with __asan_.<br>
-<br>
-using __sanitizer::uptr;<br>
-<br>
-extern "C" {<br>
-  // This function should be called at the very beginning of the process,<br>
-  // before any instrumented code is executed and before any call to malloc.<br>
-  void __asan_init() SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // This function should be called by the instrumented code.<br>
-  // 'addr' is the address of a global variable called 'name' of 'size' bytes.<br>
-  void __asan_register_global(uptr addr, uptr size, const char *name)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // This structure describes an instrumented global variable.<br>
-  struct __asan_global {<br>
-    uptr beg;                // The address of the global.<br>
-    uptr size;               // The original size of the global.<br>
-    uptr size_with_redzone;  // The size with the redzone.<br>
-    const char *name;        // Name as a C string.<br>
-    uptr has_dynamic_init;   // Non-zero if the global has dynamic initializer.<br>
-  };<br>
-<br>
-  // These two functions should be called by the instrumented code.<br>
-  // 'globals' is an array of structures describing 'n' globals.<br>
-  void __asan_register_globals(__asan_global *globals, uptr n)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  void __asan_unregister_globals(__asan_global *globals, uptr n)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // These two functions should be called before and after dynamic initializers<br>
-  // run, respectively.  They should be called with parameters describing all<br>
-  // dynamically initialized globals defined in the calling TU.<br>
-  void __asan_before_dynamic_init(uptr first_addr, uptr last_addr)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  void __asan_after_dynamic_init()<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // These two functions are used by the instrumented code in the<br>
-  // use-after-return mode. __asan_stack_malloc allocates size bytes of<br>
-  // fake stack and __asan_stack_free poisons it. real_stack is a pointer to<br>
-  // the real stack region.<br>
-  uptr __asan_stack_malloc(uptr size, uptr real_stack)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  void __asan_stack_free(uptr ptr, uptr size, uptr real_stack)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Marks memory region [addr, addr+size) as unaddressable.<br>
-  // This memory must be previously allocated by the user program. Accessing<br>
-  // addresses in this region from instrumented code is forbidden until<br>
-  // this region is unpoisoned. This function is not guaranteed to poison<br>
-  // the whole region - it may poison only subregion of [addr, addr+size) due<br>
-  // to ASan alignment restrictions.<br>
-  // Method is NOT thread-safe in the sense that no two threads can<br>
-  // (un)poison memory in the same memory region simultaneously.<br>
-  void __asan_poison_memory_region(void const volatile *addr, uptr size)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Marks memory region [addr, addr+size) as addressable.<br>
-  // This memory must be previously allocated by the user program. Accessing<br>
-  // addresses in this region is allowed until this region is poisoned again.<br>
-  // This function may unpoison a superregion of [addr, addr+size) due to<br>
-  // ASan alignment restrictions.<br>
-  // Method is NOT thread-safe in the sense that no two threads can<br>
-  // (un)poison memory in the same memory region simultaneously.<br>
-  void __asan_unpoison_memory_region(void const volatile *addr, uptr size)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Performs cleanup before a NoReturn function. Must be called before things<br>
-  // like _exit and execl to avoid false positives on stack.<br>
-  void __asan_handle_no_return() SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-// User code should use macro instead of functions.<br>
-#if __has_feature(address_sanitizer)<br>
-#define ASAN_POISON_MEMORY_REGION(addr, size) \<br>
-  __asan_poison_memory_region((addr), (size))<br>
-#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \<br>
-  __asan_unpoison_memory_region((addr), (size))<br>
-#else<br>
-#define ASAN_POISON_MEMORY_REGION(addr, size) \<br>
-  ((void)(addr), (void)(size))<br>
-#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \<br>
-  ((void)(addr), (void)(size))<br>
-#endif<br>
-<br>
-  // Returns true iff addr is poisoned (i.e. 1-byte read/write access to this<br>
-  // address will result in error report from AddressSanitizer).<br>
-  bool __asan_address_is_poisoned(void const volatile *addr)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // This is an internal function that is called to report an error.<br>
-  // However it is still a part of the interface because users may want to<br>
-  // set a breakpoint on this function in a debugger.<br>
-  void __asan_report_error(uptr pc, uptr bp, uptr sp,<br>
-                           uptr addr, bool is_write, uptr access_size)<br>
-    SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Sets the exit code to use when reporting an error.<br>
-  // Returns the old value.<br>
-  int __asan_set_error_exit_code(int exit_code)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Sets the callback to be called right before death on error.<br>
-  // Passing 0 will unset the callback.<br>
-  void __asan_set_death_callback(void (*callback)(void))<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  void __asan_set_error_report_callback(void (*callback)(const char*))<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Sets the callback to be called right when ASan detects an error.<br>
-  // This can be used to notice cases when ASan detects an error, but the<br>
-  // program crashes before ASan report is printed.<br>
-  // Passing 0 unsets the callback.<br>
-  void __asan_set_on_error_callback(void (*callback)(void))<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // User may register its own symbolization function. It should print<br>
-  // the description of instruction at address "pc" to "out_buffer".<br>
-  // Description should be at most "out_size" bytes long.<br>
-  // User-specified function should return true if symbolization was<br>
-  // successful.<br>
-  typedef bool (*__asan_symbolize_callback)(const void *pc, char *out_buffer,<br>
-                                            int out_size);<br>
-  void __asan_set_symbolize_callback(__asan_symbolize_callback callback)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Returns the estimated number of bytes that will be reserved by allocator<br>
-  // for request of "size" bytes. If ASan allocator can't allocate that much<br>
-  // memory, returns the maximal possible allocation size, otherwise returns<br>
-  // "size".<br>
-  uptr __asan_get_estimated_allocated_size(uptr size)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Returns true if p was returned by the ASan allocator and<br>
-  // is not yet freed.<br>
-  bool __asan_get_ownership(const void *p)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Returns the number of bytes reserved for the pointer p.<br>
-  // Requires (get_ownership(p) == true) or (p == 0).<br>
-  uptr __asan_get_allocated_size(const void *p)<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Number of bytes, allocated and not yet freed by the application.<br>
-  uptr __asan_get_current_allocated_bytes()<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Number of bytes, mmaped by asan allocator to fulfill allocation requests.<br>
-  // Generally, for request of X bytes, allocator can reserve and add to free<br>
-  // lists a large number of chunks of size X to use them for future requests.<br>
-  // All these chunks count toward the heap size. Currently, allocator never<br>
-  // releases memory to OS (instead, it just puts freed chunks to free lists).<br>
-  uptr __asan_get_heap_size()<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Number of bytes, mmaped by asan allocator, which can be used to fulfill<br>
-  // allocation requests. When a user program frees memory chunk, it can first<br>
-  // fall into quarantine and will count toward __asan_get_free_bytes() later.<br>
-  uptr __asan_get_free_bytes()<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Number of bytes in unmapped pages, that are released to OS. Currently,<br>
-  // always returns 0.<br>
-  uptr __asan_get_unmapped_bytes()<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  // Prints accumulated stats to stderr. Used for debugging.<br>
-  void __asan_print_accumulated_stats()<br>
-      SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // This function may be overriden by user to provide a string containing<br>
-  // ASan runtime options. See asan_flags.h for details.<br>
-  const char* __asan_default_options()<br>
-      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;<br>
-<br>
-  // Malloc hooks that may be overriden by user.<br>
-  // __asan_malloc_hook(ptr, size) is called immediately after<br>
-  //   allocation of "size" bytes, which returned "ptr".<br>
-  // __asan_free_hook(ptr) is called immediately before<br>
-  //   deallocation of "ptr".<br>
-  // If user doesn't provide implementations of these hooks, they are no-op.<br>
-  void __asan_malloc_hook(void *ptr, uptr size)<br>
-      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;<br>
-  void __asan_free_hook(void *ptr)<br>
-      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;<br>
-}  // extern "C"<br>
-<br>
-#endif  // ASAN_INTERFACE_H<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_poisoning.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_poisoning.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_poisoning.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_poisoning.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_poisoning.cc Tue Aug 28 21:27:54 2012<br>
@@ -13,9 +13,9 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "asan_interceptors.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_mapping.h"<br>
+#include "sanitizer/asan_interface.h"<br>
<br>
 namespace __asan {<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_report.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.h?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.h?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_report.h (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_report.h Tue Aug 28 21:27:54 2012<br>
@@ -12,8 +12,8 @@<br>
 // ASan-private header for error reporting functions.<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
+#include "sanitizer/asan_interface.h"<br>
<br>
 namespace __asan {<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_rtl.cc Tue Aug 28 21:27:54 2012<br>
@@ -13,7 +13,6 @@<br>
 //===----------------------------------------------------------------------===//<br>
 #include "asan_allocator.h"<br>
 #include "asan_interceptors.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_lock.h"<br>
 #include "asan_mapping.h"<br>
@@ -22,6 +21,7 @@<br>
 #include "asan_stats.h"<br>
 #include "asan_thread.h"<br>
 #include "asan_thread_registry.h"<br>
+#include "sanitizer/asan_interface.h"<br>
 #include "sanitizer_common/sanitizer_atomic.h"<br>
 #include "sanitizer_common/sanitizer_flags.h"<br>
 #include "sanitizer_common/sanitizer_libc.h"<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_stack.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stack.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stack.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_stack.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_stack.cc Tue Aug 28 21:27:54 2012<br>
@@ -12,8 +12,8 @@<br>
 // Code for ASan stack trace.<br>
 //===----------------------------------------------------------------------===//<br>
 #include "asan_flags.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_stack.h"<br>
+#include "sanitizer/asan_interface.h"<br>
<br>
 namespace __asan {<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_stats.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stats.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stats.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_stats.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_stats.cc Tue Aug 28 21:27:54 2012<br>
@@ -12,11 +12,11 @@<br>
 // Code related to statistics collected by AddressSanitizer.<br>
 //===----------------------------------------------------------------------===//<br>
 #include "asan_interceptors.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_lock.h"<br>
 #include "asan_stats.h"<br>
 #include "asan_thread_registry.h"<br>
+#include "sanitizer/asan_interface.h"<br>
<br>
 namespace __asan {<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/asan/lit_tests/interface_symbols.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/interface_symbols.c?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/interface_symbols.c?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/lit_tests/interface_symbols.c (original)<br>
+++ compiler-rt/trunk/lib/asan/lit_tests/interface_symbols.c Tue Aug 28 21:27:54 2012<br>
@@ -3,7 +3,8 @@<br>
 // RUN: %clang -faddress-sanitizer -dead_strip -O2 %s -o %t.exe<br>
 // RUN: nm %t.exe | egrep " [TW] " | sed "s/.* T //" | sed "s/.* W //" \<br>
 // RUN:    | grep "__asan_" | sed "s/___asan_/__asan_/" > %t.symbols<br>
-// RUN: cat %p/../asan_interface.h | sed "s/\/\/.*//" | sed "s/typedef.*//" \<br>
+// RUN: cat %p/../../../include/sanitizer/asan_interface.h \<br>
+// RUN:    | sed "s/\/\/.*//" | sed "s/typedef.*//" \<br>
 // RUN:    | grep "__asan_.*(" | sed "s/.* __asan_/__asan_/;s/(.*//" \<br>
 // RUN:    > %t.interface<br>
 // RUN: echo __asan_report_load1 >> %t.interface<br>
<br>
Modified: compiler-rt/trunk/lib/asan/output_tests/test_output.sh<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/output_tests/test_output.sh?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/output_tests/test_output.sh?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/output_tests/test_output.sh (original)<br>
+++ compiler-rt/trunk/lib/asan/output_tests/test_output.sh Tue Aug 28 21:27:54 2012<br>
@@ -8,7 +8,7 @@<br>
 FILE_CHECK=$3<br>
 CXXFLAGS="-mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -g"<br>
 SYMBOLIZER=../scripts/asan_symbolize.py<br>
-ASAN_INTERFACE_H=../asan_interface.h<br>
+ASAN_INTERFACE_H=../../../include/sanitizer/asan_interface.h<br>
 TMP_ASAN_REPORT=asan_report.tmp<br>
<br>
 run_program() {<br>
<br>
Modified: compiler-rt/trunk/lib/asan/tests/asan_noinst_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_noinst_test.cc?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_noinst_test.cc?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/tests/asan_noinst_test.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/tests/asan_noinst_test.cc Tue Aug 28 21:27:54 2012<br>
@@ -11,13 +11,14 @@<br>
 //<br>
 // This test file should be compiled w/o asan instrumentation.<br>
 //===----------------------------------------------------------------------===//<br>
+<br>
 #include "asan_allocator.h"<br>
-#include "asan_interface.h"<br>
 #include "asan_internal.h"<br>
 #include "asan_mapping.h"<br>
 #include "asan_stack.h"<br>
 #include "asan_test_utils.h"<br>
 #include "asan_test_config.h"<br>
+#include "sanitizer/asan_interface.h"<br>
<br>
 #include <assert.h><br>
 #include <stdio.h><br>
<br>
Removed: compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h?rev=162821&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h?rev=162821&view=auto</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_interface_defs.h (removed)<br>
@@ -1,56 +0,0 @@<br>
-//===-- sanitizer_interface_defs.h -----------------------------*- C++ -*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-//<br>
-// This file is shared between AddressSanitizer and ThreadSanitizer.<br>
-// It contains basic macro and types.<br>
-// NOTE: This file may be included into user code.<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-#ifndef SANITIZER_INTERFACE_DEFS_H<br>
-#define SANITIZER_INTERFACE_DEFS_H<br>
-<br>
-// ----------- ATTENTION -------------<br>
-// This header should NOT include any other headers to avoid portability issues.<br>
-<br>
-#if defined(_WIN32)<br>
-// FIXME find out what we need on Windows. __declspec(dllexport) ?<br>
-# define SANITIZER_INTERFACE_ATTRIBUTE<br>
-# define SANITIZER_WEAK_ATTRIBUTE<br>
-#elif defined(SANITIZER_GO)<br>
-# define SANITIZER_INTERFACE_ATTRIBUTE<br>
-# define SANITIZER_WEAK_ATTRIBUTE<br>
-#else<br>
-# define SANITIZER_INTERFACE_ATTRIBUTE __attribute__((visibility("default")))<br>
-# define SANITIZER_WEAK_ATTRIBUTE  __attribute__((weak))<br>
-#endif<br>
-<br>
-// __has_feature<br>
-#if !defined(__has_feature)<br>
-# define __has_feature(x) 0<br>
-#endif<br>
-<br>
-// For portability reasons we do not include stddef.h, stdint.h or any other<br>
-// system header, but we do need some basic types that are not defined<br>
-// in a portable way by the language itself.<br>
-namespace __sanitizer {<br>
-<br>
-typedef unsigned long uptr;  // NOLINT<br>
-typedef signed   long sptr;  // NOLINT<br>
-typedef unsigned char u8;<br>
-typedef unsigned short u16;  // NOLINT<br>
-typedef unsigned int u32;<br>
-typedef unsigned long long u64;  // NOLINT<br>
-typedef signed   char s8;<br>
-typedef signed   short s16;  // NOLINT<br>
-typedef signed   int s32;<br>
-typedef signed   long long s64;  // NOLINT<br>
-<br>
-}  // namespace __sanitizer<br>
-<br>
-#endif  // SANITIZER_INTERFACE_DEFS_H<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h Tue Aug 28 21:27:54 2012<br>
@@ -13,7 +13,7 @@<br>
 #ifndef SANITIZER_DEFS_H<br>
 #define SANITIZER_DEFS_H<br>
<br>
-#include "sanitizer_interface_defs.h"<br>
+#include "sanitizer/common_interface_defs.h"<br>
 using namespace __sanitizer;  // NOLINT<br>
 // ----------- ATTENTION -------------<br>
 // This header should NOT include any other headers to avoid portability issues.<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_libc.h Tue Aug 28 21:27:54 2012<br>
@@ -18,7 +18,7 @@<br>
<br>
 // ----------- ATTENTION -------------<br>
 // This header should NOT include any other headers from sanitizer runtime.<br>
-#include "sanitizer_interface_defs.h"<br>
+#include "sanitizer/common_interface_defs.h"<br>
<br>
 namespace __sanitizer {<br>
<br>
<br>
Modified: compiler-rt/trunk/make/<a href="http://config.mk" target="_blank">config.mk</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/config.mk?rev=162822&r1=162821&r2=162822&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/config.mk?rev=162822&r1=162821&r2=162822&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/make/<a href="http://config.mk" target="_blank">config.mk</a> (original)<br>
+++ compiler-rt/trunk/make/<a href="http://config.mk" target="_blank">config.mk</a> Tue Aug 28 21:27:54 2012<br>
@@ -42,5 +42,5 @@<br>
<br>
 ###<br>
 # Common compiler options<br>
-COMMON_CXXFLAGS=-fno-exceptions -fPIC -funwind-tables -I${ProjSrcRoot}/lib<br>
+COMMON_CXXFLAGS=-fno-exceptions -fPIC -funwind-tables -I${ProjSrcRoot}/lib -I${ProjSrcRoot}/include<br>
 COMMON_CFLAGS=-fPIC<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>