binutils-gdb/gdb/dwarf2/public.h
Tom Tromey edc02ceb97 Simplify DWARF reader initialization
Now that the quick functions are separate from the object file format,
there's no need to have elfread.c push a new entry on the objfile 'qf'
list.  Instead, this detail can be pushed into the DWARF reader.  That
is what this patch implements.

I wasn't sure whether lazy reading still makes sense or not.  It's
still only used by ELF, and only in certain situations (like vfork, I
think).  It may not be carrying its weight, so we may want to consider
removing this in the future.

Also, I'm unclear on why the various indices are only used for ELF.
This seems sub-optimal.  However, I haven't tried to address that
here.

gdb/ChangeLog
2021-03-28  Tom Tromey  <tom@tromey.com>

	* elfread.c (can_lazily_read_symbols): Move to dwarf2/read.c.
	(elf_symfile_read): Simplify.
	* dwarf2/read.c (struct lazy_dwarf_reader): Move from elfread.c.
	(make_lazy_dwarf_reader): New function.
	(make_dwarf_gdb_index, make_dwarf_debug_names): Now static.
	(dwarf2_initialize_objfile): Return void.  Remove index_kind
	parameter.  Push on 'qf' list.
	* dwarf2/public.h (dwarf2_initialize_objfile): Change return
	type.  Remove 'index_kind' parameter.
	(make_dwarf_gdb_index, make_dwarf_debug_names): Don't declare.
2021-03-28 10:43:15 -06:00

47 lines
1.5 KiB
C

/* Public API for gdb DWARF reader
Copyright (C) 2021 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef DWARF2_PUBLIC_H
#define DWARF2_PUBLIC_H
extern int dwarf2_has_info (struct objfile *,
const struct dwarf2_debug_sections *,
bool = false);
/* A DWARF names index variant. */
enum class dw_index_kind
{
/* GDB's own .gdb_index format. */
GDB_INDEX,
/* DWARF5 .debug_names. */
DEBUG_NAMES,
};
/* Initialize for reading DWARF for OBJFILE, and push the appropriate
entry on the objfile's "qf" list. */
extern void dwarf2_initialize_objfile (struct objfile *objfile);
struct psymbol_functions;
extern void dwarf2_build_psymtabs (struct objfile *,
psymbol_functions *psf = nullptr);
extern void dwarf2_build_frame_info (struct objfile *);
#endif /* DWARF2_PUBLIC_H */