The use of -Dstrtod=fixstrtod is not reliable. When glibc's headers are read, the inline definition of strtod in terms of __internal_strtod is modified by the macro. So, while every call to strtod() is replaced with a call to fixstrtod(), that refers to an inline function, and the library's standard __internal_strtod() is called anyway. If the configure script's test to determine that it needs to modify strtod is correct, it is having no effect in the default configuration of glibc.
In general, C does not really "allow" redefinitions of standard library functions. Obviously, there is a compelling reason to try to outsmart the library in this case.
The correct way to do this is to, *AFTER* including the standard headers, execute code something like this:
extern double fixstrtod(const char *, char **);
#define strtod fixstrtod
This is still probably undefined behavior, but I'm pretty confident that it will work.