mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 15:15:42 +00:00
This commit allows a user to enable or disable dwarf support at compilation time. To do that, a new configure option is introduced, in the form of --enable-gdb-dwarf-support (and the accompanying --disable version). By default, dwarf support is enabled, so no behavior changes occur if a user doesn't use the new feature. If support is disabled, no .c files inside the dwarf2/ subfolder will be compiled into the final binary. To achieve this, this commit also introduces the new macro DWARF_FORMAT_AVAILABLE, which guards the definitions of functions exported from the dwarf reader. If the macro is not defined, there are a couple behaviors that exported functions may have: * no-ops: several functions are used to register things at initialization time, like unwinders. These are turned into no-ops because the user hasn't attempted to read DWARF yet, there's no point in warning that DWARF is unavailable. * warnings: similar to the previous commit, if dwarf would be read or used, the funciton will emit the warning "No dwarf support available." * throw exceptions: If the code that calls a function expects an exceptin in case of errors, and has a try-catch block, an error with the previous message is thrown. I believe that the changed functions should probalby be moved to the dwarf2/public.h header, but that require a much larger refactor, so it is left as a future improvement. Finally, the --enable-gdb-compile configure option has been slightly changed, since compile requires dwarf support. If compile was requested and dwarf was disabled, configure will throw an error. If the option was not used, support will follow what was requested for dwarf (warning the user of what is decided). Reviewed-By: Eli Zaretskii <eliz@gnu.org> Approved-By: Tom Tromey <tom@tromey.com> Approved-By: Andrew Burgess <aburgess@redhat.com>
73 lines
2.1 KiB
C
73 lines
2.1 KiB
C
/* Public API for gdb DWARF reader
|
|
|
|
Copyright (C) 2021-2025 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_PUBLIC_H
|
|
#define GDB_DWARF2_PUBLIC_H
|
|
|
|
/* A DWARF names index variant. */
|
|
enum class dw_index_kind
|
|
{
|
|
/* GDB's own .gdb_index format. */
|
|
GDB_INDEX,
|
|
|
|
/* DWARF5 .debug_names. */
|
|
DEBUG_NAMES,
|
|
};
|
|
|
|
#if defined(DWARF_FORMAT_AVAILABLE)
|
|
|
|
/* Try to locate the sections we need for DWARF 2 debugging
|
|
information. If these are found, begin reading the DWARF and
|
|
return true. Otherwise, return false. NAMES points to the dwarf2
|
|
section names, or is NULL if the standard ELF names are used.
|
|
CAN_COPY is true for formats where symbol interposition is possible
|
|
and so symbol values must follow copy relocation rules. */
|
|
|
|
extern bool dwarf2_initialize_objfile
|
|
(struct objfile *,
|
|
const struct dwarf2_debug_sections * = nullptr,
|
|
bool = false);
|
|
|
|
extern void dwarf2_build_frame_info (struct objfile *);
|
|
|
|
/* Append the DWARF-2 frame unwinders to GDBARCH's list. */
|
|
|
|
void dwarf2_append_unwinders (struct gdbarch *gdbarch);
|
|
|
|
#else /* DWARF_FORMAT_AVAILABLE */
|
|
|
|
static inline bool
|
|
dwarf2_initialize_objfile (struct objfile *,
|
|
const struct dwarf2_debug_sections * = nullptr,
|
|
bool = false)
|
|
{
|
|
warning (_("No dwarf support available."));
|
|
return false;
|
|
}
|
|
|
|
static inline void
|
|
dwarf2_build_frame_info (struct objfile *)
|
|
{
|
|
warning (_("No dwarf support available."));
|
|
}
|
|
|
|
#endif /* DWARF_FORMAT_AVAILABLE */
|
|
|
|
#endif /* GDB_DWARF2_PUBLIC_H */
|