OLD | NEW |
1 // Copyright (c) 2011, Google Inc. | 1 // Copyright (c) 2011, Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 #ifndef __THROW // I guess we're not on a glibc-like system | 46 #ifndef __THROW // I guess we're not on a glibc-like system |
47 # define __THROW // __THROW is just an optimization, so ok to make it "" | 47 # define __THROW // __THROW is just an optimization, so ok to make it "" |
48 #endif | 48 #endif |
49 | 49 |
50 #ifndef __GNUC__ | 50 #ifndef __GNUC__ |
51 # error libc_override_gcc_and_weak.h is for gcc distributions only. | 51 # error libc_override_gcc_and_weak.h is for gcc distributions only. |
52 #endif | 52 #endif |
53 | 53 |
54 #define ALIAS(tc_fn) __attribute__ ((alias (#tc_fn))) | 54 #define ALIAS(tc_fn) __attribute__ ((alias (#tc_fn))) |
55 | 55 |
56 void* operator new(size_t size) throw (std::bad_alloc) | 56 #if defined(__ANDROID__) |
| 57 // Android's bionic doesn't have std::bad_alloc. |
| 58 #define STD_BAD_ALLOC |
| 59 #else |
| 60 #define STD_BAD_ALLOC std::bad_alloc |
| 61 #endif |
| 62 |
| 63 void* operator new(size_t size) throw (STD_BAD_ALLOC) |
57 ALIAS(tc_new); | 64 ALIAS(tc_new); |
58 void operator delete(void* p) __THROW | 65 void operator delete(void* p) __THROW |
59 ALIAS(tc_delete); | 66 ALIAS(tc_delete); |
60 void* operator new[](size_t size) throw (std::bad_alloc) | 67 void* operator new[](size_t size) throw (STD_BAD_ALLOC) |
61 ALIAS(tc_newarray); | 68 ALIAS(tc_newarray); |
62 void operator delete[](void* p) __THROW | 69 void operator delete[](void* p) __THROW |
63 ALIAS(tc_deletearray); | 70 ALIAS(tc_deletearray); |
64 void* operator new(size_t size, const std::nothrow_t& nt) __THROW | 71 void* operator new(size_t size, const std::nothrow_t& nt) __THROW |
65 ALIAS(tc_new_nothrow); | 72 ALIAS(tc_new_nothrow); |
66 void* operator new[](size_t size, const std::nothrow_t& nt) __THROW | 73 void* operator new[](size_t size, const std::nothrow_t& nt) __THROW |
67 ALIAS(tc_newarray_nothrow); | 74 ALIAS(tc_newarray_nothrow); |
68 void operator delete(void* p, const std::nothrow_t& nt) __THROW | 75 void operator delete(void* p, const std::nothrow_t& nt) __THROW |
69 ALIAS(tc_delete_nothrow); | 76 ALIAS(tc_delete_nothrow); |
70 void operator delete[](void* p, const std::nothrow_t& nt) __THROW | 77 void operator delete[](void* p, const std::nothrow_t& nt) __THROW |
(...skipping 19 matching lines...) Expand all Loading... |
90 size_t malloc_usable_size(void* p) __THROW ALIAS(tc_malloc_size); | 97 size_t malloc_usable_size(void* p) __THROW ALIAS(tc_malloc_size); |
91 } // extern "C" | 98 } // extern "C" |
92 | 99 |
93 #undef ALIAS | 100 #undef ALIAS |
94 | 101 |
95 // No need to do anything at tcmalloc-registration time: we do it all | 102 // No need to do anything at tcmalloc-registration time: we do it all |
96 // via overriding weak symbols (at link time). | 103 // via overriding weak symbols (at link time). |
97 static void ReplaceSystemAlloc() { } | 104 static void ReplaceSystemAlloc() { } |
98 | 105 |
99 #endif // TCMALLOC_LIBC_OVERRIDE_GCC_AND_WEAK_INL_H_ | 106 #endif // TCMALLOC_LIBC_OVERRIDE_GCC_AND_WEAK_INL_H_ |
OLD | NEW |