mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
1d506c26d9
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
85 lines
2.7 KiB
C++
85 lines
2.7 KiB
C++
/* DWARF DWZ handling for GDB.
|
|
|
|
Copyright (C) 2003-2024 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 GDB_DWARF2_DWZ_H
|
|
#define GDB_DWARF2_DWZ_H
|
|
|
|
#include "gdb_bfd.h"
|
|
#include "dwarf2/index-cache.h"
|
|
#include "dwarf2/section.h"
|
|
|
|
struct dwarf2_per_bfd;
|
|
|
|
/* This represents a '.dwz' file. */
|
|
|
|
struct dwz_file
|
|
{
|
|
dwz_file (gdb_bfd_ref_ptr &&bfd)
|
|
: dwz_bfd (std::move (bfd))
|
|
{
|
|
}
|
|
|
|
const char *filename () const
|
|
{
|
|
return bfd_get_filename (this->dwz_bfd.get ());
|
|
}
|
|
|
|
/* A dwz file can only contain a few sections. */
|
|
struct dwarf2_section_info abbrev {};
|
|
struct dwarf2_section_info info {};
|
|
struct dwarf2_section_info str {};
|
|
struct dwarf2_section_info line {};
|
|
struct dwarf2_section_info macro {};
|
|
struct dwarf2_section_info gdb_index {};
|
|
struct dwarf2_section_info debug_names {};
|
|
struct dwarf2_section_info types {};
|
|
|
|
/* The dwz's BFD. */
|
|
gdb_bfd_ref_ptr dwz_bfd;
|
|
|
|
/* If we loaded the index from an external file, this contains the
|
|
resources associated to the open file, memory mapping, etc. */
|
|
std::unique_ptr<index_cache_resource> index_cache_res;
|
|
|
|
/* Read a string at offset STR_OFFSET in the .debug_str section from
|
|
this dwz file. Throw an error if the offset is too large. If
|
|
the string consists of a single NUL byte, return NULL; otherwise
|
|
return a pointer to the string. */
|
|
|
|
const char *read_string (struct objfile *objfile, LONGEST str_offset);
|
|
};
|
|
|
|
/* Return the separate '.dwz' debug file. If there is no
|
|
.gnu_debugaltlink section in the file, then the result depends on
|
|
REQUIRE: if REQUIRE is true, then error; if REQUIRE is false,
|
|
return NULL. */
|
|
|
|
extern dwz_file *dwarf2_get_dwz_file (dwarf2_per_bfd *per_bfd,
|
|
bool require = false);
|
|
|
|
/* Open the separate '.dwz' debug file, if needed. This just sets the
|
|
appropriate field in the per-BFD structure. If the DWZ file
|
|
exists, the relevant sections are read in as well. Throws an error
|
|
if the .gnu_debugaltlink section exists but the file cannot be
|
|
found. */
|
|
|
|
extern void dwarf2_read_dwz_file (dwarf2_per_objfile *per_objfile);
|
|
|
|
#endif /* GDB_DWARF2_DWZ_H */
|