For those interested, it turns out that gcc -MMD writes out the dependency file by itself, therefore redirecting stdout, which contains preprocessed text, to the file was wrong.
Here's the new patch.
mh-darwin.patch
Description: Binary data
mh-darwin.patch
Description: Binary data