forked from OSchip/llvm-project
In the dynamic runtime on Mac OS, do not call internal_strdup() before __asan_init().
This may result in a crash at startup. Fixes http://code.google.com/p/address-sanitizer/issues/detail?id=123. llvm-svn: 166768
This commit is contained in:
parent
4a0f7becd8
commit
99843d3a29
|
@ -382,6 +382,14 @@ INTERCEPTOR(char*, strcpy, char *to, const char *from) { // NOLINT
|
|||
|
||||
#if ASAN_INTERCEPT_STRDUP
|
||||
INTERCEPTOR(char*, strdup, const char *s) {
|
||||
#if MAC_INTERPOSE_FUNCTIONS
|
||||
// FIXME: because internal_strdup() uses InternalAlloc(), which currently
|
||||
// just calls malloc() on Mac, we can't use internal_strdup() with the
|
||||
// dynamic runtime. We can remove the call to REAL(strdup) once InternalAlloc
|
||||
// starts using mmap() instead.
|
||||
// See also http://code.google.com/p/address-sanitizer/issues/detail?id=123.
|
||||
if (!asan_inited) return REAL(strdup)(s);
|
||||
#endif
|
||||
if (!asan_inited) return internal_strdup(s);
|
||||
ENSURE_ASAN_INITED();
|
||||
if (flags()->replace_str) {
|
||||
|
|
Loading…
Reference in New Issue