> Undefined first referenced
> symbol in file
> fesetround libqemu.a(softfloat-native.o)
> lrintf libqemu.a(softfloat-native.o)
> llrint libqemu.a(softfloat-native.o)
> rintf libqemu.a(softfloat-native.o)
> lrint libqemu.a(softfloat-native.o)
> remainderf libqemu.a(softfloat-native.o)
> sqrtf libqemu.a(softfloat-native.o)
> llrintf libqemu.a(softfloat-native.o)
> ld: fatal: Symbol referencing errors. No output written to qemu
> collect2: ld returned 1 exit status
> gmake[1]: *** [qemu] Error 1
>
> Okay, fesetround can be resolved by adding '-L/opt/SUNWspro/lib -lm9x' but
> what about the other symbols?
Hmm, Solaris 10 has all of these functions in libm.so, but apparently
they are missing in the Solaris 8 or Solaris 9 math library -lm.
For the BSDs, this problem has already be solved for lrint() and llrint():
long lrint(double x);
long long llrint(double x);
See the file fpu/softfloat-native.c, you'll find:
#if defined(_BSD)
#define lrint(d) ((int32_t)rint(d))
#define llrint(d) ((int64_t)rint(d))
#endif
Both macros should be enabled for Solaris 8 & 9, too.
lrintf() and llrintf() is the same, but with a float argument instead of
double. The following macros should work:
#define lrintf(f) ((int32_t)rint(f))
#define llrintf(f) ((int64_t)rint(f))
sqrtf(), remainderf() and rintf() is similar to sqrt(), remainder() and
rint() but uses float arguments and result values.
#define sqrtf(f) ((float)sqrt(f))
#define remainderf(fa, fb) ((float)remainder(fa, fb))
#define rintf(f) ((float)rint(f))
(All of this is untested, but should work)
_______________________________________________
Qemu-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/qemu-devel