From 33fb411a47d7f44841aefb13a538901bd3e41715 Mon Sep 17 00:00:00 2001 From: "\"Jan-Benedict Glaw\"" Date: Thu, 26 Jan 2006 20:50:21 +0000 Subject: Allow for targets that don't know about signed zero floats. --- libc/stdio/_fpmaxtostr.c | 4 +- .../linux/alpha/bits/uClibc_arch_features.h | 3 ++ libc/sysdeps/linux/arm/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/bfin/bits/uClibc_arch_features.h | 3 ++ .../linux/common/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/cris/bits/uClibc_arch_features.h | 3 ++ libc/sysdeps/linux/e1/bits/uClibc_arch_features.h | 3 ++ libc/sysdeps/linux/frv/bits/uClibc_arch_features.h | 3 ++ .../linux/h8300/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/hppa/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/i386/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/i960/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/m68k/bits/uClibc_arch_features.h | 3 ++ .../linux/microblaze/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/mips/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/nios/bits/uClibc_arch_features.h | 3 ++ .../linux/nios2/bits/uClibc_arch_features.h | 3 ++ .../linux/powerpc/bits/uClibc_arch_features.h | 3 ++ libc/sysdeps/linux/sh/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/sh64/bits/uClibc_arch_features.h | 3 ++ .../linux/sparc/bits/uClibc_arch_features.h | 3 ++ .../sysdeps/linux/v850/bits/uClibc_arch_features.h | 3 ++ libc/sysdeps/linux/vax/bits/uClibc_arch_features.h | 44 ++++++++++++++++++++++ .../linux/x86_64/bits/uClibc_arch_features.h | 3 ++ 24 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 libc/sysdeps/linux/vax/bits/uClibc_arch_features.h diff --git a/libc/stdio/_fpmaxtostr.c b/libc/stdio/_fpmaxtostr.c index 8534677f0..859d11a54 100644 --- a/libc/stdio/_fpmaxtostr.c +++ b/libc/stdio/_fpmaxtostr.c @@ -280,11 +280,11 @@ ssize_t attribute_hidden _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info } if (x == 0) { /* Handle 0 now to avoid false positive. */ -#if 1 +#ifdef __UCLIBC_HAVE_SIGNED_ZERO__ if (zeroisnegative(x)) { /* Handle 'signed' zero. */ *sign_str = '-'; } -#endif +#endif /* __UCLIBC_HAVE_SIGNED_ZERO__ */ exp = -1; goto GENERATE_DIGITS; } diff --git a/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h b/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h index 7129843a0..c48bd574d 100644 --- a/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h index ccc85ecbf..93b523f0d 100644 --- a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h b/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h index 107acb63b..ff0e20fad 100644 --- a/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/common/bits/uClibc_arch_features.h b/libc/sysdeps/linux/common/bits/uClibc_arch_features.h index 631f855f1..6780a9dd6 100644 --- a/libc/sysdeps/linux/common/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/common/bits/uClibc_arch_features.h @@ -38,4 +38,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h b/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h index b349e6eaa..befbf2b6d 100644 --- a/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h b/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h index 107acb63b..ff0e20fad 100644 --- a/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h b/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h index 107acb63b..ff0e20fad 100644 --- a/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h b/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h index 5b15bd326..c424d9bb6 100644 --- a/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h b/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h index d0498de05..bf048d3b8 100644 --- a/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h b/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h index c1aefd9d5..44ec3efd0 100644 --- a/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h @@ -35,6 +35,9 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #define internal_function __attribute__ ((regparm (3), stdcall)) #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h b/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h index 06e2e014c..eef651eeb 100644 --- a/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h b/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h index 5c2ea7387..4ad5fd6cf 100644 --- a/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h @@ -39,4 +39,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h b/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h index 50be765d8..1b40e32a2 100644 --- a/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h b/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h index 49dcb34c4..46b3bbb19 100644 --- a/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h b/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h index 107acb63b..ff0e20fad 100644 --- a/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h b/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h index 107acb63b..ff0e20fad 100644 --- a/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h b/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h index 417494874..e2505ae04 100644 --- a/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h b/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h index 2d4cade7a..350457979 100644 --- a/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h @@ -39,4 +39,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h b/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h index a604c0ce0..55cd44c1f 100644 --- a/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h b/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h index d643a8286..2cf505256 100644 --- a/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h b/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h index 50be765d8..1b40e32a2 100644 --- a/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h @@ -36,4 +36,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h b/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h new file mode 100644 index 000000000..2caf624d3 --- /dev/null +++ b/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h @@ -0,0 +1,44 @@ +#ifndef _BITS_UCLIBC_ARCH_FEATURES_H +#define _BITS_UCLIBC_ARCH_FEATURES_H + +/* + * + * Track misc arch-specific features that aren't config options + * + */ + + +/* instruction used when calling abort() to kill yourself */ +#undef __UCLIBC_ABORT_INSTRUCTION__ "halt" + +/* can your target use syscall6() for mmap ? */ +#define __UCLIBC_MMAP_HAS_6_ARGS__ + +/* does your target use syscall4() for truncate64 ? (32bit arches only) */ +#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__ + +/* does your target have a broken create_module() ? */ +#undef __UCLIBC_BROKEN_CREATE_MODULE__ + +/* does your target prefix all symbols with an _ ? */ +#define __UCLIBC_NO_UNDERSCORES__ + +/* does your target have an asm .set ? */ +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__ + +/* define if target doesn't like .global */ +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__ + +/* define if target supports .weak */ +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__ + +/* define if target supports .weakext */ +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__ + +/* needed probably only for ppc64 */ +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ + +/* define if target supports IEEE signed zero floats */ +#undef __UCLIBC_HAVE_SIGNED_ZERO__ + +#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ diff --git a/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h b/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h index 0f0f01ea3..03d8125e0 100644 --- a/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h +++ b/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h @@ -35,4 +35,7 @@ /* needed probably only for ppc64 */ #undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ -- cgit v1.2.3