| Index: third_party/asan/asan_clang_Linux/lib/clang/3.1/include/mm_malloc.h
|
| ===================================================================
|
| --- third_party/asan/asan_clang_Linux/lib/clang/3.1/include/mm_malloc.h (revision 0)
|
| +++ third_party/asan/asan_clang_Linux/lib/clang/3.1/include/mm_malloc.h (revision 0)
|
| @@ -0,0 +1,75 @@
|
| +/*===---- mm_malloc.h - Allocating and Freeing Aligned Memory Blocks -------===
|
| + *
|
| + * Permission is hereby granted, free of charge, to any person obtaining a copy
|
| + * of this software and associated documentation files (the "Software"), to deal
|
| + * in the Software without restriction, including without limitation the rights
|
| + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| + * copies of the Software, and to permit persons to whom the Software is
|
| + * furnished to do so, subject to the following conditions:
|
| + *
|
| + * The above copyright notice and this permission notice shall be included in
|
| + * all copies or substantial portions of the Software.
|
| + *
|
| + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| + * THE SOFTWARE.
|
| + *
|
| + *===-----------------------------------------------------------------------===
|
| + */
|
| +
|
| +#ifndef __MM_MALLOC_H
|
| +#define __MM_MALLOC_H
|
| +
|
| +#include <stdlib.h>
|
| +
|
| +#ifdef _WIN32
|
| +#include <malloc.h>
|
| +#else
|
| +#ifndef __cplusplus
|
| +extern int posix_memalign(void **memptr, size_t alignment, size_t size);
|
| +#else
|
| +// Some systems (e.g. those with GNU libc) declare posix_memalign with an
|
| +// exception specifier. Via an "egregious workaround" in
|
| +// Sema::CheckEquivalentExceptionSpec, Clang accepts the following as a valid
|
| +// redeclaration of glibc's declaration.
|
| +extern "C" int posix_memalign(void **memptr, size_t alignment, size_t size);
|
| +#endif
|
| +#endif
|
| +
|
| +#if !(defined(_WIN32) && defined(_mm_malloc))
|
| +static __inline__ void *__attribute__((__always_inline__, __nodebug__,
|
| + __malloc__))
|
| +_mm_malloc(size_t size, size_t align)
|
| +{
|
| + if (align == 1) {
|
| + return malloc(size);
|
| + }
|
| +
|
| + if (!(align & (align - 1)) && align < sizeof(void *))
|
| + align = sizeof(void *);
|
| +
|
| + void *mallocedMemory;
|
| +#if defined(__MINGW32__)
|
| + mallocedMemory = __mingw_aligned_malloc(size, align);
|
| +#elif defined(_WIN32)
|
| + mallocedMemory = _aligned_malloc(size, align);
|
| +#else
|
| + if (posix_memalign(&mallocedMemory, align, size))
|
| + return 0;
|
| +#endif
|
| +
|
| + return mallocedMemory;
|
| +}
|
| +
|
| +static __inline__ void __attribute__((__always_inline__, __nodebug__))
|
| +_mm_free(void *p)
|
| +{
|
| + free(p);
|
| +}
|
| +#endif
|
| +
|
| +#endif /* __MM_MALLOC_H */
|
|
|
| Property changes on: third_party/asan/asan_clang_Linux/lib/clang/3.1/include/mm_malloc.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|