Go to file
Andrew Burgess 702cf3f5df gdb: handle invalid DWARF when compilation unit is missing
Replace an abort call in process_psymtab_comp_unit with a real error,
and add a test to cover this case.  The case is question is when badly
formed DWARF is missing a DW_TAG_compile_unit, DW_TAG_partial_unit, or
DW_TAG_type_unit as its top level tag.

I then tested with --target_board=readnow and added additional code to
also validate the top-level tag in this case.

I added an assert that would trigger for the readnow case before I
added the fix.  I suspect there's lots of places where badly formed
DWARF could result in the builder being nullptr when it shouldn't be,
but I only added this one assert, as this is the one that would have
helped me in this case.

gdb/ChangeLog:

	* dwarf2/read.c (process_psymtab_comp_unit): Replace abort with an
	error.
	(process_full_comp_unit): Validate the top-level tag before
	processing the first DIE.
	(read_func_scope): Ensure we have a valid builder.

gdb/testsuite/ChangeLog:

	* gdb.dwarf2/dw2-missing-cu-tag.c: New file.
	* gdb.dwarf2/dw2-missing-cu-tag.exp: New file.
2021-03-22 14:34:53 +00:00
bfd Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
binutils Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
config GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs 2021-03-18 08:02:46 -07:00
contrib
cpu
elfcpp Add DWARF 5 support in gold. 2021-03-19 13:55:35 -07:00
etc
gas Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
gdb gdb: handle invalid DWARF when compilation unit is missing 2021-03-22 14:34:53 +00:00
gdbserver gdbserver: convert the global dll list into a process_info field 2021-03-22 09:18:04 +01:00
gdbsupport Provide an inline startswith function in bfd.h 2021-03-21 23:00:32 +10:30
gnulib
gold Use stdout when printing object file names for -t option. 2021-03-19 18:41:12 -07:00
gprof
include elf: Rename EM_INTEL205 to EM_INTELGT 2021-03-19 05:58:46 -07:00
intl intl: turn LIBINTL into -L / -l form 2021-02-10 15:26:57 +00:00
ld Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
libctf Provide an inline startswith function in bfd.h 2021-03-21 23:00:32 +10:30
libdecnumber
libiberty GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs 2021-03-18 08:02:46 -07:00
opcodes Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
readline Fix Readline 8.1 build on mingw 2021-03-02 13:42:37 -07:00
sim sim: rename BUILD_LDFLAGS to LDFLAGS_FOR_BUILD 2021-03-13 11:21:13 -05:00
texinfo
zlib
.cvsignore
.gitattributes
.gitignore
ar-lib
ChangeLog Add install dependencies for ld -> bfd and libctf -> bfd 2021-03-18 12:40:40 +00:00
compile
config-ml.in
config.guess
config.rpath
config.sub
configure Remove arm-symbianelf 2021-02-09 23:36:16 +10:30
configure.ac Remove arm-symbianelf 2021-02-09 23:36:16 +10:30
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
Makefile.def Add install dependencies for ld -> bfd and libctf -> bfd 2021-03-18 12:40:40 +00:00
Makefile.in Add install dependencies for ld -> bfd and libctf -> bfd 2021-03-18 12:40:40 +00: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.