]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fixincludes (str{len,spn,cspn} return value): Handle different layout on sysV88.
authorManfred Hollstein <manfred@s-direktnet.de>
Fri, 12 Dec 1997 06:53:30 +0000 (06:53 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 12 Dec 1997 06:53:30 +0000 (23:53 -0700)
        * fixincludes (str{len,spn,cspn} return value): Handle different
        layout on sysV88.
        (hypot): Provide a fake for hypot which is broken on
        m88k-motorola-sysv3.

From-SVN: r17062

gcc/ChangeLog
gcc/fixincludes

index c6e8e20e998c2debb5f7f727fc2030588720ffe7..e88615fe11de1db95f6794bd2263c55534654ae1 100644 (file)
@@ -1,3 +1,10 @@
+Thu Dec 11 23:55:17 1997  Manfred Hollstein  <manfred@s-direktnet.de>
+
+       * fixincludes (str{len,spn,cspn} return value): Handle different
+       layout on sysV88.
+       (hypot): Provide a fake for hypot which is broken on 
+       m88k-motorola-sysv3.
+
 Thu Dec 11 23:50:17 1997  John F. Carr  <jfc@mit.edu>
 
        * tree.c, tree.h: Change tree_code_type, tree_code_length, and
index 89c9f71741765a1db6aa4ec94fd62c1560d4d23c..80032e624d6eddce14d70fca80c43481ee392d13 100755 (executable)
@@ -12,6 +12,14 @@ INPUT=${2-${INPUT-/usr/include}}
 # Directory in which to store the results.
 LIB=${1?"fixincludes: output directory not specified"}
 
+# Define what target system we're fixing.
+if test -r ./Makefile; then
+       target_canonical="`sed -n -e 's,^target[        ]*=[    ]*\(.*\)$,\1,p' < Makefile`"
+       test -z "${target_canonical}" && target_canonical=unknown
+else
+       target_canonical=unknown
+fi
+
 # Define PWDCMD as a command to use to get the working dir
 # in the form that we want.
 PWDCMD=pwd
@@ -1983,6 +1991,7 @@ fi
 # Correct the return type for strlen in string.h on Lynx.
 # Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0.
 # Add missing const for strdup on OSF/1 V3.0.
+# On sysV88 layout is slightly different.
 file=string.h
 if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
@@ -2001,6 +2010,8 @@ if [ -r ${LIB}/$file ]; then
       -e 's/^\(        strncmp()\),\n\(        strlen(),\)$/\1;\
 extern unsigned int\
 \2/'\
+      -e '/^extern int$/N'\
+      -e 's/^extern int\(\n    strlen(),\)/extern size_t\1/' \
     ${LIB}/$file > ${LIB}/${file}.sed
   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
@@ -2286,6 +2297,41 @@ do
   fi
 done
 
+# libm.a on m88k-motorola-sysv3 contains a stupid optimization for function
+# hypot(), which returns the second argument without even looking at its value
+# if the other is 0.0
+file=math.h
+if [ $target_canonical = m88k-motorola-sysv3 ]; then
+  if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
+    cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
+    chmod +w ${LIB}/$file 2>/dev/null
+    chmod a+r ${LIB}/$file 2>/dev/null
+  fi
+
+  if [ -r ${LIB}/$file ]; then
+    echo Fixing $file, hypot definition
+    sed -e '/^extern double hypot();$/a\
+\/* Workaround a stupid Motorola optimization if one\
+   of x or y is 0.0 and the other is negative!  *\/\
+#ifdef __STDC__\
+static __inline__ double fake_hypot (double x, double y)\
+#else\
+static __inline__ double fake_hypot (x, y)\
+       double x, y;\
+#endif\
+{\
+       return fabs (hypot (x, y));\
+}\
+#define hypot  fake_hypot
+' \
+      ${LIB}/$file > ${LIB}/${file}.sed
+    rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
+    if cmp $file ${LIB}/$file >/dev/null 2>&1; then
+      rm -f ${LIB}/$file
+    fi
+  fi
+fi
+
 # math.h on SunOS 4 puts the declaration of matherr before the definition
 # of struct exception, so the prototype (added by fixproto) causes havoc.
 file=math.h