As reported by PhilippeW, valgrind reports that symtab is uninitialized
when compiling with GCC 4.8.5, which is the default compiler on CentOS 7.
This is apparently a compiler bug fixed in later versions, but to keep
CentOS 7 working, this patch initializes the union explicitly instead of
using a class initializer.
gdb/ChangeLog:
2019-11-18 Christian Biesinger <cbiesinger@google.com>
* symtab.h (struct symbol) <owner>: Initialize explicitly in the
constructor instead of using a class initializer.
Change-Id: I94f48afeae5d29cf81a280295e2d02e2d7e1c1f1
+2019-11-18 Christian Biesinger <cbiesinger@google.com>
+
+ * symtab.h (struct symbol) <owner>: Initialize explicitly in the
+ constructor instead of using a class initializer.
+
2019-11-15 Christian Biesinger <cbiesinger@google.com>
* Makefile.in: Replace {posix,mingw}-strerror.c with safe-strerror.c.
language = language_unknown;
ada_mangled = 0;
section = 0;
+ /* GCC 4.8.5 (on CentOS 7) does not correctly compile class-
+ initialization of unions, so we initialize it manually here. */
+ owner.symtab = nullptr;
}
/* Data type of value */
/* The symbol table containing this symbol. This is the file associated
with LINE. It can be NULL during symbols read-in but it is never NULL
during normal operation. */
- struct symtab *symtab = nullptr;
+ struct symtab *symtab;
/* For types defined by the architecture. */
struct gdbarch *arch;