* egcs-971031: results on m88k-motorola-sysv3 haifa enabled @ 1997-11-04 23:44 manfred 1997-11-05 5:23 ` [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 manfred 0 siblings, 1 reply; 7+ messages in thread From: manfred @ 1997-11-04 23:44 UTC (permalink / raw) To: egcs These are my results for egcs-971031 on m88k-motorola-sysv3 (aka delta88) using - GNU binutils-2.8.1 (almost the official version) - plain egcs-971031 plus the following patches: [1]: [971016]: PICFLAG vs. multilib - solution from <manfred@s-direktnet.de> [2]: [egcs-961016]: Use gxx_include_dir consistently from <manfred@s-direktnet.de> [3]: dwarf2out patch from <law@cygnus.com> [4]: [971023] fixes for a m68k-motorola-sysv from <manfred@s-direktnet.de> [5]: [971023] A fix for all poor guys using filesystems limited to 14 characters from <manfred@s-direktnet.de> [6]: toplev.c (rest_of_compilation): Don't defer thunks from <hjl@gnu.ai.mit.edu> [7]: egcs-970929: GNU assembler too picky from <manfred@ks.sel.alcatel.de> [8]: Install c++filt from <manfred@s-direktnet.de> [9]: egcs-970929: Missing SHELL from <manfred@ks.sel.alcatel.de> [10]: fixincludes patch for a m88k-motorola-sysv3 from <manfred@s-direktnet.de> - will send it soon. config env: CC=gcc CFLAGS='-O2' LDFLAGS=-s config flags: --enable-haifa=yes --with-gnu-as --with-gnu-ld \ --prefix=/u/b60/manfred/gnu/delta88 \ --with-gxx-include-dir=/u/b60/manfred/gnu/delta88/lib/gcc-lib/delta88/egcs-2.90.15/include/g++ \ --with-local-prefix=/u/b60/manfred/gnu/delta88 BOOT_CFLAGS: -O9 gcc used for bootstrapping: gcc version 2.7.2.2 (patchlevel 5 compiled Jul 23 1997, 19:48:11) Test Run By manfred on Tue Nov 4 00:24:22 1997 Native configuration is m88k-motorola-sysv3 === libio Summary === # of expected passes 40 Test Run By manfred on Tue Nov 4 00:40:13 1997 Native configuration is m88k-motorola-sysv3 === libstdc++ Summary === # of expected passes 30 Test Run By manfred on Tue Nov 4 00:53:07 1997 Native configuration is m88k-motorola-sysv3 === gcc tests === FAIL: gcc.c-torture/execute/loop-2e.c compilation, -O0 FAIL: gcc.c-torture/execute/loop-2e.c compilation, -O1 FAIL: gcc.c-torture/execute/loop-2e.c compilation, -O2 FAIL: gcc.c-torture/execute/loop-2e.c compilation, -O2 -fomit-frame-pointer -finline-functions FAIL: gcc.c-torture/execute/loop-2e.c compilation, -O2 -fomit-frame-pointer -finline-functions -funroll-loops FAIL: gcc.c-torture/execute/loop-2e.c compilation, -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops FAIL: gcc.c-torture/execute/loop-2f.c compilation, -O0 FAIL: gcc.c-torture/execute/loop-2f.c compilation, -O1 FAIL: gcc.c-torture/execute/loop-2f.c compilation, -O2 FAIL: gcc.c-torture/execute/loop-2f.c compilation, -O2 -fomit-frame-pointer -finline-functions FAIL: gcc.c-torture/execute/loop-2f.c compilation, -O2 -fomit-frame-pointer -finline-functions -funroll-loops FAIL: gcc.c-torture/execute/loop-2f.c compilation, -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O0 FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O1 FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O2 FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution, -O2 -fomit-frame-pointer -finline-functions FAIL: gcc.c-torture/execute/ieee/rbug.c execution, -O2 -fomit-frame-pointer -finline-functions === gcc Summary === # of expected passes 4693 # of unexpected failures 17 # of expected failures 5 # of untested testcases 12 # of unsupported tests 7 /phys/b60/home76/manfred/work/GNU/egcs-971031-delta88/gcc/xgcc version egcs-2.90.15 971031 (gcc2-970802 experimental) Test Run By manfred on Tue Nov 4 14:08:24 1997 Native configuration is m88k-motorola-sysv3 === g++ tests === FAIL: g++.benjamin/warn01.C (test for excess errors) FAIL: g++.brendan/crash20.C (test for excess errors) FAIL: g++.brendan/new3.C (test for excess errors) XPASS: g++.jason/destruct3.C - (test for bogus messages, line 38) FAIL: g++.jason/thunk2.C (test for excess errors) FAIL: g++.jason/thunk3.C (test for excess errors) FAIL: g++.law/arm13.C (test for excess errors) FAIL: g++.law/code-gen5.C (test for excess errors) FAIL: g++.law/ctors6.C (test for excess errors) FAIL: g++.law/cvt2.C (test for excess errors) FAIL: g++.law/missed-error1.C (test for excess errors) FAIL: g++.law/operators23.C (test for excess errors) FAIL: g++.law/operators4.C (test for excess errors) FAIL: g++.law/profile1.C (test for excess errors) XPASS: g++.mike/dyncast1.C Execution test XPASS: g++.mike/dyncast2.C Execution test FAIL: g++.mike/p710.C (test for excess errors) FAIL: g++.mike/p9706.C (test for excess errors) FAIL: g++.mike/p9732b.C Execution test FAIL: g++.pt/typename2.C (test for excess errors) === g++ Summary === # of expected passes 3355 # of unexpected failures 17 # of unexpected successes 3 # of expected failures 88 # of untested testcases 6 /phys/b60/home76/manfred/work/GNU/egcs-971031-delta88/gcc/testsuite/../xgcc version egcs-2.90.15 971031 (gcc2-970802 experimental) ^ permalink raw reply [flat|nested] 7+ messages in thread
* [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 1997-11-04 23:44 egcs-971031: results on m88k-motorola-sysv3 haifa enabled manfred @ 1997-11-05 5:23 ` manfred 1997-12-11 22:54 ` Jeffrey A Law 0 siblings, 1 reply; 7+ messages in thread From: manfred @ 1997-11-05 5:23 UTC (permalink / raw) To: egcs; +Cc: egcs-bugs On Wed, 5 November 1997, 07:43:39, manfred@s-direktnet.de wrote: These are my results for egcs-971031 on m88k-motorola-sysv3 (aka delta88) using [snip] [10]: fixincludes patch for a m88k-motorola-sysv3 from <manfred@s-direktnet.de> - will send it soon. [snip] Here it comes. The problem that's fixed is caused by a stupid `optimization' in the `hypot' function of Motorola's libm.a. DESCRIPTION hypot(x,y) returns sqrt(x*x + y*y) If either x or y is 0, hypot simply returns the other value regardless of any sign. This, of course, causes pretty much failures during the libstdc++ tests, because the lib itself uses hypot frequently. hypot (0.0, -1.0) e.g. returns -1.0, not 1.0 as one would expect. Since I cannot fix the library (nor can I request a fixed one from Motorola because my customers insist on the particular OS version we're using here), I provide a `fake_hypot' function in the fixed `math.h' file which takes care of this bug: #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 Another fix is for the strlen, etc. functions, which are defined differently depending on _POSIX_SOURCE; fixincludes fails to fix this one. Wed Nov 5 13:31:40 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. diff --context --recursive --show-c-function -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ -x version.el egcs-971031.orig/gcc/fixincludes egcs-971031/gcc/fixincludes *** egcs-971031.orig/gcc/fixincludes Tue Sep 2 20:38:30 1997 - --- egcs-971031/gcc/fixincludes Mon Nov 3 12:44:33 1997 *************** INPUT=${2-${INPUT-/usr/include}} *** 12,17 **** - --- 12,25 ---- # 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 *************** fi *** 1982,1987 **** - --- 1990,1996 ---- # 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" *************** if [ -r ${LIB}/$file ]; then *** 2000,2005 **** - --- 2009,2016 ---- -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 *************** do *** 2284,2289 **** - --- 2295,2335 ---- fi 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. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 1997-11-05 5:23 ` [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 manfred @ 1997-12-11 22:54 ` Jeffrey A Law 1997-12-12 1:46 ` manfred 0 siblings, 1 reply; 7+ messages in thread From: Jeffrey A Law @ 1997-12-11 22:54 UTC (permalink / raw) To: manfred; +Cc: egcs In message <9711051320.AA18683@lts.sel.alcatel.de>you write: > Wed Nov 5 13:31:40 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. Thanks. I've installed this patch. However, is is really necessary to check the target system? Can't we just apply the fix regardless of the target? jeff ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 1997-12-11 22:54 ` Jeffrey A Law @ 1997-12-12 1:46 ` manfred 1997-12-15 10:31 ` Jeffrey A Law 0 siblings, 1 reply; 7+ messages in thread From: manfred @ 1997-12-12 1:46 UTC (permalink / raw) To: egcs On Thu, 11 December 1997, 23:56:54, law@cygnus.com wrote: > > In message <9711051320.AA18683@lts.sel.alcatel.de>you write: > > Wed Nov 5 13:31:40 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. > Thanks. I've installed this patch. > > However, is is really necessary to check the target system? Can't we just apply > the fix regardless of the target? Well, I added this for two reasons: 1. I didn't want to make changes which would probably affect other systems. 2. Some checks should be rewritten to use my new ${target...} stuff, because building a cross compiler will otherwise fail to fix some header files; most tests are like `if [ -f /vmunix ]...' which of course can be misleading (or even wrong!) in a cross environment. BTW: This patch has been obsoleted by the second part of < http://www.cygnus.com/ml/egcs-bugs/1997-Dec/0137.html > Manfred ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 1997-12-12 1:46 ` manfred @ 1997-12-15 10:31 ` Jeffrey A Law 1997-12-15 13:11 ` Fixes for broken headers Bruce Korb 0 siblings, 1 reply; 7+ messages in thread From: Jeffrey A Law @ 1997-12-15 10:31 UTC (permalink / raw) To: manfred; +Cc: egcs In message < 9712120945.AA20731@lts.sel.alcatel.de >you write: > Well, I added this for two reasons: > > 1. I didn't want to make changes which would probably affect other systems OK. > 2. Some checks should be rewritten to use my new ${target...} stuff, > because building a cross compiler will otherwise fail to fix some header files; > most tests are like `if [ -f /vmunix ]...' which of course can be > misleading (or even wrong!) in a cross environment. We should avoid this kind of check if at all possible since they are obviously incorrect for cross compilers. > BTW: This patch has been obsoleted by the second part of > < http://www.cygnus.com/ml/egcs-bugs/1997-Dec/0137.html > All the more reason to send one patch per mail message... jeff ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Fixes for broken headers.. 1997-12-15 10:31 ` Jeffrey A Law @ 1997-12-15 13:11 ` Bruce Korb 1997-12-18 12:29 ` Bruce Korb 0 siblings, 1 reply; 7+ messages in thread From: Bruce Korb @ 1997-12-15 13:11 UTC (permalink / raw) To: Jeffrey A Law, egcs Jeffrey A Law wrote: ... > > 2. Some checks should be rewritten to use my new ${target...} stuff, > > because building a cross compiler will otherwise fail to fix some header files; > > most tests are like `if [ -f /vmunix ]...' which of course can be > > misleading (or even wrong!) in a cross environment. I have a fix for all this stuff, that includes massive performance enhancements. Now that Egcs-1.0 is out, are you ready to deal with a reimplementation of fixincludes? Also, I ran into a problem on UnixWare 2.1.2. For one thing, X11 resides in a directory under .../X11R6.1/... and the emacs configure scripts do not expect to find it there. Beyond that is a header file problem (which is why I mention it in this message). One of the headers under that directory contains an unprotected typedef for wchar_t. It is immediately preceeded by a comment that says that the following line needs to be customized for the target system. SCO obviously forgot to do that. The correct fix is to replace the typedef with a line "#include <stddef.h>" and copy it to where it would be found before the regular X11 include stuff. This last part is what I could not figure out how to do. If you are ready, please tell me how to deliver fixincludes to you. If anyone else is interested in playing with it, I will send it to them, too. I am reluctant to email 100K to hundreds of uninterested recipients tho. -- Bruce Korb | Data Design Systems, Inc. Korbb at DataDesign dot com | 45 Cabot Dr., Suite 110 Voice: 408-260-0280 | Santa Clara, CA 95051 Fax: 408-260-0281 | USA ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Fixes for broken headers.. 1997-12-15 13:11 ` Fixes for broken headers Bruce Korb @ 1997-12-18 12:29 ` Bruce Korb 0 siblings, 0 replies; 7+ messages in thread From: Bruce Korb @ 1997-12-18 12:29 UTC (permalink / raw) To: egcs Jeffrey A Law wrote: ... > > 2. Some checks should be rewritten to use my new ${target...} > > stuff, because building a cross compiler will otherwise > > fail to fix some header files; most tests are like > > `if [ -f /vmunix ]...' which of course can be > > misleading (or even wrong!) in a cross environment. I have a fix for all this stuff, that includes massive performance enhancements. Now that Egcs-1.0 is out, are you ready to deal with a reimplementation of fixincludes? Also, I ran into a problem on UnixWare 2.1.2. For one thing, X11 resides in a directory under .../X11R6.1/... and the emacs configure scripts do not expect to find it there. Beyond that is a header file problem (which is why I mention it in this message). One of the headers under that directory contains an unprotected typedef for wchar_t. It is immediately preceeded by a comment that says that the following line needs to be customized for the target system. SCO obviously forgot to do that. The correct fix is to replace the typedef with a line "#include <stddef.h>" and copy it to where it would be found before the regular X11 include stuff. This last part is what I could not figure out how to do. If you are ready, please tell me how to deliver fixincludes to you. If anyone else is interested in playing with it, I will send it to them, too. I am reluctant to email 100K to hundreds of uninterested recipients tho. -- Bruce Korb | Data Design Systems, Inc. Korbb at DataDesign dot com | 45 Cabot Dr., Suite 110 Voice: 408-260-0280 | Santa Clara, CA 95051 Fax: 408-260-0281 | USA ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~1997-12-18 12:29 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 1997-11-04 23:44 egcs-971031: results on m88k-motorola-sysv3 haifa enabled manfred 1997-11-05 5:23 ` [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 manfred 1997-12-11 22:54 ` Jeffrey A Law 1997-12-12 1:46 ` manfred 1997-12-15 10:31 ` Jeffrey A Law 1997-12-15 13:11 ` Fixes for broken headers Bruce Korb 1997-12-18 12:29 ` Bruce Korb
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).