Hi, It seems that the output target name gets corrupted (see the extra chars at the end of 'MyTargetName'):
*$ cat test.d* // empty file *$ gdc -Isrc -MM "test.d" -MT "MyTargetName" -MF "test.deps"* *$ cat test.deps* MyTargetName�: test.d *$ gdc --version* gdc (Debian 11.2.0-10) 11.2.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *$* Here's the fix I'm suggesting: diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc index be6330fbd..4749bfb98 100644 --- a/gcc/d/d-lang.cc +++ b/gcc/d/d-lang.cc @@ -110,6 +110,7 @@ deps_add_target (const char *target, bool quoted) if (!quoted) { obstack_grow0 (&buffer, target, strlen (target)); + obstack_1grow (&buffer, '\0'); d_option.deps_target.safe_push ((const char *) obstack_finish (&buffer)); return; } Cheers, Sebastien Alaiwan