summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog42
-rw-r--r--Makeconfig13
-rw-r--r--math/math.h27
-rw-r--r--math/math_private.h8
-rwxr-xr-xscripts/config.sub9
-rw-r--r--string/endian.h6
-rw-r--r--sysdeps/arm/bits/endian.h3
-rw-r--r--sysdeps/arm/dl-machine.h8
-rw-r--r--sysdeps/libm-ieee754/e_atan2.c2
-rw-r--r--sysdeps/libm-ieee754/e_log.c5
-rw-r--r--sysdeps/libm-ieee754/s_trunc.c4
-rw-r--r--sysdeps/libm-ieee754/s_truncf.c4
-rw-r--r--sysdeps/mips/mul_1.S4
13 files changed, 112 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index fdebe7baf1..13ec054646 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+1998-09-03  Philip Blundell  <pb@nexus.co.uk> 
+ 
+	* sysdeps/arm/bits/endian.h (__FLOAT_WORD_ORDER): Define to big 
+	endian. 
+	* math/math_private.h: Use __FLOAT_WORD_ORDER rather than 
+	BYTE_ORDER. 
+	* string/endian.h: If __FLOAT_WORD_ORDER wasn't defined by 
+	<bits/endian.h>, make it the same as __BYTE_ORDER. 
+ 
+1998-11-27  Ulrich Drepper  <drepper@cygnus.com>
+
+	* math/math.h: Avoid using long double functions in generic macros
+	if __NO_LONG_DOUBLE_MATH.
+
+	* sysdeps/arm/dl-machine.h: Fix handling of weak undefined symbols
+	during bootstrapping.
+	* scripts/config.sub: Add Netwinder specific matches.
+	Patch by Scott Bambrough <scottb@corelcomputer.com>.
+
+1998-11-26  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de> 
+ 
+	* Makeconfig ($(common-objpfx)sysd-dirs): Use automatic variables 
+	if possible. 
+	($(common-objpfx)sysd-sorted): Likewise. 
+ 
+1998-11-27  Andreas Jaeger  <aj@arthur.rhein-neckar.de> 
+ 
+	* sysdeps/libm-ieee754/e_log.c (__ieee754_log): Add declaration of  
+	local variables t1,t2 only if needed. 
+ 
+	* sysdeps/libm-ieee754/e_atan2.c: Added braces to avoid compiler
+	warnings.
+	* sysdeps/libm-ieee754/s_truncf.c (__truncf): Likewise. 
+	* sysdeps/libm-ieee754/s_trunc.c (__trunc): Likewise. 
+ 
+	* sysdeps/mips/mul_1.S (Loop): Add closing comment to avoid 
+	warning. 
+ 
+1998-11-27  Andreas Jaeger  <aj@arthur.rhein-neckar.de> 
+ 
+	* math/math.h: Add brace to correct #if expression. 
+ 
 1998-11-26  Philip Blundell  <philb@gnu.org> 
  
 	Undo change of 1998-11-12: 
diff --git a/Makeconfig b/Makeconfig
index ac3834af50..962f702d55 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -779,23 +779,22 @@ $(common-objpfx)sysd-dirs: $(common-objpfx)config.make $(all-Subdirs-files)
 		END { printf "sysdep-subdirs =%s\n", subdirs;		\
 		      printf "sysdep-inhibit-subdirs =%s\n", inhibit;	\
 		      print "sysd-dirs-done = t" }'			\
-	       /dev/null $(all-Subdirs-files) > $@-tmp
+	       $(patsubst $<,/dev/null,$^) > $@-tmp
 	mv -f $@-tmp $@
 
 all-Depend-files = $(wildcard $(..)*/Depend)
 $(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \
 			     $(common-objpfx)sysd-dirs $(..)Makeconfig
-	(files="$(all-Depend-files)";					\
-	 for f in $$files; do						\
-	   dir=`echo $$f | sed 's@^$(..)\(.*\)/[^/]*$$@\1@'`;		\
+	(dirs='$(patsubst $(..)%/Depend,%,$(filter %/Depend, $^))';	\
+	 for d in $$dirs; do						\
 	   while read on; do						\
-	     echo "depend $$dir $$on";					\
-	   done < $$f;							\
+	     echo "depend $$d $$on";					\
+	   done < $$d/Depend;						\
 	 done;								\
 	 for f in $(all-subdirs); do					\
 	   echo $$f;							\
 	 done								\
-	) | $(AWK) -f $(..)scripts/gen-sorted.awk > $@-tmp
+	) | $(AWK) -f $< > $@-tmp
 	mv -f $@-tmp $@
 
 endif # Makeconfig not yet included
diff --git a/math/math.h b/math/math.h
index 42f32eef14..d95755f09a 100644
--- a/math/math.h
+++ b/math/math.h
@@ -83,7 +83,7 @@ __BEGIN_DECLS
 # undef	_Mdouble_
 # undef	__MATH_PRECNAME
 
-# if __STDC__ - 0 || __GNUC__ - 0 && !defined __NO_LONG_DOUBLE_MATH
+# if (__STDC__ - 0 || __GNUC__ - 0) && !defined __NO_LONG_DOUBLE_MATH
 /* Include the file of declarations again, this time using `long double'
    instead of `double' and appending l to each function name.  */
 
@@ -166,43 +166,68 @@ enum
   };
 
 /* Return number of classification appropriate for X.  */
+#ifdef __NO_LONG_DOUBLE_MATH
+# define fpclassify(x) \
+     (sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x))
+#else
 # define fpclassify(x) \
      (sizeof (x) == sizeof (float) ?					      \
         __fpclassifyf (x)						      \
       : sizeof (x) == sizeof (double) ?					      \
         __fpclassify (x) : __fpclassifyl (x))
+#endif
 
 /* Return nonzero value if sign of X is negative.  */
+#ifdef __NO_LONG_DOUBLE_MATH
+# define signbit(x) \
+     (sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x))
+#else
 # define signbit(x) \
      (sizeof (x) == sizeof (float) ?					      \
         __signbitf (x)							      \
       : sizeof (x) == sizeof (double) ?					      \
         __signbit (x) : __signbitl (x))
+#endif
 
 /* Return nonzero value if X is not +-Inf or NaN.  */
+#ifdef __NO_LONG_DOUBLE_MATH
+# define isfinite(x) \
+     (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x))
+#else
 # define isfinite(x) \
      (sizeof (x) == sizeof (float) ?					      \
         __finitef (x)							      \
       : sizeof (x) == sizeof (double) ?					      \
         __finite (x) : __finitel (x))
+#endif
 
 /* Return nonzero value if X is neither zero, subnormal, Inf, nor NaN.  */
 # define isnormal(x) (fpclassify (x) == FP_NORMAL)
 
 /* Return nonzero value if X is a NaN.  We could use `fpclassify' but
    we already have this functions `__isnan' and it is faster.  */
+#ifdef __NO_LONG_DOUBLE_MATH
+# define isnan(x) \
+     (sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x))
+#else
 # define isnan(x) \
      (sizeof (x) == sizeof (float) ?					      \
         __isnanf (x)							      \
       : sizeof (x) == sizeof (double) ?					      \
         __isnan (x) : __isnanl (x))
+#endif
 
 /* Return nonzero value is X is positive or negative infinity.  */
+#ifdef __NO_LONG_DOUBLE_MATH
+# define isinf(x) \
+     (sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x))
+#else
 # define isinf(x) \
      (sizeof (x) == sizeof (float) ?					      \
         __isinff (x)							      \
       : sizeof (x) == sizeof (double) ?					      \
         __isinf (x) : __isinfl (x))
+#endif
 
 #endif /* Use ISO C 9X.  */
 
diff --git a/math/math_private.h b/math/math_private.h
index 6d51930230..906b1dabba 100644
--- a/math/math_private.h
+++ b/math/math_private.h
@@ -34,7 +34,7 @@
 /* A union which permits us to convert between a double and two 32 bit
    ints.  */
 
-#if BYTE_ORDER == BIG_ENDIAN
+#if __FLOAT_WORD_ORDER == BIG_ENDIAN
 
 typedef union
 {
@@ -48,7 +48,7 @@ typedef union
 
 #endif
 
-#if BYTE_ORDER == LITTLE_ENDIAN
+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
 
 typedef union
 {
@@ -150,7 +150,7 @@ do {								\
 /* A union which permits us to convert between a long double and
    three 32 bit ints.  */
 
-#if BYTE_ORDER == BIG_ENDIAN
+#if __FLOAT_WORD_ORDER == BIG_ENDIAN
 
 typedef union
 {
@@ -166,7 +166,7 @@ typedef union
 
 #endif
 
-#if BYTE_ORDER == LITTLE_ENDIAN
+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
 
 typedef union
 {
diff --git a/scripts/config.sub b/scripts/config.sub
index 213a6d47d6..aac909889c 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -182,7 +182,7 @@ case $basic_machine in
 	      | sparc64-* | mips64-* | mipsel-* \
 	      | mips64el-* | mips64orion-* | mips64orionel-*  \
 	      | mipstx39-* | mipstx39el-* \
-	      | f301-*)
+	      | f301-* | armv*-*)
 		;;
 	# Recognize the various machine names and aliases which stand
 	# for a CPU type and a company and sometimes even an OS.
@@ -412,6 +412,10 @@ case $basic_machine in
 		basic_machine=i486-ncr
 		os=-sysv4
 		;;
+	netwinder) 
+		basic_machine=armv4l-ccc 
+		os=-linux 
+		;;
 	news | news700 | news800 | news900)
 		basic_machine=m68k-sony
 		os=-newsos
@@ -802,6 +806,9 @@ case $basic_machine in
 	*-acorn)
 		os=-riscix1.2
 		;;
+	arm*-ccc) 
+		os=-linux 
+		;;
 	arm*-semi)
 		os=-aout
 		;;
diff --git a/string/endian.h b/string/endian.h
index 03e802f6cb..109678aeaa 100644
--- a/string/endian.h
+++ b/string/endian.h
@@ -34,6 +34,12 @@
 /* This file defines `__BYTE_ORDER' for the particular machine.  */
 #include <bits/endian.h>
 
+/* Some machines may need to use a different endianness for floating point
+   values.  */
+#ifndef __FLOAT_WORD_ORDER
+# define __FLOAT_WORD_ORDER __BYTE_ORDER
+#endif
+
 #ifdef	__USE_BSD
 # define LITTLE_ENDIAN	__LITTLE_ENDIAN
 # define BIG_ENDIAN	__BIG_ENDIAN
diff --git a/sysdeps/arm/bits/endian.h b/sysdeps/arm/bits/endian.h
index ad3b5393bc..7fe486e89d 100644
--- a/sysdeps/arm/bits/endian.h
+++ b/sysdeps/arm/bits/endian.h
@@ -1,7 +1,8 @@
-/* ARM is little-endian.  */
+/* ARM is (usually) little-endian but with a big-endian FPU.  */
 
 #ifndef _ENDIAN_H
 # error "Never use <bits/endian.h> directly; include <endian.h> instead."
 #endif
 
 #define __BYTE_ORDER __LITTLE_ENDIAN
+#define __FLOAT_WORD_ORDER __BIG_ENDIAN
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
index 66ab4c6de2..53aa806ec2 100644
--- a/sysdeps/arm/dl-machine.h
+++ b/sysdeps/arm/dl-machine.h
@@ -416,7 +416,13 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
 	  break;
 	case R_ARM_GLOB_DAT:
 	case R_ARM_JUMP_SLOT:
-	  *reloc_addr = value;
+#ifdef RTLD_BOOTSTRAP 
+	  /* Fix weak undefined references.  */
+	  if (sym != NULL && sym->st_value == 0) 
+	    *reloc_addr = 0;
+	  else
+#endif
+	    *reloc_addr = value;
 	  break;
 	case R_ARM_ABS32:
 	  {
diff --git a/sysdeps/libm-ieee754/e_atan2.c b/sysdeps/libm-ieee754/e_atan2.c
index 4bf5f57086..ae7d759a9f 100644
--- a/sysdeps/libm-ieee754/e_atan2.c
+++ b/sysdeps/libm-ieee754/e_atan2.c
@@ -74,7 +74,7 @@ pi_lo   = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
 	if(((ix|((lx|-lx)>>31))>0x7ff00000)||
 	   ((iy|((ly|-ly)>>31))>0x7ff00000))	/* x or y is NaN */
 	   return x+y;
-	if((hx-0x3ff00000|lx)==0) return __atan(y);   /* x=1.0 */
+	if(((hx-0x3ff00000)|lx)==0) return __atan(y);   /* x=1.0 */
 	m = ((hy>>31)&1)|((hx>>30)&2);	/* 2*sign(x)+sign(y) */
 
     /* when y = 0 */
diff --git a/sysdeps/libm-ieee754/e_log.c b/sysdeps/libm-ieee754/e_log.c
index 5b8c7b3ade..38ea069c46 100644
--- a/sysdeps/libm-ieee754/e_log.c
+++ b/sysdeps/libm-ieee754/e_log.c
@@ -103,7 +103,10 @@ static double zero   =  0.0;
 	double x;
 #endif
 {
-	double hfsq,f,s,z,R,w,t1,t2,dk,t11,t12,t21,t22,w2,zw2;
+	double hfsq,f,s,z,R,w,dk,t11,t12,t21,t22,w2,zw2;
+#ifdef DO_NOT_USE_THIS
+	double t1,t2;
+#endif
 	int32_t k,hx,i,j;
 	u_int32_t lx;
 
diff --git a/sysdeps/libm-ieee754/s_trunc.c b/sysdeps/libm-ieee754/s_trunc.c
index 721dce5a55..07b4951bcb 100644
--- a/sysdeps/libm-ieee754/s_trunc.c
+++ b/sysdeps/libm-ieee754/s_trunc.c
@@ -1,5 +1,5 @@
 /* Truncate argument to nearest integral value not larger than the argument.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -39,7 +39,7 @@ __trunc (double x)
 	/* The magnitude of the number is < 1 so the result is +-0.  */
 	INSERT_WORDS (x, sx, 0);
       else
-	INSERT_WORDS (x, sx | i0 & ~(0x000fffff >> j0), 0);
+	INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> j0)), 0);
     }
   else if (j0 > 51)
     {
diff --git a/sysdeps/libm-ieee754/s_truncf.c b/sysdeps/libm-ieee754/s_truncf.c
index 3e7b133c37..feb6b6f23a 100644
--- a/sysdeps/libm-ieee754/s_truncf.c
+++ b/sysdeps/libm-ieee754/s_truncf.c
@@ -1,5 +1,5 @@
 /* Truncate argument to nearest integral value not larger than the argument.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -38,7 +38,7 @@ __truncf (float x)
 	/* The magnitude of the number is < 1 so the result is +-0.  */
 	SET_FLOAT_WORD (x, sx);
       else
-	SET_FLOAT_WORD (x, sx | i0 & ~(0x007fffff >> j0));
+	SET_FLOAT_WORD (x, sx | (i0 & ~(0x007fffff >> j0)));
     }
   else
     {
diff --git a/sysdeps/mips/mul_1.S b/sysdeps/mips/mul_1.S
index 184aae6fa1..aeaf083d89 100644
--- a/sysdeps/mips/mul_1.S
+++ b/sysdeps/mips/mul_1.S
@@ -1,7 +1,7 @@
 /* MIPS __mpn_mul_1 -- Multiply a limb vector with a single limb and
 store the product in a second limb vector.
 
-Copyright (C) 1995 Free Software Foundation, Inc.
+Copyright (C) 1995, 1998 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -74,7 +74,7 @@ $LC1:	mflo	$10
 	multu	$8,$7
 	sw	$10,0($4)
 	addiu	$4,$4,4
-	addu	$2,$9,$2	/* add high product limb and carry from addition
+	addu	$2,$9,$2	/* add high product limb and carry from addition */
 
 	/* cool down phase 0 */
 $LC0:	mflo	$10