diff options
author | Zoran Zaric <zoran.zaric@amd.com> | 2020-09-15 10:27:29 +0100 |
---|---|---|
committer | Zoran Zaric <zoran.zaric@amd.com> | 2021-08-05 16:39:43 +0100 |
commit | b6d156edd8f2186445ff7b73dede720619a27d02 (patch) | |
tree | 6e7f9b6d1cf8ad722c79768e53401aea1e6a703f /gdb/dwarf2/expr.h | |
parent | a580d9604bb71c19741465f2e3a46c5a07672be0 (diff) | |
download | fsf-binutils-gdb-b6d156edd8f2186445ff7b73dede720619a27d02.zip fsf-binutils-gdb-b6d156edd8f2186445ff7b73dede720619a27d02.tar.gz fsf-binutils-gdb-b6d156edd8f2186445ff7b73dede720619a27d02.tar.bz2 |
Move dwarf_call to dwarf_expr_context
Following the idea of merging the evaluators, the dwarf_call and
get_frame_pc method can be moved from dwarf_expr_executor and
dwarf_evaluate_loc_desc classes to their base class dwarf_expr_context.
Once this is done, the get_frame_pc can be replace with lambda
function.
gdb/ChangeLog:
* dwarf2/expr.c (dwarf_expr_context::dwarf_call): Move from
dwarf_evaluate_loc_desc.
(dwarf_expr_context::get_frame_pc): Replace with lambda.
* dwarf2/expr.h (dwarf_expr_context::get_frame_pc): Remove
method.
* dwarf2/frame.c (dwarf_expr_executor::dwarf_call): Remove
method.
(dwarf_expr_executor::get_frame_pc): Remove method.
* dwarf2/loc.c (dwarf_evaluate_loc_desc::get_frame_pc): Remove
method.
(dwarf_evaluate_loc_desc::dwarf_call): Move to
dwarf_expr_context.
(per_cu_dwarf_call): Inline function.
Diffstat (limited to 'gdb/dwarf2/expr.h')
-rw-r--r-- | gdb/dwarf2/expr.h | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/gdb/dwarf2/expr.h b/gdb/dwarf2/expr.h index 76c4672..52f5051 100644 --- a/gdb/dwarf2/expr.h +++ b/gdb/dwarf2/expr.h @@ -191,22 +191,6 @@ struct dwarf_expr_context /* Read LENGTH bytes at ADDR into BUF. */ virtual void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t length) = 0; - /* Return the PC for the frame. */ - virtual CORE_ADDR get_frame_pc () - { - error (_("%s is invalid in this context"), "DW_OP_implicit_pointer"); - } - - /* Return the thread-local storage address for - DW_OP_GNU_push_tls_address or DW_OP_form_tls_address. */ - virtual CORE_ADDR get_tls_address (CORE_ADDR offset) = 0; - - /* Execute DW_AT_location expression for the DWARF expression - subroutine in the DIE at DIE_CU_OFF in the CU. Do not touch - STACK while it being passed to and returned from the called DWARF - subroutine. */ - virtual void dwarf_call (cu_offset die_cu_off) = 0; - /* Push on DWARF stack an entry evaluated for DW_TAG_call_site's parameter matching KIND and KIND_U at the caller of specified BATON. If DEREF_SIZE is not -1 then use DW_AT_call_data_value instead of @@ -242,6 +226,12 @@ private: This can throw an exception if the DIE is invalid or does not represent a base type. */ struct type *get_base_type (cu_offset die_cu_off); + + /* Execute DW_AT_location expression for the DWARF expression + subroutine in the DIE at DIE_CU_OFF in the CU. Do not touch + STACK while it being passed to and returned from the called DWARF + subroutine. */ + void dwarf_call (cu_offset die_cu_off); }; /* Return the value of register number REG (a DWARF register number), |