In response to another thread, I am still getting these problems with WinAVR 2010. I think the linker is hitting some AVR limits. There are similar reports on the web as well.
-------------------------------------------------------------------------------------------------
unsigned char u; float f;
u = (unsigned char) f;
--------------------------------------------------------------------------------------------------- c:/wavr10/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/ avr35\libc.a(fp_powsodd.o): In function `__fp_powsodd': (.text.avr-libc.fplib+0x10): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/wavr10/bin/../lib/gcc/avr/4.3.3/avr35\libgcc.a(_mul_sf.o) c:/wavr10/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/ avr35\libc.a(fp_powsodd.o): In function `__fp_powsodd': (.text.avr-libc.fplib+0x20): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/wavr10/bin/../lib/gcc/avr/4.3.3/avr35\libgcc.a(_mul_sf.o)