separate_debug_file_exists() opens the debug info file as a text file on MinGW. This means it's incorrectly read: CRLF translation takes place and a byte 0x1a (^Z) is treated as the end of file. This means that it's very unlikely that separate debug files pass the crc check. Solution: open the file with the O_BINARY flag.
http://sourceware.org/ml/binutils-cvs/2007-11/msg00074.html