|
45 | 45 |
|
46 | 46 | */ |
47 | 47 |
|
48 | | -#define WEAK(x) __attribute__ ((weak, alias(#x))) |
49 | 48 | #ifndef __THROW |
50 | 49 | #define __THROW |
51 | 50 | #endif |
|
62 | 61 | #endif |
63 | 62 |
|
64 | 63 | #define ATTRIBUTE_EXPORT __attribute__((visibility("default"))) |
| 64 | +#define STRONG_ALIAS(target) __attribute__((alias(#target), visibility("default"))) |
65 | 65 |
|
66 | | -#define WEAK_REDEF1(type,fname,arg1) ATTRIBUTE_EXPORT type fname(arg1) __THROW WEAK(custom##fname) |
67 | | -#define WEAK_REDEF2(type,fname,arg1,arg2) ATTRIBUTE_EXPORT type fname(arg1,arg2) __THROW WEAK(custom##fname) |
68 | | -#define WEAK_REDEF2_NOTHROW(type,fname,arg1,arg2) ATTRIBUTE_EXPORT type fname(arg1,arg2) WEAK(custom##fname) |
69 | | -#define WEAK_REDEF3(type,fname,arg1,arg2,arg3) ATTRIBUTE_EXPORT type fname(arg1,arg2,arg3) __THROW WEAK(custom##fname) |
| 66 | + |
| 67 | +#define STRONG_REDEF1(type,fname,arg1) ATTRIBUTE_EXPORT type fname(arg1) __THROW STRONG_ALIAS(custom##fname) |
| 68 | +#define STRONG_REDEF2(type,fname,arg1,arg2) ATTRIBUTE_EXPORT type fname(arg1,arg2) __THROW STRONG_ALIAS(custom##fname) |
| 69 | +#define STRONG_REDEF3(type,fname,arg1,arg2,arg3) ATTRIBUTE_EXPORT type fname(arg1,arg2,arg3) __THROW STRONG_ALIAS(custom##fname) |
70 | 70 |
|
71 | 71 | extern "C" { |
72 | | - WEAK_REDEF1(void *, malloc, size_t); |
73 | | - WEAK_REDEF1(void, free, void *); |
74 | | - WEAK_REDEF1(void, cfree, void *); |
75 | | - WEAK_REDEF2(void *, calloc, size_t, size_t); |
76 | | - WEAK_REDEF2(void *, realloc, void *, size_t); |
77 | | - WEAK_REDEF3(void *, reallocarray, void *, size_t, size_t); |
78 | | - WEAK_REDEF2(void *, memalign, size_t, size_t); |
79 | | - WEAK_REDEF3(int, posix_memalign, void **, size_t, size_t); |
80 | | - WEAK_REDEF2(void *, aligned_alloc, size_t, size_t); |
81 | | - WEAK_REDEF1(size_t, malloc_usable_size, void *); |
| 72 | + STRONG_REDEF1(void *, malloc, size_t); |
| 73 | + STRONG_REDEF1(void, free, void *); |
| 74 | + STRONG_REDEF1(void, cfree, void *); |
| 75 | + STRONG_REDEF2(void *, calloc, size_t, size_t); |
| 76 | + STRONG_REDEF2(void *, realloc, void *, size_t); |
| 77 | + STRONG_REDEF3(void *, reallocarray, void *, size_t, size_t); |
| 78 | + STRONG_REDEF2(void *, memalign, size_t, size_t); |
| 79 | + STRONG_REDEF3(int, posix_memalign, void **, size_t, size_t); |
| 80 | + STRONG_REDEF2(void *, aligned_alloc, size_t, size_t); |
| 81 | + STRONG_REDEF1(size_t, malloc_usable_size, void *); |
82 | 82 | } |
83 | 83 |
|
84 | 84 | #include "wrapper.cpp" |
0 commit comments