diff options
Diffstat (limited to 'gdb/dwarf2expr.h')
-rw-r--r-- | gdb/dwarf2expr.h | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h index fd70bf9..6b5d649 100644 --- a/gdb/dwarf2expr.h +++ b/gdb/dwarf2expr.h @@ -25,6 +25,18 @@ struct dwarf_expr_context; +/* Offset relative to the start of its containing CU (compilation unit). */ +typedef struct +{ + unsigned int cu_off; +} cu_offset; + +/* Offset relative to the start of its .debug_info or .debug_types section. */ +typedef struct +{ + unsigned int sect_off; +} sect_offset; + /* Virtual method table for struct dwarf_expr_context below. */ struct dwarf_expr_context_funcs @@ -53,14 +65,14 @@ struct dwarf_expr_context_funcs /* Execute DW_AT_location expression for the DWARF expression subroutine in the DIE at DIE_OFFSET in the CU from CTX. Do not touch STACK while it being passed to and returned from the called DWARF subroutine. */ - void (*dwarf_call) (struct dwarf_expr_context *ctx, size_t die_offset); + void (*dwarf_call) (struct dwarf_expr_context *ctx, cu_offset die_offset); /* Return the base type given by the indicated DIE. This can throw an exception if the DIE is invalid or does not represent a base type. If can also be NULL in the special case where the callbacks are not performing evaluation, and thus it is meaningful to substitute a stub type of the correct size. */ - struct type *(*get_base_type) (struct dwarf_expr_context *ctx, size_t die); + struct type *(*get_base_type) (struct dwarf_expr_context *ctx, cu_offset die); /* Push on DWARF stack an entry evaluated for DW_TAG_GNU_call_site's DWARF_REG/FB_OFFSET at the caller of specified BATON. If DWARF register @@ -160,7 +172,7 @@ struct dwarf_expr_context /* For DWARF_VALUE_LITERAL, the current literal value's length and data. For DWARF_VALUE_IMPLICIT_POINTER, LEN is the offset of the - target DIE. */ + target DIE of cu_offset kind. */ ULONGEST len; const gdb_byte *data; @@ -231,7 +243,7 @@ struct dwarf_expr_piece struct { /* The referent DIE from DW_OP_GNU_implicit_pointer. */ - ULONGEST die; + cu_offset die; /* The byte offset into the resulting data. */ LONGEST offset; } ptr; @@ -275,8 +287,9 @@ void ctx_no_get_frame_base (void *baton, const gdb_byte **start, CORE_ADDR ctx_no_get_frame_cfa (void *baton); CORE_ADDR ctx_no_get_frame_pc (void *baton); CORE_ADDR ctx_no_get_tls_address (void *baton, CORE_ADDR offset); -void ctx_no_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset); -struct type *ctx_no_get_base_type (struct dwarf_expr_context *ctx, size_t die); +void ctx_no_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset); +struct type *ctx_no_get_base_type (struct dwarf_expr_context *ctx, + cu_offset die); void ctx_no_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx, int dwarf_reg, CORE_ADDR fb_offset, int deref_size); |