[binutils-gdb] gdb/dwarf: define type aliases for dwarf2_frame_ops function types
Simon Marchi via Gdb-cvs <[email protected]>
| Newsgroups | gmane.comp.gdb.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=2cb2c073aac1769b1738b2ca22900ce61181e8a9 commit 2cb2c073aac1769b1738b2ca22900ce61181e8a9 Author: Simon Marchi <[email protected]> Date: Wed Mar 11 14:05:44 2026 -0400 gdb/dwarf: define type aliases for dwarf2_frame_ops function types This makes the code less verbose, and I think more readable. Change-Id: I715669281d341bd15547e3eba82c716a953f2274 Approved-By: Tom Tromey <[email protected]> Diff: --- gdb/dwarf2/frame.c | 40 +++++++++++++--------------------------- gdb/dwarf2/frame.h | 45 +++++++++++++++++++++++---------------------- 2 files changed, 36 insertions(+), 49 deletions(-) diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c index f9046bb51df..152bebef0e3 100644 --- a/gdb/dwarf2/frame.c +++ b/gdb/dwarf2/frame.c @@ -590,16 +590,14 @@ static void dwarf2_frame_default_init_reg (struct gdbarch *gdbarch, struct dwarf2_frame_ops { /* Pre-initialize the register state REG for register REGNUM. */ - void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *, - const frame_info_ptr &) - = dwarf2_frame_default_init_reg; + init_reg_ftype *init_reg = dwarf2_frame_default_init_reg; /* Check whether the THIS_FRAME is a signal trampoline. */ - int (*signal_frame_p) (struct gdbarch *, const frame_info_ptr &) = nullptr; + signal_frame_p_ftype *signal_frame_p = nullptr; /* Convert .eh_frame register number to DWARF register number, or adjust .debug_frame register number. */ - int (*adjust_regnum) (struct gdbarch *, int, int) = nullptr; + adjust_regnum_ftype *adjust_regnum = nullptr; }; /* Per-architecture data key. */ @@ -656,14 +654,9 @@ dwarf2_frame_default_init_reg (struct gdbarch *gdbarch, int regnum, function for GDBARCH to INIT_REG. */ void -dwarf2_frame_set_init_reg (struct gdbarch *gdbarch, - void (*init_reg) (struct gdbarch *, int, - struct dwarf2_frame_state_reg *, - const frame_info_ptr &)) +dwarf2_frame_set_init_reg (gdbarch *gdbarch, init_reg_ftype *init_reg) { - struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch); - - ops->init_reg = init_reg; + get_frame_ops (gdbarch)->init_reg = init_reg; } /* Pre-initialize the register state REG for register REGNUM. */ @@ -673,22 +666,17 @@ dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, const frame_info_ptr &this_frame) { - struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch); - - ops->init_reg (gdbarch, regnum, reg, this_frame); + get_frame_ops (gdbarch)->init_reg (gdbarch, regnum, reg, this_frame); } /* Set the architecture-specific signal trampoline recognition function for GDBARCH to SIGNAL_FRAME_P. */ void -dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch, - int (*signal_frame_p) (struct gdbarch *, - const frame_info_ptr &)) +dwarf2_frame_set_signal_frame_p (gdbarch *gdbarch, + signal_frame_p_ftype *signal_frame_p) { - struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch); - - ops->signal_frame_p = signal_frame_p; + get_frame_ops (gdbarch)->signal_frame_p = signal_frame_p; } /* Query the architecture-specific signal frame recognizer for @@ -710,13 +698,10 @@ dwarf2_frame_signal_frame_p (struct gdbarch *gdbarch, register numbers. */ void -dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, - int (*adjust_regnum) (struct gdbarch *, - int, int)) +dwarf2_frame_set_adjust_regnum (gdbarch *gdbarch, + adjust_regnum_ftype *adjust_regnum) { - struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch); - - ops->adjust_regnum = adjust_regnum; + get_frame_ops (gdbarch)->adjust_regnum = adjust_regnum; } /* Translate a .eh_frame register to DWARF register, or adjust a .debug_frame @@ -730,6 +715,7 @@ dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch, if (ops->adjust_regnum == NULL) return regnum; + return ops->adjust_regnum (gdbarch, regnum, eh_frame_p); } diff --git a/gdb/dwarf2/frame.h b/gdb/dwarf2/frame.h index 47f9ed88f7c..c3bbfcc03f5 100644 --- a/gdb/dwarf2/frame.h +++ b/gdb/dwarf2/frame.h @@ -198,6 +198,11 @@ struct dwarf2_frame_state bool armcc_cfa_offsets_reversed = false; }; +using init_reg_ftype = void (gdbarch *, int, dwarf2_frame_state_reg *, + const frame_info_ptr &); +using signal_frame_p_ftype = int (gdbarch *, const frame_info_ptr &); +using adjust_regnum_ftype = int (gdbarch *, int, int); + /* If DWARF supoprt was requested, create the real prototype for the append_unwinders function. Otherwise, create a fake inline function. @@ -210,25 +215,19 @@ struct dwarf2_frame_state /* Set the architecture-specific register state initialization function for GDBARCH to INIT_REG. */ -extern void dwarf2_frame_set_init_reg ( - gdbarch *gdbarch, void (*init_reg) (struct gdbarch *, int, - dwarf2_frame_state_reg *, - const frame_info_ptr &)); +void dwarf2_frame_set_init_reg (gdbarch *gdbarch, init_reg_ftype *init_reg); /* Set the architecture-specific signal trampoline recognition function for GDBARCH to SIGNAL_FRAME_P. */ -extern void dwarf2_frame_set_signal_frame_p - (gdbarch *gdbarch, int (*signal_frame_p) (struct gdbarch *, - const frame_info_ptr &)); +void dwarf2_frame_set_signal_frame_p (gdbarch *gdbarch, + signal_frame_p_ftype *signal_frame_p); /* Set the architecture-specific adjustment of .eh_frame and .debug_frame register numbers. */ -extern void - dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, - int (*adjust_regnum) (struct gdbarch *, - int, int)); +void dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, + adjust_regnum_ftype *adjust_regnum); /* Append the DWARF-2 frame unwinders to GDBARCH's list. */ @@ -300,10 +299,10 @@ extern void *dwarf2_frame_get_fn_data (const frame_info_ptr &this_frame, static inline void dwarf2_append_unwinders (struct gdbarch *gdbarch) { } -static inline void dwarf2_frame_set_init_reg ( - gdbarch *gdbarch, void (*init_reg) (struct gdbarch *,int, - dwarf2_frame_state_reg *, - const frame_info_ptr &)) { } +static inline void +dwarf2_frame_set_init_reg (gdbarch *gdbarch, init_reg_ftype *init_reg) +{ +} static inline const struct frame_base * dwarf2_frame_base_sniffer (const frame_info_ptr &this_frame) @@ -312,9 +311,11 @@ static inline const struct frame_base * return nullptr; } -static inline void dwarf2_frame_set_signal_frame_p - (gdbarch *gdbarch, int (*signal_frame_p) (struct gdbarch *, - const frame_info_ptr &)) { } +static inline void +dwarf2_frame_set_signal_frame_p (gdbarch *gdbarch, + signal_frame_p_ftype *signal_frame_p) +{ +} static inline void *dwarf2_frame_get_fn_data (const frame_info_ptr &this_frame, void **this_cache, @@ -341,10 +342,10 @@ dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc, } static inline void - dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, - int (*adjust_regnum) (struct gdbarch *, - int, int)) -{} +dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, + adjust_regnum_ftype *adjust_regnum) +{ +} #endif /* DWARF_FORMAT_AVAILABLE */