The symbols _fp_hw, __flt_rounds and __huge_val are not provided by the AMD64 ABI.
ISO C 99 defines the floating point environment functions from <fenv.h>. Since AMD64 has two floating point units with separate control words, the programming environment has to keep the control values in sync. On the other hand this means that routines accessing the control words only need to access one unit, and the SSE unit is the unit that should be accessed in these casese. The function fegetround therefore only needs to report the rounding value of the SSE unit and can ignore the x87 unit.