about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--stdlib/tst-strtod.c17
-rw-r--r--sysdeps/libm-i387/e_scalb.S4
-rw-r--r--sysdeps/libm-i387/e_scalbf.S4
-rw-r--r--sysdeps/libm-i387/e_scalbl.S4
5 files changed, 28 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index db3e8d7dee..42651f50cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+1998-06-18 12:29  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/libm-i387/e_scalb.S: Fix bug in FPU stack handling.
+	* sysdeps/libm-i387/e_scalbf.S: Likewise.
+	* sysdeps/libm-i387/e_scalbl.S: Likewise.
+
+1998-06-18  Ulrich Drepper  <drepper@cygnus.com>
+
+	* stdlib/tst-strtod.c (long_dbl): Provide receipe to regenerate
+	longestdbl.
+
 1998-06-18 10:26  Ulrich Drepper  <drepper@cygnus.com>
 
 	* iconvdata/Makefile (modules): Add MACINTOSH.
diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c
index e2c6734e56..b9158c11f9 100644
--- a/stdlib/tst-strtod.c
+++ b/stdlib/tst-strtod.c
@@ -114,12 +114,17 @@ expand (dst, c)
 static int
 long_dbl (void)
 {
-  const char longestdbl[] =
-    "179769313486231570814527423731704356798070567525844996598917476"
-    "803157260780028538760589558632766878171540458953514382464234321"
-    "326889464182768467546703537516986049910576551282076245490090389"
-    "328944075868508455133942304583236903222948165808559332123348274"
-    "797826204144723168738177180919299881250404026184124858368";
+  /* Regenerate this string using
+
+     echo '(2^53-1)*2^(1024-53)' | bc | sed 's/\([^\]*\)\\*$/    "\1"/'
+
+  */
+  static const char longestdbl[] =
+    "17976931348623157081452742373170435679807056752584499659891747680315"
+    "72607800285387605895586327668781715404589535143824642343213268894641"
+    "82768467546703537516986049910576551282076245490090389328944075868508"
+    "45513394230458323690322294816580855933212334827479782620414472316873"
+    "8177180919299881250404026184124858368";
   double d = strtod (longestdbl, NULL);
 
   printf ("strtod (\"%s\", NULL) = %g\n", longestdbl, d);
diff --git a/sysdeps/libm-i387/e_scalb.S b/sysdeps/libm-i387/e_scalb.S
index b4c23ca595..7ff5541e2f 100644
--- a/sysdeps/libm-i387/e_scalb.S
+++ b/sysdeps/libm-i387/e_scalb.S
@@ -71,10 +71,10 @@ ENTRY(__ieee754_scalb)
 	fnstsw
 	movl	8(%esp), %edx
 	shrl	$5, %eax
-	fstp	%st(1)
+	fstp	%st
+	fstp	%st
 	andl	$0x80000000, %edx
 	andl	$8, %eax
-	fstp	%st(1)
 	shrl	$27, %edx
 	addl	%edx, %eax
 	fldl	MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/libm-i387/e_scalbf.S b/sysdeps/libm-i387/e_scalbf.S
index c869da9b38..4222eecc97 100644
--- a/sysdeps/libm-i387/e_scalbf.S
+++ b/sysdeps/libm-i387/e_scalbf.S
@@ -73,10 +73,10 @@ ENTRY(__ieee754_scalbf)
 	fnstsw
 	movl	4(%esp), %edx
 	shrl	$5, %eax
-	fstp	%st(1)
+	fstp	%st
+	fstp	%st
 	andl	$0x80000000, %edx
 	andl	$8, %eax
-	fstp	%st(1)
 	shrl	$27, %edx
 	addl	%edx, %eax
 	fldl	MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/libm-i387/e_scalbl.S b/sysdeps/libm-i387/e_scalbl.S
index 33eb7323dc..56cc833a56 100644
--- a/sysdeps/libm-i387/e_scalbl.S
+++ b/sysdeps/libm-i387/e_scalbl.S
@@ -73,10 +73,10 @@ ENTRY(__ieee754_scalbl)
 	fnstsw
 	movl	12(%esp), %edx
 	shrl	$5, %eax
-	fstp	%st(1)
+	fstp	%st
+	fstp	%st
 	andl	$0x8000, %edx
 	andl	$8, %eax
-	fstp	%st(1)
 	shrl	$11, %edx
 	addl	%edx, %eax
 	fldl	MOX(zero_nan, %eax, 1)