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

Reply via email to