http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56198



             Bug #: 56198

           Summary: [4.8 Regression] Go profiledbootstrap error

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: bootstrap

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: ja...@gcc.gnu.org

                CC: i...@gcc.gnu.org





My --enable-checking=release profiledbootstrap failed on an maybe uninitialized

warning turned into -Werror in go/gofrontend/import-archive.cc.

Archive_file::read_header has:

  off_t local_nested_off;

  if (!this->interpret_header(&hdr, off, pname, size, &local_nested_off))

    return false;

  if (nested_off != NULL)

    *nested_off = local_nested_off;

and the warning was complaining that local_nested_off might be uninitialized.

If Archive_file::interpret_header is what is called here, then *nested_off

might be indeed uninitialized even when the function returns true, in

particular for:

  else if (hdr->ar_name[1] == ' ')

    {

      // This is the symbol table.

      pname->clear();

    }

  else if (hdr->ar_name[1] == '/')

    {

      // This is the extended name table.

      pname->assign(1, '/');

    }

 BTW, there seems to be also an inconsistency in that method, the first write

to

*nested_off in that method is not guarded by nested_off != NULL:

      *nested_off = 0;

while the second one is:

      if (nested_off != NULL)

        *nested_off = y;

Reply via email to