If gas-preprocessor.pl is invoked with a gcc command line that includes the -fastf option the assembled object file will have a mach-o header but no code, and there will be no error message.
It is possible other gcc options will be discovered to be incompatible with the -E option.
A possible fix may look like this:
@preprocess_c_cmd = grep(!/-fastf/, @preprocess_c_cmd);