summaryrefslogtreecommitdiff
path: root/soft-fp/op-2.h
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-03-12 18:43:21 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-03-12 18:43:21 +0000
commit7d67a196b6548562070ac11fc673c0d3d263d846 (patch)
tree34b3481a8038d6756a4a652951847cb04a2b78dd /soft-fp/op-2.h
parentaf85ebcdf7a754d3d3d3d26ba8250ab58310f535 (diff)
downloadglibc-7d67a196b6548562070ac11fc673c0d3d263d846.tar.gz
soft-fp: Define and use _FP_STATIC_ASSERT.
This patch makes soft-fp use static assertions in place of conditional calls to abort, in places where there are checks for conditions (on the types for which a macro is used) that the code is not prepared to handle. The fallback definition of _FP_STATIC_ASSERT (for kernel use only, as only relevant to compilers not supported for building glibc) is as in misc/sys/cdefs.h. This means that soft-fp only ever calls abort for _FP_UNREACHABLE calls in builds with GCC versions before 4.5. Thus, there is no need for an abort declaration or <stdlib.h> include, since the kernel code handles defining abort as a macro itself - and so this avoids any need for an __KERNEL__ condition on the abort declaration to avoid it breaking with the kernel's macro definition. That is, this patch is intended to make glibc's soft-fp code suitable for kernel use with no kernel-local changes to the soft-fp code needed at all. Tested for powerpc-nofpu that installed stripped shared libraries are unchanged by the patch. One explicit <stdlib.h> include had to be added to a file that was relying on the include from soft-fp.h. * soft-fp/soft-fp.h (_FP_STATIC_ASSERT): New macro. [_LIBC]: Do not include <stdlib.h>. [!_LIBC] (abort): Remove declaration. * soft-fp/op-2.h (_FP_MUL_MEAT_2_120_240_double): Use _FP_STATIC_ASSERT instead of conditionally calling abort. * soft-fp/op-common.h (_FP_FROM_INT): Likewise. (_FP_EXTEND_CNAN): Likewise. (FP_TRUNC): Likewise. (__FP_CLZ): Likewise. * sysdeps/powerpc/nofpu/flt-rounds.c: Include <stdlib.h>.
Diffstat (limited to 'soft-fp/op-2.h')
-rw-r--r--soft-fp/op-2.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/soft-fp/op-2.h b/soft-fp/op-2.h
index c27b890c98..a51eb6b35d 100644
--- a/soft-fp/op-2.h
+++ b/soft-fp/op-2.h
@@ -458,8 +458,8 @@
_p240, _q240, _r240, _s240; \
UDItype _t240, _u240, _v240, _w240, _x240, _y240 = 0; \
\
- if ((wfracbits) < 106 || (wfracbits) > 120) \
- abort (); \
+ _FP_STATIC_ASSERT ((wfracbits) >= 106 && (wfracbits) <= 120, \
+ "wfracbits out of range"); \
\
setfetz; \
\