public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii
@ 2021-02-01 10:44 dcb314 at hotmail dot com
  2021-02-01 14:47 ` [Bug lto/98912] " marxin at gcc dot gnu.org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: dcb314 at hotmail dot com @ 2021-02-01 10:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

            Bug ID: 98912
           Summary: valgrind error in default_elf_asm_output_ascii
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
                CC: marxin at gcc dot gnu.org
  Target Milestone: ---

Created attachment 50105
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50105&action=edit
fortran source code

For the attached fortran source code file, compiled as follows:

$ /home/dcb/gcc/results.20210131.valgrind/bin/gfortran -flto=auto getfname.f

does this:

==29891== Conditional jump or move depends on uninitialised value(s)
==29891==    at 0xF68B43: default_elf_asm_output_ascii(_IO_FILE*, char const*,
u
nsigned int) (varasm.c:8285)
==29891==    by 0xF68A8F: assemble_string(char const*, int) (varasm.c:2069)
==29891==    by 0xAAA5EF: lhd_append_data(void const*, unsigned long, void*)
(la
nghooks.c:823)
==29891==    by 0xAFC984: produce_lto_section (lto-streamer-out.c:2675)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
@ 2021-02-01 14:47 ` marxin at gcc dot gnu.org
  2021-02-01 14:52 ` jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-02-01 14:47 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2021-02-01
             Status|UNCONFIRMED                 |WAITING

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Hm, this one is about streaming of 

  lto_section s
    = { LTO_major_version, LTO_minor_version, slim_object, 0 };
  s.set_compression (compression);
  lto_write_data (&s, sizeof s);

where sizeof s == 8.

I cannot reproduce it..

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
  2021-02-01 14:47 ` [Bug lto/98912] " marxin at gcc dot gnu.org
@ 2021-02-01 14:52 ` jakub at gcc dot gnu.org
  2021-02-01 14:58 ` dcb314 at hotmail dot com
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-02-01 14:52 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Well, lto_section is 8 byte long struct containing 2 ushort fields, 1 uchar,
one byte padding (on most hosts) and one ushort field.
So bet valgrind is complaining about streaming the padding...

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
  2021-02-01 14:47 ` [Bug lto/98912] " marxin at gcc dot gnu.org
  2021-02-01 14:52 ` jakub at gcc dot gnu.org
@ 2021-02-01 14:58 ` dcb314 at hotmail dot com
  2021-02-02  9:25 ` marxin at gcc dot gnu.org
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: dcb314 at hotmail dot com @ 2021-02-01 14:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

--- Comment #3 from David Binderman <dcb314 at hotmail dot com> ---
For varasm.c line 8285 is

          for (p = s; p < limit && *p != '\0'; p++)

So either the limit is wrong or there are some un-init bytes in
the string. My money is on option 2 ;->

Maybe a suitable first step would be to produce some debug output,
(maybe fprintf on stderr ?) of the parameters to default_elf_asm_output_ascii,
i.e s and len.

Whichever of s or len that valgrind detects would be the culprit.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
                   ` (2 preceding siblings ...)
  2021-02-01 14:58 ` dcb314 at hotmail dot com
@ 2021-02-02  9:25 ` marxin at gcc dot gnu.org
  2021-02-02  9:31 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-02-02  9:25 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

--- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #2)
> Well, lto_section is 8 byte long struct containing 2 ushort fields, 1 uchar,
> one byte padding (on most hosts) and one ushort field.
> So bet valgrind is complaining about streaming the padding...

I bet it's complaining about the padding.
Please test the following debugging patch:

diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 405f3bfc56c..d96a7ee3ec8 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -2672,6 +2672,10 @@ produce_lto_section ()
   lto_section s
     = { LTO_major_version, LTO_minor_version, slim_object, 0 };
   s.set_compression (compression);
+  char *ptr = (char *)&s;
+  for (unsigned i = 0; i < sizeof s; i++)
+    fprintf (stderr, "v[%d]=%d\n", i, ptr[i]);
+  fprintf (stderr, "\n");
   lto_write_data (&s, sizeof s);
   lto_end_section ();
   destroy_output_block (ob);

with GCC 10 the object is constructed in the following way:

  MEM <char[4]> [(struct lto_section *)&s + 2B] = {};
  s.major_version = 9;
  s.slim_object = prephitmp_911;
  s.flags = 1;

and that covers all bytes in the struct.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
                   ` (3 preceding siblings ...)
  2021-02-02  9:25 ` marxin at gcc dot gnu.org
@ 2021-02-02  9:31 ` jakub at gcc dot gnu.org
  2021-02-03  9:54 ` marxin at gcc dot gnu.org
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-02-02  9:31 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
How exactly it is gimplified depends on the target, optimization level etc.
Anyway, I'd suggest just to add a unsigned char padding; to the structure, that
seems easiest.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
                   ` (4 preceding siblings ...)
  2021-02-02  9:31 ` jakub at gcc dot gnu.org
@ 2021-02-03  9:54 ` marxin at gcc dot gnu.org
  2021-02-03 12:19 ` cvs-commit at gcc dot gnu.org
  2021-02-03 12:19 ` marxin at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-02-03  9:54 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |marxin at gcc dot gnu.org
             Status|WAITING                     |ASSIGNED

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
All right, I'll send patch for it.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
                   ` (5 preceding siblings ...)
  2021-02-03  9:54 ` marxin at gcc dot gnu.org
@ 2021-02-03 12:19 ` cvs-commit at gcc dot gnu.org
  2021-02-03 12:19 ` marxin at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-02-03 12:19 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Martin Liska <marxin@gcc.gnu.org>:

https://gcc.gnu.org/g:84110515b93a6709de24240d6658ac207db5129f

commit r11-7057-g84110515b93a6709de24240d6658ac207db5129f
Author: Martin Liska <mliska@suse.cz>
Date:   Wed Feb 3 10:53:32 2021 +0100

    Fill up padding in lto_section struct.

    gcc/ChangeLog:

            PR lto/98912
            * lto-streamer-out.c (produce_lto_section): Fill up missing
            padding.
            * lto-streamer.h (struct lto_section): Add _padding field.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug lto/98912] valgrind error in default_elf_asm_output_ascii
  2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
                   ` (6 preceding siblings ...)
  2021-02-03 12:19 ` cvs-commit at gcc dot gnu.org
@ 2021-02-03 12:19 ` marxin at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-02-03 12:19 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98912

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> ---
Should be fixed now.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-02-03 12:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-01 10:44 [Bug lto/98912] New: valgrind error in default_elf_asm_output_ascii dcb314 at hotmail dot com
2021-02-01 14:47 ` [Bug lto/98912] " marxin at gcc dot gnu.org
2021-02-01 14:52 ` jakub at gcc dot gnu.org
2021-02-01 14:58 ` dcb314 at hotmail dot com
2021-02-02  9:25 ` marxin at gcc dot gnu.org
2021-02-02  9:31 ` jakub at gcc dot gnu.org
2021-02-03  9:54 ` marxin at gcc dot gnu.org
2021-02-03 12:19 ` cvs-commit at gcc dot gnu.org
2021-02-03 12:19 ` marxin at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).