diff options
author | ed <ed@FreeBSD.org> | 2011-12-31 19:01:48 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2011-12-31 19:01:48 +0000 |
commit | 0ece074de9d070fa87b7f58f9e96bce63db862d8 (patch) | |
tree | 21b838383a703c249dd4f0180c8566c40f70e0e3 /contrib/compiler-rt/lib/int_util.c | |
parent | 55bd70ed9a164b6b2d84037c8362ff3725ff294b (diff) | |
parent | 6a5f9bc9ae3205be8bb5570b86a509fcd01a9db6 (diff) | |
download | FreeBSD-src-0ece074de9d070fa87b7f58f9e96bce63db862d8.zip FreeBSD-src-0ece074de9d070fa87b7f58f9e96bce63db862d8.tar.gz |
Upgrade libcompiler_rt to upstream revision 147390.
This version of libcompiler_rt adds support for __mulo[sdt]i4(), which
computes a multiply and its overflow flag. There are also a lot of
cleanup fixes to headers that don't really affect us.
Updating to this revision should make it a bit easier to contribute
changes back to the LLVM developers.
Diffstat (limited to 'contrib/compiler-rt/lib/int_util.c')
-rw-r--r-- | contrib/compiler-rt/lib/int_util.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/contrib/compiler-rt/lib/int_util.c b/contrib/compiler-rt/lib/int_util.c new file mode 100644 index 0000000..f194768 --- /dev/null +++ b/contrib/compiler-rt/lib/int_util.c @@ -0,0 +1,43 @@ +/* ===-- 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_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)); +__attribute__((visibility("hidden"))) +void compilerrt_abort_impl(const char *file, int line, const char *function) { + panic("%s:%d: abort in %s", file, line, function); +} + +#else + +/* 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(); +} + +#endif |