Message ID | 20210730110111.569140-3-ibuclaw@gdcproject.org |
---|---|
State | New |
Headers | show |
Series | d: Series of refactorings to the D front-end | expand |
On 7/30/21 13:01, Iain Buclaw via Gcc-patches wrote:
> |Covers cases where functions that handle the extracted strings ignore the explicit length. This isn't something that's known to happen in the current front-end, but the self-hosted front-end has been observed to do this in its conversions between D and C-style strings.|
Can you please cherry pick this for gcc-11 branch as I see nasty output when using --verbose:
$ gcc /home/marxin/Programming/gcc/gcc/testsuite/gdc.dg/attr_optimize4.d -c --verbose
...
predefs GNU D_Version2 LittleEndian GNU_DWARF2_Exceptions GNU_StackGrowsDown GNU_InlineAsm D_LP64 assert D_ModuleInfo D_Exceptions D_TypeInfo all X86_64 D_HardFloat Posix linux CRuntime_Glibc CppRuntime_Gcc����������������������...
Thanks,
Martin
Excerpts from Martin Liška's message of November 25, 2021 3:09 pm: > On 7/30/21 13:01, Iain Buclaw via Gcc-patches wrote: >> |Covers cases where functions that handle the extracted strings ignore the explicit length. This isn't something that's known to happen in the current front-end, but the self-hosted front-end has been observed to do this in its conversions between D and C-style strings.| > > Can you please cherry pick this for gcc-11 branch as I see nasty output when using --verbose: > > $ gcc /home/marxin/Programming/gcc/gcc/testsuite/gdc.dg/attr_optimize4.d -c --verbose > ... > predefs GNU D_Version2 LittleEndian GNU_DWARF2_Exceptions GNU_StackGrowsDown GNU_InlineAsm D_LP64 assert D_ModuleInfo D_Exceptions D_TypeInfo all X86_64 D_HardFloat Posix linux CRuntime_Glibc CppRuntime_Gcc����������������������... > > Ouch, I'll have a look at gcc-9 and 10 too to see if they are the same. Iain.
Excerpts from Iain Buclaw's message of November 26, 2021 1:35 pm: > Excerpts from Martin Liška's message of November 25, 2021 3:09 pm: >> On 7/30/21 13:01, Iain Buclaw via Gcc-patches wrote: >>> |Covers cases where functions that handle the extracted strings ignore the explicit length. This isn't something that's known to happen in the current front-end, but the self-hosted front-end has been observed to do this in its conversions between D and C-style strings.| >> >> Can you please cherry pick this for gcc-11 branch as I see nasty output when using --verbose: >> >> $ gcc /home/marxin/Programming/gcc/gcc/testsuite/gdc.dg/attr_optimize4.d -c --verbose >> ... >> predefs GNU D_Version2 LittleEndian GNU_DWARF2_Exceptions GNU_StackGrowsDown GNU_InlineAsm D_LP64 assert D_ModuleInfo D_Exceptions D_TypeInfo all X86_64 D_HardFloat Posix linux CRuntime_Glibc CppRuntime_Gcc����������������������... >> >> > > Ouch, I'll have a look at gcc-9 and 10 too to see if they are the same. > FYI, patch applied cleanly to gcc-11 branch and has been committed. Saw no regressions on x86_64-linux-gnu in both bootstrap and tests. Checked other branches, however earlier releases used the dmd front-end's OutBuffer, so are unaffected. Iain.
diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc index ac0945b1f34..4386a489ff2 100644 --- a/gcc/d/d-lang.cc +++ b/gcc/d/d-lang.cc @@ -108,7 +108,7 @@ deps_add_target (const char *target, bool quoted) if (!quoted) { - obstack_grow (&buffer, target, strlen (target)); + obstack_grow0 (&buffer, target, strlen (target)); d_option.deps_target.safe_push ((const char *) obstack_finish (&buffer)); return; } @@ -149,6 +149,7 @@ deps_add_target (const char *target, bool quoted) obstack_1grow (&buffer, *p); } + obstack_1grow (&buffer, '\0'); d_option.deps_target.safe_push ((const char *) obstack_finish (&buffer)); } @@ -278,6 +279,8 @@ deps_write (Module *module, obstack *buffer) obstack_grow (buffer, str, strlen (str)); obstack_grow (buffer, ":\n", 2); } + + obstack_1grow (buffer, '\0'); } /* Implements the lang_hooks.init_options routine for language D. @@ -884,6 +887,7 @@ d_parse_file (void) obstack_grow (&buffer, str, strlen (str)); } + obstack_1grow (&buffer, '\0'); message ("%s", (char *) obstack_finish (&buffer)); } }