12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /* ===-- int_util.c - Implement internal utilities --------------------------===
- *
- * The LLVM Compiler Infrastructure
- *
- * This file is dual licensed under the MIT and the University of Illinois Open
- * Source Licenses. See LICENSE.TXT for details.
- *
- * ===----------------------------------------------------------------------===
- */
- #include "int_lib.h"
- #include "int_util.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
- NORETURN extern void panic(const char *, ...);
- #ifndef _WIN32
- __attribute__((visibility("hidden")))
- #endif
- void compilerrt_abort_impl(const char *file, int line, const char *function) {
- panic("%s:%d: abort in %s", file, line, function);
- }
- #elif __APPLE__
- /* from libSystem.dylib */
- NORETURN extern void __assert_rtn(const char *func, const char *file, int line,
- const char *message);
- #ifndef _WIN32
- __attribute__((weak))
- __attribute__((visibility("hidden")))
- #endif
- void compilerrt_abort_impl(const char *file, int line, const char *function) {
- __assert_rtn(function, file, line, "libcompiler_rt abort");
- }
- #else
- /* Get the system definition of abort() */
- #include <stdlib.h>
- #ifndef _WIN32
- __attribute__((weak))
- __attribute__((visibility("hidden")))
- #endif
- void compilerrt_abort_impl(const char *file, int line, const char *function) {
- abort();
- }
- #endif
|