Go to file
Tom de Vries 248f716500 [gdb/symtab] Fix segfault in process_psymtab_comp_unit
When running test-case gdb.dwarf2/dw2-dummy-cu.exp without -readnow, we run
into:
...
(gdb) file outputs/gdb.dwarf2/dw2-dummy-cu/dw2-dummy-cu^M
Reading symbols from outputs/gdb.dwarf2/dw2-dummy-cu/dw2-dummy-cu...^M
ERROR: Couldn't load dw2-dummy-cu into GDB (eof).
...

The problem is that we're running into a segfault:
...
Thread 1 "gdb" received signal SIGSEGV, Segmentation fault.
process_psymtab_comp_unit (this_cu=0x2141090, per_objfile=0x1aa4140,
    want_partial_unit=false, pretend_language=language_minimal)
    at /home/vries/gdb_versions/devel/src/gdb/dwarf2/read.c:7023
7023      switch (reader.comp_unit_die->tag)
...
due to reader.comp_unit_die == nullptr:
...
(gdb) p reader.comp_unit_die
$1 = (die_info *) 0x0
...

Indeed, there's no CU DIE in the test-case:
...
$ readelf -wi outputs/gdb.dwarf2/dw2-dummy-cu/dw2-dummy-cu
Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0x7 (32-bit)
   Version:       2
   Abbrev Offset: 0x0
   Pointer Size:  4
$
...

Fix this by handling reader.comp_unit_die == nullptr in
process_psymtab_comp_unit.

Update the test-case to trigger this PR, as per PR27920 - "[gdb/testsuite]
hardcoding -readnow skips testing of partial symbols".

Tested on x86_64-linux.

gdb/ChangeLog:

2021-05-27  Tom de Vries  <tdevries@suse.de>

	PR symtab/27919
	* dwarf2/read.c (process_psymtab_comp_unit):

gdb/testsuite/ChangeLog:

2021-05-27  Tom de Vries  <tdevries@suse.de>

	PR symtab/27919
	PR testsuite/27920
	* gdb.dwarf2/dw2-dummy-cu.exp: Use maint expand-symtabs instead of
	-readnow.
2021-05-27 15:22:38 +02:00
bfd Automatic date update in version.in 2021-05-27 00:00:28 +00:00
binutils readelf -w and --debug-dump option help 2021-05-27 10:47:13 +09:30
config config: delete unused sim macros 2021-05-18 17:46:55 -04:00
contrib
cpu or1k: Implement relocation R_OR1K_GOT_AHI16 for gotha() 2021-05-06 20:51:24 +09:00
elfcpp Add DWARF 5 support in gold. 2021-03-19 13:55:35 -07:00
etc
gas nds32: __builtin_strncpy bound equals destination size 2021-05-27 10:44:31 +09:30
gdb [gdb/symtab] Fix segfault in process_psymtab_comp_unit 2021-05-27 15:22:38 +02:00
gdbserver gdb: additional settings for emacs in .dir-locals.el 2021-05-17 20:47:46 +01:00
gdbsupport gdb: additional settings for emacs in .dir-locals.el 2021-05-17 20:47:46 +01:00
gnulib gnulib: import ffs 2021-05-24 18:36:55 -04:00
gold [GOLD] PR27815, gold fails to build with latest GCC 2021-05-25 16:47:16 +09:30
gprof support generating multi-html pages in parallel 2021-05-08 12:06:07 -04:00
include x86: Propery check PC16 reloc overflow in 16-bit mode instructions 2021-05-26 12:13:24 -07:00
intl intl: turn LIBINTL into -L / -l form 2021-02-10 15:26:57 +00:00
ld x86: Propery check PC16 reloc overflow in 16-bit mode instructions 2021-05-26 12:13:24 -07:00
libctf Use htab_eq_string in libctf 2021-05-09 12:28:32 +09:30
libdecnumber
libiberty libiberty: add htab_eq_string 2021-05-07 11:17:11 +01:00
opcodes Regen cris files 2021-05-25 17:17:04 +09:30
readline Update config.sub and config.guess for MIPS R3 and R5 ISA support 2021-05-24 18:11:49 +02:00
sim opcodes: cris: move desc & opc files from sim/ 2021-05-24 18:42:34 -04:00
texinfo
zlib
.cvsignore
.gitattributes
.gitignore
ar-lib
ChangeLog MAINTAINERS: Update path to readline config.{sub,guess} files 2021-05-24 18:11:49 +02:00
compile
config-ml.in
config.guess Update config.sub and config.guess for MIPS R3 and R5 ISA support 2021-05-24 18:11:49 +02:00
config.rpath
config.sub Update config.sub and config.guess for MIPS R3 and R5 ISA support 2021-05-24 18:11:49 +02:00
configure Replace AC_PROG_CC with AC_PROG_CC_C99 in top level configure file. 2021-05-04 13:40:34 +01:00
configure.ac Replace AC_PROG_CC with AC_PROG_CC_C99 in top level configure file. 2021-05-04 13:40:34 +01:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS MAINTAINERS: Update path to readline config.{sub,guess} files 2021-05-24 18:11:49 +02:00
Makefile.def sim: depend on gnulib 2021-05-18 17:47:27 -04:00
Makefile.in sim: depend on gnulib 2021-05-18 17:47:27 -04:00
Makefile.tpl Add missing changes to Makefile.tpl 2021-02-28 04:39:38 -08:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
setup.com
src-release.sh
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.