diff options
author | Tom Tromey <tom@tromey.com> | 2016-10-19 21:38:38 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2016-10-21 14:17:40 -0600 |
commit | befbff861e07212f4073e4ce72e4b45cca3e0f8d (patch) | |
tree | cd6b3316cee33940b42953135f5c75da04657acd /gdb/dwarf2-frame.c | |
parent | ce6c454e5acbaec4e0c22e9c8af0fe7686a53baa (diff) | |
download | binutils-befbff861e07212f4073e4ce72e4b45cca3e0f8d.zip binutils-befbff861e07212f4073e4ce72e4b45cca3e0f8d.tar.gz binutils-befbff861e07212f4073e4ce72e4b45cca3e0f8d.tar.bz2 |
Make some dwarf_expr_context methods pure virtual
This patch changes some dwarf_expr_context to be pure virtual, as
mentioned during the discussion of an earlier patch in this series.
2016-10-21 Tom Tromey <tom@tromey.com>
* dwarf2expr.h (class dwarf_expr_context)
<get_frame_base, get_frame_cfa, get_tls_address, dwarf_call,
push_dwarf_block_entry_value, get_addr_index, get_object_address>:
Now pure virtual.
* dwarf2-frame.c (class dwarf_expr_executor)
<get_frame_base, get_frame_cfa, get_tls_address, dwarf_call,
push_dwarf_block_entry_value, get_addr_index, get_object_address>:
New methods.
<invalid>: New method.
Diffstat (limited to 'gdb/dwarf2-frame.c')
-rw-r--r-- | gdb/dwarf2-frame.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index c9962e1..beab304 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -351,6 +351,50 @@ class dwarf_expr_executor : public dwarf_expr_context { read_memory (addr, buf, len); } + + void get_frame_base (const gdb_byte **start, size_t *length) OVERRIDE + { + invalid ("DW_OP_fbreg"); + } + + void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind, + union call_site_parameter_u kind_u, + int deref_size) OVERRIDE + { + invalid ("DW_OP_GNU_entry_value"); + } + + CORE_ADDR get_object_address () OVERRIDE + { + invalid ("DW_OP_push_object_address"); + } + + CORE_ADDR get_frame_cfa () OVERRIDE + { + invalid ("DW_OP_call_frame_cfa"); + } + + CORE_ADDR get_tls_address (CORE_ADDR offset) OVERRIDE + { + invalid ("DW_OP_form_tls_address"); + } + + void dwarf_call (cu_offset die_offset) OVERRIDE + { + invalid ("DW_OP_call*"); + } + + CORE_ADDR get_addr_index (unsigned int index) + { + invalid ("DW_OP_GNU_addr_index"); + } + + private: + + void invalid (const char *op) ATTRIBUTE_NORETURN + { + error (_("%s is invalid in this context"), op); + } }; static CORE_ADDR |