forked from OSchip/llvm-project
				
			Make compiler-rt/trunk/lib/asan compileable with g++.
Patch by Timur Iskhodzhanov (timurrrr@google.com) The double-extern thing is http://llvm.org/bugs/show_bug.cgi?id=11869 And the #include <string[s].h> are only needed on Mac (see comments in the original code) and also including them might make strchr/index conflict with the g++ system headers (which don't follow the man pages, ouch!) llvm-svn: 149129
This commit is contained in:
		
							parent
							
								
									7945c981b9
								
							
						
					
					
						commit
						13d95d5e5a
					
				| 
						 | 
				
			
			@ -26,8 +26,6 @@
 | 
			
		|||
#include <ctype.h>
 | 
			
		||||
#include <dlfcn.h>
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <strings.h>
 | 
			
		||||
#include <pthread.h>
 | 
			
		||||
 | 
			
		||||
// To replace weak system functions on Linux we just need to declare functions
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +42,10 @@
 | 
			
		|||
// calls to our interceptors. We store pointers to system function f()
 | 
			
		||||
// in __asan::real_f().
 | 
			
		||||
#ifdef __APPLE__
 | 
			
		||||
// Include the declarations of the original functions.
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <strings.h>
 | 
			
		||||
 | 
			
		||||
#include "mach_override/mach_override.h"
 | 
			
		||||
#define WRAPPER_NAME(x) "wrap_"#x
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -307,7 +309,7 @@ void *WRAP(signal)(int signum, void *handler) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
extern "C"
 | 
			
		||||
extern int (sigaction)(int signum, const void *act, void *oldact);
 | 
			
		||||
int (sigaction)(int signum, const void *act, void *oldact);
 | 
			
		||||
 | 
			
		||||
extern "C"
 | 
			
		||||
int WRAP(sigaction)(int signum, const void *act, void *oldact) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,10 @@
 | 
			
		|||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__has_feature)
 | 
			
		||||
#define __has_feature(x) 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__has_feature) && __has_feature(address_sanitizer)
 | 
			
		||||
# error "The AddressSanitizer run-time should not be"
 | 
			
		||||
        " instrumented by AddressSanitizer"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue