ronald@robobar.co.uk (Ronald S H Khoo) (03/24/90)
In article <1990Mar23.090407.11111@robobar.co.uk> steve@robobar.co.uk (Steve Bleazard) writes: [ concerning his GCC port to Xenix ] Hmm, My proofreading isn't as good as it was :-( One thing that got left out of the README was: Behaviour of -m80387 flag is a little non-intuitive. If you specify -m80387, the symbol __fltused is emitted whether or not floating point instructions are generated. In this case, floating point opcodes are generated inline. The correct printf is therefore loaded and the program works. If you do _not_ specify -m80387, but you _do_ have floating point operations in your code, GCC will make calls to routines in its gnulib, which themselves cause __fltused to be required, and again, all works OK, albeit a little slower. If, however, -m80387 is NOT specified and you DON'T have any floating operations which call gnulib floating ops, then the non-float compatible printf will be loaded, and the program won't work. Example: % cat x.c main() { printf("%f\n", 1.0); } % gcc x.c % ./a.out f % gcc -m80387 x.c % ./a.out 1.000000 So, if you need to print floating point numbers, you _may_ need to say -m80387. You might as well say -m80387 ANYWAY. The cost is about 5k if you don't have any float stuff (peanuts!). This will be the default if you #define TARGET_DEFAULT to 1 in tm.h (config/tm-xenix386.h) In this case, -msoft-float will force the use of gnulib and not emit __fltused. Ho Hum. -- Eunet: Ronald.Khoo@robobar.Co.Uk Phone: +44 1 991 1142 Fax: +44 1 998 8343 Paper: Robobar Ltd. 22 Wadsworth Road, Perivale, Middx., UB6 7JD ENGLAND.