summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/int_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/int_util.c')
-rw-r--r--compiler-rt/lib/int_util.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler-rt/lib/int_util.c b/compiler-rt/lib/int_util.c
index 2dc4d2ee926..f19476864b1 100644
--- a/compiler-rt/lib/int_util.c
+++ b/compiler-rt/lib/int_util.c
@@ -11,6 +11,16 @@
#include "int_util.h"
#include "int_lib.h"
+/* NOTE: The definitions in this file are declared weak because we clients to be
+ * able to arbitrarily package individual functions into separate .a files. If
+ * we did not declare these weak, some link situations might end up seeing
+ * duplicate strong definitions of the same symbol.
+ *
+ * We can't use this solution for kernel use (which may not support weak), but
+ * currently expect that when built for kernel use all the functionality is
+ * packaged into a single library.
+ */
+
#ifdef KERNEL_USE
extern void panic(const char *, ...) __attribute__((noreturn));
@@ -24,6 +34,7 @@ void compilerrt_abort_impl(const char *file, int line, const char *function) {
/* Get the system definition of abort() */
#include <stdlib.h>
+__attribute__((weak))
__attribute__((visibility("hidden")))
void compilerrt_abort_impl(const char *file, int line, const char *function) {
abort();
OpenPOWER on IntegriCloud