]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb: Make dwarf support optional at compile time
authorGuinevere Larsen <guinevere@redhat.com>
Wed, 12 Feb 2025 11:25:46 +0000 (08:25 -0300)
committerGuinevere Larsen <guinevere@redhat.com>
Tue, 3 Jun 2025 16:36:32 +0000 (13:36 -0300)
commit4b42385c470c5f72f158f382f4d9c36f927aa84f
treee9b51acae5a1df3f553d0ce16087c6e6c9740e49
parent5cbfbe4263a5347501bbe14b53b30cf7c09a9f62
gdb: Make dwarf support optional at compile time

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>
gdb/Makefile.in
gdb/NEWS
gdb/README
gdb/config.in
gdb/configure
gdb/configure.ac
gdb/dwarf2/frame.h
gdb/dwarf2/loc.h
gdb/dwarf2/public.h
gdb/frame-unwind.c
gdb/gdbtypes.c