diff options
author | Daan <daanl@outlook.com> | 2022-04-07 16:12:16 -0700 |
---|---|---|
committer | Daan <daanl@outlook.com> | 2022-04-07 16:12:16 -0700 |
commit | 25ecec3c3b77a85f1344bacb6c9538c555b49e12 (patch) | |
tree | f60dc2627aa57d0beac9c8376428fe2d68b55a1e /src/alloc-override.c | |
parent | 82dd094ec4d7f36067fdd55aa10aea438dae588f (diff) |
fix for dynamic overriding on macOS; add warning about C++ compilation (as that does not interact well with interpose)
Diffstat (limited to 'src/alloc-override.c')
-rw-r--r-- | src/alloc-override.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/alloc-override.c b/src/alloc-override.c index 0c9ece9..12e9e0d 100644 --- a/src/alloc-override.c +++ b/src/alloc-override.c @@ -94,15 +94,18 @@ typedef struct mi_nothrow_s { int _tag; } mi_nothrow_t; #ifdef __cplusplus extern "C" { - void _ZdlPv(void* p); // delete - void _ZdaPv(void* p); // delete[] - void _ZdlPvm(void* p, size_t n); // delete - void _ZdaPvm(void* p, size_t n); // delete[] - void* _Znwm(size_t n); // new - void* _Znam(size_t n); // new[] - void* _ZnwmRKSt9nothrow_t(size_t n, mi_nothrow_t tag); // new nothrow - void* _ZnamRKSt9nothrow_t(size_t n, mi_nothrow_t tag); // new[] nothrow - } + #endif + void _ZdlPv(void* p); // delete + void _ZdaPv(void* p); // delete[] + void _ZdlPvm(void* p, size_t n); // delete + void _ZdaPvm(void* p, size_t n); // delete[] + void* _Znwm(size_t n); // new + void* _Znam(size_t n); // new[] + void* _ZnwmRKSt9nothrow_t(size_t n, mi_nothrow_t tag); // new nothrow + void* _ZnamRKSt9nothrow_t(size_t n, mi_nothrow_t tag); // new[] nothrow + #ifdef __cplusplus + } + #endif __attribute__((used)) static struct mi_interpose_s _mi_cxx_interposes[] __attribute__((section("__DATA, __interpose"))) = { MI_INTERPOSE_FUN(_ZdlPv,mi_free), @@ -114,7 +117,6 @@ typedef struct mi_nothrow_s { int _tag; } mi_nothrow_t; MI_INTERPOSE_FUN(_ZnwmRKSt9nothrow_t,mi_new_nothrow), MI_INTERPOSE_FUN(_ZnamRKSt9nothrow_t,mi_new_nothrow), }; - #endif // __cplusplus #elif defined(_MSC_VER) // cannot override malloc unless using a dll. |