@@ -125,15 +125,13 @@ void NORETURN CheckFailed(const char *file, int, const char *cond, u64, u64) {
125125} // namespace __sanitizer
126126#endif
127127
128- #define INTERFACE extern " C" __attribute__((visibility(" default" )))
129-
130128#define HANDLER_RECOVER (name, kind ) \
131- INTERFACE void __ubsan_handle_##name##_minimal( ) { \
129+ SANITIZER_INTERFACE_WEAK_DEF ( void , __ubsan_handle_##name##_minimal) { \
132130 __ubsan_report_error (kind, GET_CALLER_PC (), nullptr ); \
133131 }
134132
135133#define HANDLER_NORECOVER (name, kind ) \
136- INTERFACE void __ubsan_handle_##name##_minimal_abort( ) { \
134+ SANITIZER_INTERFACE_WEAK_DEF ( void , __ubsan_handle_##name##_minimal_abort) { \
137135 uintptr_t caller = GET_CALLER_PC (); \
138136 __ubsan_report_error_fatal (kind, caller, nullptr ); \
139137 abort_with_message (kind, caller, nullptr ); \
@@ -144,13 +142,14 @@ void NORETURN CheckFailed(const char *file, int, const char *cond, u64, u64) {
144142 HANDLER_NORECOVER(name, kind)
145143
146144#define HANDLER_RECOVER_PTR (name, kind ) \
147- INTERFACE void __ubsan_handle_##name##_minimal(const uintptr_t address) { \
145+ SANITIZER_INTERFACE_WEAK_DEF (void , __ubsan_handle_##name##_minimal, \
146+ const uintptr_t address) { \
148147 __ubsan_report_error (kind, GET_CALLER_PC (), &address); \
149148 }
150149
151150#define HANDLER_NORECOVER_PTR (name, kind ) \
152- INTERFACE void __ubsan_handle_##name##_minimal_abort( \
153- const uintptr_t address) { \
151+ SANITIZER_INTERFACE_WEAK_DEF ( void , __ubsan_handle_##name##_minimal_abort, \
152+ const uintptr_t address) { \
154153 uintptr_t caller = GET_CALLER_PC (); \
155154 __ubsan_report_error_fatal (kind, caller, &address); \
156155 abort_with_message (kind, caller, &address); \
0 commit comments