aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArvind Sankar <[email protected]>2020-06-17 16:02:34 -0400
committerBrian Behlendorf <[email protected]>2020-06-18 12:21:46 -0700
commitc0673571d03a51d9ac014ecb8cbb7a6ca9dee384 (patch)
tree2b01ddaac134dc07cecdfb6324dc8b757961a860
parenteebba5d8f486fd069e9fccd9e653894a7d635cdd (diff)
Switch off -Wmissing-prototypes for libgcc math functions
spl-generic.c defines some of the libgcc integer library functions on 32-bit. Don't bother checking -Wmissing-prototypes since nothing should directly call these functions from C code. Reviewed-by: Ryan Moeller <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Arvind Sankar <[email protected]> Closes #10470
-rw-r--r--module/lua/lvm.c28
-rw-r--r--module/os/linux/spl/spl-generic.c32
2 files changed, 32 insertions, 28 deletions
diff --git a/module/lua/lvm.c b/module/lua/lvm.c
index bde1d30bc..4685be52b 100644
--- a/module/lua/lvm.c
+++ b/module/lua/lvm.c
@@ -929,32 +929,4 @@ void luaV_execute (lua_State *L) {
}
}
-/*
- * this can live in SPL
- */
-#if BITS_PER_LONG == 32
-#if defined(_KERNEL) && !defined(SPL_HAS_MODDI3)
-extern uint64_t __umoddi3(uint64_t dividend, uint64_t divisor);
-
-/* 64-bit signed modulo for 32-bit machines. */
-int64_t
-__moddi3(int64_t n, int64_t d)
-{
- int64_t q;
- boolean_t nn = B_FALSE;
-
- if (n < 0) {
- nn = B_TRUE;
- n = -n;
- }
- if (d < 0)
- d = -d;
-
- q = __umoddi3(n, d);
-
- return (nn ? -q : q);
-}
-EXPORT_SYMBOL(__moddi3);
-#endif
-#endif
/* END CSTYLED */
diff --git a/module/os/linux/spl/spl-generic.c b/module/os/linux/spl/spl-generic.c
index aa74f6042..820fb86c3 100644
--- a/module/os/linux/spl/spl-generic.c
+++ b/module/os/linux/spl/spl-generic.c
@@ -173,6 +173,7 @@ random_get_pseudo_bytes(uint8_t *ptr, size_t len)
EXPORT_SYMBOL(random_get_pseudo_bytes);
#if BITS_PER_LONG == 32
+
/*
* Support 64/64 => 64 division on a 32-bit platform. While the kernel
* provides a div64_u64() function for this we do not use it because the
@@ -220,6 +221,14 @@ __div_u64(uint64_t u, uint32_t v)
}
/*
+ * Turn off missing prototypes warning for these functions. They are
+ * replacements for libgcc-provided functions and will never be called
+ * directly.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmissing-prototypes"
+
+/*
* Implementation of 64-bit unsigned division for 32-bit machines.
*
* First the procedure takes care of the case in which the divisor is a
@@ -294,6 +303,26 @@ __umoddi3(uint64_t dividend, uint64_t divisor)
}
EXPORT_SYMBOL(__umoddi3);
+/* 64-bit signed modulo for 32-bit machines. */
+int64_t
+__moddi3(int64_t n, int64_t d)
+{
+ int64_t q;
+ boolean_t nn = B_FALSE;
+
+ if (n < 0) {
+ nn = B_TRUE;
+ n = -n;
+ }
+ if (d < 0)
+ d = -d;
+
+ q = __umoddi3(n, d);
+
+ return (nn ? -q : q);
+}
+EXPORT_SYMBOL(__moddi3);
+
/*
* Implementation of 64-bit unsigned division/modulo for 32-bit machines.
*/
@@ -397,6 +426,9 @@ __aeabi_ldivmod(int64_t u, int64_t v)
}
EXPORT_SYMBOL(__aeabi_ldivmod);
#endif /* __arm || __arm__ */
+
+#pragma GCC diagnostic pop
+
#endif /* BITS_PER_LONG */
/*