summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/sparc
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-10-15 19:34:04 -0400
committerMike Frysinger <vapier@gentoo.org>2009-10-15 19:34:04 -0400
commit3729a87541cdc87e5d1de09f49f39c0eec83a89f (patch)
treed4a26eb81c8d5a6e9ca5e577e940a7af0d8d6b7b /libc/sysdeps/linux/sparc
parent4ea04a14a4cfc195512fd9713c5e2f40a22c5cca (diff)
sparc qops: unify & shrink
We don't really need to know the exact symbol that caused a failure as long as we know where to start looking. So unify the duplicate code between all funcs and between the sparc variants. This gives us a nice code shrink of ~95%. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'libc/sysdeps/linux/sparc')
-rw-r--r--libc/sysdeps/linux/sparc/qp_ops.c91
1 files changed, 40 insertions, 51 deletions
diff --git a/libc/sysdeps/linux/sparc/qp_ops.c b/libc/sysdeps/linux/sparc/qp_ops.c
index 3137736b4..5b0dc5e87 100644
--- a/libc/sysdeps/linux/sparc/qp_ops.c
+++ b/libc/sysdeps/linux/sparc/qp_ops.c
@@ -1,58 +1,47 @@
/* XXX add ops from glibc sysdeps/sparc/sparc64/soft-fp */
-#define fakedef(name) \
- void name(void) \
- { \
- printf("Unimplemented %s called, exiting\n", #name); \
- exit(-1); \
- }
+#include <stdio.h>
+#include <stdlib.h>
+
+static void fakedef(void)
+{
+ puts("Unimplemented _Q* func called, exiting\n");
+ exit(-1);
+}
#ifdef __sparc_v9__
-fakedef(_Qp_fne)
-fakedef(_Qp_feq)
-fakedef(_Qp_div)
-fakedef(_Qp_flt)
-fakedef(_Qp_fgt)
-fakedef(_Qp_mul)
-fakedef(_Qp_fge)
-fakedef(_Qp_qtoux)
-fakedef(_Qp_uxtoq)
-fakedef(_Qp_sub)
-fakedef(_Qp_dtoq)
-fakedef(_Qp_qtod)
-fakedef(_Qp_qtos)
-fakedef(_Qp_stoq)
-fakedef(_Qp_itoq)
-fakedef(_Qp_add)
+# define fakedef(sym) strong_alias(fakedef, _Qp_##sym)
#else
-fakedef(_Q_fne)
-fakedef(_Q_feq)
-fakedef(_Q_div)
-fakedef(_Q_flt)
-fakedef(_Q_fgt)
-fakedef(_Q_mul)
-fakedef(_Q_fge)
-fakedef(_Q_qtoux)
-fakedef(_Q_uxtoq)
-fakedef(_Q_qtou)
-fakedef(_Q_utoq)
-fakedef(_Q_sub)
-fakedef(_Q_dtoq)
-fakedef(_Q_qtod)
-fakedef(_Q_qtos)
-fakedef(_Q_stoq)
-fakedef(_Q_itoq)
-fakedef(_Q_add)
-fakedef(_Q_cmp)
-fakedef(_Q_cmpe)
-fakedef(_Q_fle)
-fakedef(_Q_lltoq)
-fakedef(_Q_neg)
-fakedef(_Q_qtoi)
-fakedef(_Q_qtoll)
-fakedef(_Q_qtoull)
-fakedef(_Q_sqrt)
-fakedef(_Q_ulltoq)
+# define fakedef(sym) strong_alias(fakedef, _Q_##sym)
#endif
-#undef fakedef
+fakedef(fne)
+fakedef(feq)
+fakedef(div)
+fakedef(flt)
+fakedef(fgt)
+fakedef(mul)
+fakedef(fge)
+fakedef(qtoux)
+fakedef(uxtoq)
+fakedef(sub)
+fakedef(dtoq)
+fakedef(qtod)
+fakedef(qtos)
+fakedef(stoq)
+fakedef(itoq)
+fakedef(add)
+#ifndef __sparc_v9__
+fakedef(qtou)
+fakedef(utoq)
+fakedef(cmp)
+fakedef(cmpe)
+fakedef(fle)
+fakedef(lltoq)
+fakedef(neg)
+fakedef(qtoi)
+fakedef(qtoll)
+fakedef(qtoull)
+fakedef(sqrt)
+fakedef(ulltoq)
+#endif