[compiler-rt] r217322 - builtins: add AEABI div0 functions
Saleem Abdulrasool
compnerd at compnerd.org
Sat Sep 6 14:34:02 PDT 2014
Author: compnerd
Date: Sat Sep 6 16:34:02 2014
New Revision: 217322
URL: http://llvm.org/viewvc/llvm-project?rev=217322&view=rev
Log:
builtins: add AEABI div0 functions
Add the missing AEABI functions that are part of the base platform ABI
specification. The provided implementation does the bare minimum to avoid
requiring libc headers. This permits the use of compiler-rt on bare-metal
environments which conform to EABI.
Added:
compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c
Modified:
compiler-rt/trunk/lib/builtins/CMakeLists.txt
Modified: compiler-rt/trunk/lib/builtins/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/CMakeLists.txt?rev=217322&r1=217321&r2=217322&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/builtins/CMakeLists.txt Sat Sep 6 16:34:02 2014
@@ -167,6 +167,7 @@ set(arm_SOURCES
arm/adddf3vfp.S
arm/addsf3vfp.S
arm/aeabi_dcmp.S
+ arm/aeabi_div0.c
arm/aeabi_fcmp.S
arm/aeabi_idivmod.S
arm/aeabi_ldivmod.S
Added: compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c?rev=217322&view=auto
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c (added)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c Sat Sep 6 16:34:02 2014
@@ -0,0 +1,43 @@
+/* ===-- aeabi_div0.c - ARM Runtime ABI support routines for compiler-rt ---===
+ *
+ * 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.
+ *
+ * ===----------------------------------------------------------------------===
+ *
+ * This file implements the division by zero helper routines as specified by the
+ * Run-time ABI for the ARM Architecture.
+ *
+ * ===----------------------------------------------------------------------===
+ */
+
+/*
+ * §4.3.2 - Division by zero
+ *
+ * The *div0 functions:
+ * - Return the value passed to them as a parameter
+ * - Or, return a fixed value defined by the execution environment (such as 0)
+ * - Or, raise a signal (often SIGFPE) or throw an exception, and do not return
+ *
+ * An application may provide its own implementations of the *div0 functions to
+ * for a particular behaviour from the *div and *divmod functions called out of
+ * line.
+ */
+
+/* provide an unused declaration to pacify pendantic compilation */
+extern unsigned char declaration;
+
+#if defined(__ARM_EABI__)
+int __attribute__((weak)) __attribute__((visibility("hidden")))
+__aeabi_idiv0(int return_value) {
+ return return_value;
+}
+
+long long __attribute__((weak)) __attribute__((visibility("hidden")))
+__aeabi_ldiv0(long long return_value) {
+ return return_value;
+}
+#endif
+
More information about the llvm-commits
mailing list