Heya gang,
I was able to build gcc-4.1 with a crtfastmath.o by changing config.gcc
to the following:
i[34567]86-*-gnu*)
tmake_file="${tmake_file} i386/t-crtfm"
;;
But when running the attached test code compiled with --fast-math, I get
the following:
Starting program: /devel/bdefreese/fastmath_test/test1
Program received signal SIGILL, Illegal instruction.
set_fast_math () at ../../src/gcc/config/i386/crtfastmath.c:71
71 unsigned int mxcsr = __builtin_ia32_stmxcsr ();
(gdb) bt full
#0 set_fast_math () at ../../src/gcc/config/i386/crtfastmath.c:71
mxcsr = 16998664
eax = 1667
ebx = <value optimized out>
ecx = <value optimized out>
edx = 58980863
#1 0x08048855 in __do_global_ctors_aux ()
No symbol table info available.
#2 0x080483dd in _init ()
No symbol table info available.
#3 0x0804868f in __libc_csu_init ()
No symbol table info available.
#4 0x01068edb in __libc_start_main () from /lib/libc.so.0.3
No symbol table info available.
#5 0x08048491 in _start () at ../sysdeps/i386/elf/start.S:119
No locals.
Thanks,
Barry deFreese (aka bddebian)
#include <syslog.h>
#include <stdio.h>
#include <stdlib.h>
#define ITERATIONS 1024
typedef struct {
char sign;
long frac;
int exp;
} sdouble;
/* Warning : double's size is hardcoded here, very bad habit. This program
is initially designed to only run on Itanium. */
sdouble cut_double (double d) {
sdouble ret;
long *db;
db = (long *)&d;
ret.sign = (*db >> 63) & 0x0000000000000001;
ret.exp = ((*db >> 52) & 0x00000000000007FF) - 1023;
ret.frac = (*db ) & 0x000FFFFFFFFFFFFF;
return ret;
}
int main (int argc, char **argv) {
sdouble sa;
double a;
int i;
a = 1;
i = 1;
openlog ("double_test", LOG_CONS, LOG_USER);
syslog (LOG_USER | LOG_NOTICE, "starting");
while (i <= ITERATIONS) {
syslog (LOG_USER | LOG_NOTICE, "iteration #%d", i);
a /= 2;
sa = cut_double (a);
printf ("iteration %d : a=(%d, %lx, %d) : ", i, sa.sign,
sa.frac, sa.exp);
printf ("\n");
i++;
}
exit (0);
}
_______________________________________________
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd