From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 74887 invoked by alias); 13 Nov 2016 19:17:31 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 74864 invoked by uid 9674); 13 Nov 2016 19:17:31 -0000 Date: Sun, 13 Nov 2016 19:17:00 -0000 Message-ID: <20161113191731.74831.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] users/jkratoch/dwarf5gcc-gdb: . X-Git-Refname: refs/heads/users/jkratoch/dwarf5gcc-gdb X-Git-Reftype: branch X-Git-Oldrev: ace66aaeae939d294394b5952875212aa4079bfb X-Git-Newrev: 5081154c2e916bbfd514f991bf0a0dc468c81fa7 X-SW-Source: 2016-q4/txt/msg00016.txt.bz2 List-Id: The branch, users/jkratoch/dwarf5gcc-gdb has been updated via 5081154c2e916bbfd514f991bf0a0dc468c81fa7 (commit) via cfa30da148c311244fde6d32a616ce7d97a1cae4 (commit) via c11f9e415ff047f16c291252494d88667477636f (commit) via b83a6bf5d493544e21bf1436e9d544ccfa556515 (commit) via 115c1ea532332a719649e68d453c4a5ad29289aa (commit) via 812e39f75ec8308cc725ab954e362edcc3566d61 (commit) from ace66aaeae939d294394b5952875212aa4079bfb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 5081154c2e916bbfd514f991bf0a0dc468c81fa7 Author: Jan Kratochvil Date: Sun Nov 13 20:17:10 2016 +0100 . commit cfa30da148c311244fde6d32a616ce7d97a1cae4 Merge: 115c1ea c11f9e4 Author: Jan Kratochvil Date: Sun Nov 13 20:00:24 2016 +0100 Merge branch 'dwarf5gcc-gdb' into dwarf5gcc-gdb-callsite commit c11f9e415ff047f16c291252494d88667477636f Author: Jan Kratochvil Date: Sun Nov 13 20:00:15 2016 +0100 . commit b83a6bf5d493544e21bf1436e9d544ccfa556515 Author: Jan Kratochvil Date: Sun Nov 13 19:35:40 2016 +0100 . commit 115c1ea532332a719649e68d453c4a5ad29289aa Merge: 812e39f ace66aa Author: Jan Kratochvil Date: Sun Nov 13 17:02:27 2016 +0100 Merge branch 'dwarf5gcc-gdb' into dwarf5gcc-gdb-callsite commit 812e39f75ec8308cc725ab954e362edcc3566d61 Author: Jan Kratochvil Date: Tue Nov 8 20:23:37 2016 +0100 . ----------------------------------------------------------------------- Summary of changes: gdb/block.c | 4 +- gdb/common/common-exceptions.h | 2 +- gdb/doc/gdb.texinfo | 10 +- gdb/dwarf2-frame.c | 2 +- gdb/dwarf2expr.c | 23 +- gdb/dwarf2expr.h | 10 +- gdb/dwarf2loc.c | 59 ++-- gdb/dwarf2read.c | 392 ++++++++++++++------ gdb/gdbtypes.h | 22 +- gdb/stack.c | 5 +- gdb/std-operator.def | 2 +- gdb/symfile.h | 1 + gdb/testsuite/gdb.arch/amd64-entry-value-param.exp | 2 +- gdb/xcoffread.c | 1 + 14 files changed, 355 insertions(+), 180 deletions(-) First 500 lines of diff: diff --git a/gdb/block.c b/gdb/block.c index 0dc6b9d..d6327aa 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -239,8 +239,8 @@ call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc) /* DW_TAG_gnu_call_site will be missing just if GCC could not determine the call target. */ throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_OP_GNU_entry_value resolving cannot find " - "DW_TAG_GNU_call_site %s in %s"), + _("DW_OP_entry_value resolving cannot find " + "DW_TAG_call_site %s in %s"), paddress (gdbarch, pc), (msym.minsym == NULL ? "???" : MSYMBOL_PRINT_NAME (msym.minsym))); diff --git a/gdb/common/common-exceptions.h b/gdb/common/common-exceptions.h index 4cc56b4..2820dad 100644 --- a/gdb/common/common-exceptions.h +++ b/gdb/common/common-exceptions.h @@ -87,7 +87,7 @@ enum errors { means the register was not saved in the frame. */ OPTIMIZED_OUT_ERROR, - /* DW_OP_GNU_entry_value resolving failed. */ + /* DW_OP_entry_value resolving failed. */ NO_ENTRY_VALUE_ERROR, /* Target throwing an error has been closed. Current command should be diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index df548dc..2e7d07e 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -9848,7 +9848,7 @@ this feature will behave in the @code{default} setting the same way as with the @code{no} setting. This functionality is currently supported only by DWARF 2 debugging format and -the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With +the compiler has to produce @samp{DW_TAG_call_site} tags. With @value{NGCC}, you need to specify @option{-O -g} during compilation, to get this information. @@ -12016,7 +12016,7 @@ some cases @value{GDBN} can determine that @code{C} was tail-called from return address set up as if @code{B} called @code{C} normally. This functionality is currently supported only by DWARF 2 debugging format and -the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With +the compiler has to produce @samp{DW_TAG_call_site} tags. With @value{NGCC}, you need to specify @option{-O -g} during compilation, to get this information. @@ -12069,8 +12069,8 @@ static void __attribute__((noinline, noclone)) a (void) @{ x++; @} static void __attribute__((noinline, noclone)) c (void) @{ a (); @} int main (void) @{ x (); return 0; @} -Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find -DW_TAG_GNU_call_site 0x40039a in main +Breakpoint 1, DW_OP_entry_value resolving cannot find +DW_TAG_call_site 0x40039a in main a () at t.c:3 3 static void __attribute__((noinline, noclone)) a (void) @{ x++; @} (gdb) bt @@ -12146,7 +12146,7 @@ int main (void) @{ a (5); return 0; @} (gdb) bt #0 c (i=i@@entry=0) at t.c:2 -#1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found +#1 0x0000000000400428 in a (DW_OP_entry_value resolving has found function "a" at 0x400420 can call itself via tail calls i=) at t.c:6 #2 0x000000000040036e in main () at t.c:7 diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index beab304..06ae951 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -361,7 +361,7 @@ class dwarf_expr_executor : public dwarf_expr_context union call_site_parameter_u kind_u, int deref_size) OVERRIDE { - invalid ("DW_OP_GNU_entry_value"); + invalid ("DW_OP_entry_value"); } CORE_ADDR get_object_address () OVERRIDE diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c index 398ca0e..68bf8ff 100644 --- a/gdb/dwarf2expr.c +++ b/gdb/dwarf2expr.c @@ -423,7 +423,7 @@ dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end) return *buf - DW_OP_reg0; } - if (*buf == DW_OP_GNU_regval_type) + if (*buf == DW_OP_regval_type || *buf == DW_OP_GNU_regval_type) { buf++; buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg); @@ -805,12 +805,13 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value"); goto no_push; + case DW_OP_implicit_pointer: case DW_OP_GNU_implicit_pointer: { int64_t len; if (this->ref_addr_size == -1) - error (_("DWARF-2 expression error: DW_OP_GNU_implicit_pointer " + error (_("DWARF-2 expression error: DW_OP_implicit_pointer " "is not allowed in frame context")); /* The referred-to DIE of sect_offset kind. */ @@ -825,7 +826,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, this->location = DWARF_VALUE_IMPLICIT_POINTER; dwarf_expr_require_composition (op_ptr, op_end, - "DW_OP_GNU_implicit_pointer"); + "DW_OP_implicit_pointer"); } break; @@ -963,6 +964,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, case DW_OP_deref: case DW_OP_deref_size: + case DW_OP_deref_type: case DW_OP_GNU_deref_type: { int addr_size = (op == DW_OP_deref ? this->addr_size : *op_ptr++); @@ -972,7 +974,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, pop (); - if (op == DW_OP_GNU_deref_type) + if (op == DW_OP_deref_type || op == DW_OP_GNU_deref_type) { cu_offset type_die; @@ -1299,6 +1301,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, } goto no_push; + case DW_OP_entry_value: case DW_OP_GNU_entry_value: { uint64_t len; @@ -1307,7 +1310,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, op_ptr = safe_read_uleb128 (op_ptr, op_end, &len); if (op_ptr + len > op_end) - error (_("DW_OP_GNU_entry_value: too few bytes available.")); + error (_("DW_OP_entry_value: too few bytes available.")); kind_u.dwarf_reg = dwarf_block_to_dwarf_reg (op_ptr, op_ptr + len); if (kind_u.dwarf_reg != -1) @@ -1332,7 +1335,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, goto no_push; } - error (_("DWARF-2 expression error: DW_OP_GNU_entry_value is " + error (_("DWARF-2 expression error: DW_OP_entry_value is " "supported only for single DW_OP_reg* " "or for DW_OP_breg*(0)+DW_OP_deref*")); } @@ -1350,6 +1353,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, } goto no_push; + case DW_OP_const_type: case DW_OP_GNU_const_type: { cu_offset type_die; @@ -1368,6 +1372,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, } break; + case DW_OP_regval_type: case DW_OP_GNU_regval_type: { cu_offset type_die; @@ -1382,7 +1387,9 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, } break; + case DW_OP_convert: case DW_OP_GNU_convert: + case DW_OP_reinterpret: case DW_OP_GNU_reinterpret: { cu_offset type_die; @@ -1399,7 +1406,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, result_val = fetch (0); pop (); - if (op == DW_OP_GNU_convert) + if (op == DW_OP_convert || op == DW_OP_GNU_convert) result_val = value_cast (type, result_val); else if (type == value_type (result_val)) { @@ -1407,7 +1414,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr, } else if (TYPE_LENGTH (type) != TYPE_LENGTH (value_type (result_val))) - error (_("DW_OP_GNU_reinterpret has wrong size")); + error (_("DW_OP_reinterpret has wrong size")); else result_val = value_from_contents (type, diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h index 883c54c..7692c33 100644 --- a/gdb/dwarf2expr.h +++ b/gdb/dwarf2expr.h @@ -164,7 +164,7 @@ struct dwarf_expr_context /* Return the PC for the frame. */ virtual CORE_ADDR get_frame_pc () { - error (_("%s is invalid in this context"), "DW_OP_GNU_implicit_pointer"); + error (_("%s is invalid in this context"), "DW_OP_implicit_pointer"); } /* Return the thread-local storage address for @@ -187,10 +187,10 @@ struct dwarf_expr_context return builtin_type (this->gdbarch)->builtin_int; } - /* Push on DWARF stack an entry evaluated for DW_TAG_GNU_call_site's + /* 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_GNU_call_site_data_value instead of - DW_AT_GNU_call_site_value. */ + If DEREF_SIZE is not -1 then use DW_AT_call_data_value instead of + DW_AT_call_value. */ virtual void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, int deref_size) = 0; @@ -248,7 +248,7 @@ struct dwarf_expr_piece /* Used for DWARF_VALUE_IMPLICIT_POINTER. */ struct { - /* The referent DIE from DW_OP_GNU_implicit_pointer. */ + /* The referent DIE from DW_OP_implicit_pointer. */ sect_offset die; /* The byte offset into the resulting data. */ LONGEST offset; diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index d33bef8..8ce0ae6 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -576,9 +576,9 @@ class dwarf_evaluate_loc_desc : public dwarf_expr_context { struct type *result = dwarf2_get_die_type (die_offset, per_cu); if (result == NULL) - error (_("Could not find type for DW_OP_GNU_const_type")); + error (_("Could not find type for DW_OP_const_type")); if (size != 0 && TYPE_LENGTH (result) != size) - error (_("DW_OP_GNU_const_type has different sizes for type and data")); + error (_("DW_OP_const_type has different sizes for type and data")); return result; } @@ -628,7 +628,7 @@ class dwarf_evaluate_loc_desc : public dwarf_expr_context /* DEREF_SIZE size is not verified here. */ if (data_src == NULL) throw_error (NO_ENTRY_VALUE_ERROR, - _("Cannot resolve DW_AT_GNU_call_site_data_value")); + _("Cannot resolve DW_AT_call_data_value")); scoped_restore save_frame = make_scoped_restore (&this->frame, caller_frame); @@ -720,7 +720,7 @@ show_entry_values_debug (struct ui_file *file, int from_tty, value); } -/* Find DW_TAG_GNU_call_site's DW_AT_GNU_call_site_target address. +/* Find DW_TAG_call_site's DW_AT_call_target address. CALLER_FRAME (for registers) can be NULL if it is not known. This function always returns valid address or it throws NO_ENTRY_VALUE_ERROR. */ @@ -745,8 +745,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch, msym = lookup_minimal_symbol_by_pc (call_site->pc - 1); throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_AT_GNU_call_site_target is not specified " - "at %s in %s"), + _("DW_AT_call_target is not specified at %s in %s"), paddress (call_site_gdbarch, call_site->pc), (msym.minsym == NULL ? "???" : MSYMBOL_PRINT_NAME (msym.minsym))); @@ -758,7 +757,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch, msym = lookup_minimal_symbol_by_pc (call_site->pc - 1); throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_AT_GNU_call_site_target DWARF block resolving " + _("DW_AT_call_target DWARF block resolving " "requires known frame which is currently not " "available at %s in %s"), paddress (call_site_gdbarch, call_site->pc), @@ -771,8 +770,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch, val = dwarf2_evaluate_loc_desc (caller_core_addr_type, caller_frame, dwarf_block->data, dwarf_block->size, dwarf_block->per_cu); - /* DW_AT_GNU_call_site_target is a DWARF expression, not a DWARF - location. */ + /* DW_AT_call_target is a DWARF expression, not a DWARF location. */ if (VALUE_LVAL (val) == lval_memory) return value_address (val); else @@ -822,7 +820,7 @@ func_addr_to_tail_call_list (struct gdbarch *gdbarch, CORE_ADDR addr) if (sym == NULL || BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) != addr) throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_TAG_GNU_call_site resolving failed to find function " + _("DW_TAG_call_site resolving failed to find function " "name for address %s"), paddress (gdbarch, addr)); @@ -891,7 +889,7 @@ func_verify_no_selftailcall (struct gdbarch *gdbarch, CORE_ADDR verify_addr) msym = lookup_minimal_symbol_by_pc (verify_addr); throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_OP_GNU_entry_value resolving has found " + _("DW_OP_entry_value resolving has found " "function \"%s\" at %s can call itself via tail " "calls"), (msym.minsym == NULL ? "???" @@ -1264,7 +1262,7 @@ dwarf_expr_reg_to_entry_parameter (struct frame_info *frame, struct gdbarch *caller_gdbarch = frame_unwind_arch (frame); throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_OP_GNU_entry_value resolving callee gdbarch %s " + _("DW_OP_entry_value resolving callee gdbarch %s " "(of %s (%s)) does not match caller gdbarch %s"), gdbarch_bfd_arch_info (gdbarch)->printable_name, paddress (gdbarch, func_addr), @@ -1278,7 +1276,7 @@ dwarf_expr_reg_to_entry_parameter (struct frame_info *frame, struct bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (func_addr); - throw_error (NO_ENTRY_VALUE_ERROR, _("DW_OP_GNU_entry_value resolving " + throw_error (NO_ENTRY_VALUE_ERROR, _("DW_OP_entry_value resolving " "requires caller of %s (%s)"), paddress (gdbarch, func_addr), (msym.minsym == NULL ? "???" @@ -1295,7 +1293,7 @@ dwarf_expr_reg_to_entry_parameter (struct frame_info *frame, target_msym = lookup_minimal_symbol_by_pc (target_addr).minsym; func_msym = lookup_minimal_symbol_by_pc (func_addr).minsym; throw_error (NO_ENTRY_VALUE_ERROR, - _("DW_OP_GNU_entry_value resolving expects callee %s at %s " + _("DW_OP_entry_value resolving expects callee %s at %s " "but the called frame is for %s at %s"), (target_msym == NULL ? "???" : MSYMBOL_PRINT_NAME (target_msym)), @@ -1319,10 +1317,10 @@ dwarf_expr_reg_to_entry_parameter (struct frame_info *frame, struct minimal_symbol *msym = lookup_minimal_symbol_by_pc (caller_pc).minsym; - /* DW_TAG_GNU_call_site_parameter will be missing just if GCC could not + /* DW_TAG_call_site_parameter will be missing just if GCC could not determine its value. */ throw_error (NO_ENTRY_VALUE_ERROR, _("Cannot find matching parameter " - "at DW_TAG_GNU_call_site %s at %s"), + "at DW_TAG_call_site %s at %s"), paddress (gdbarch, caller_pc), msym == NULL ? "???" : MSYMBOL_PRINT_NAME (msym)); } @@ -1332,8 +1330,8 @@ dwarf_expr_reg_to_entry_parameter (struct frame_info *frame, } /* Return value for PARAMETER matching DEREF_SIZE. If DEREF_SIZE is -1, return - the normal DW_AT_GNU_call_site_value block. Otherwise return the - DW_AT_GNU_call_site_data_value (dereferenced) block. + the normal DW_AT_call_value block. Otherwise return the + DW_AT_call_data_value (dereferenced) block. TYPE and CALLER_FRAME specify how to evaluate the DWARF block into returned struct value. @@ -1357,9 +1355,9 @@ dwarf_entry_parameter_to_value (struct call_site_parameter *parameter, /* DEREF_SIZE size is not verified here. */ if (data_src == NULL) throw_error (NO_ENTRY_VALUE_ERROR, - _("Cannot resolve DW_AT_GNU_call_site_data_value")); + _("Cannot resolve DW_AT_call_data_value")); - /* DW_AT_GNU_call_site_value is a DWARF expression, not a DWARF + /* DW_AT_call_value is a DWARF expression, not a DWARF location. Postprocessing of DWARF_VALUE_MEMORY would lose the type from DWARF block. */ data = (gdb_byte *) alloca (size + 1); @@ -1410,7 +1408,7 @@ entry_data_value_free_closure (struct value *v) /* Vector for methods for an entry value reference where the referenced value is stored in the caller. On the first dereference use - DW_AT_GNU_call_site_data_value in the caller. */ + DW_AT_call_data_value in the caller. */ static const struct lval_funcs entry_data_value_funcs = { @@ -1425,7 +1423,7 @@ static const struct lval_funcs entry_data_value_funcs = /* Read parameter of TYPE at (callee) FRAME's function entry. KIND and KIND_U are used to match DW_AT_location at the caller's - DW_TAG_GNU_call_site_parameter. + DW_TAG_call_site_parameter. Function always returns non-NULL value. It throws NO_ENTRY_VALUE_ERROR if it cannot resolve the parameter for any reason. */ @@ -1449,7 +1447,7 @@ value_of_dwarf_reg_entry (struct type *type, struct frame_info *frame, type, caller_frame, caller_per_cu); - /* Check if DW_AT_GNU_call_site_data_value cannot be used. If it should be + /* Check if DW_AT_call_data_value cannot be used. If it should be used and it is not available do not fall back to OUTER_VAL - dereferencing TYPE_CODE_REF with non-entry data value would give current value - not the entry value. */ @@ -1477,7 +1475,7 @@ value_of_dwarf_reg_entry (struct type *type, struct frame_info *frame, /* Read parameter of TYPE at (callee) FRAME's function entry. DATA and SIZE are DWARF block used to match DW_AT_location at the caller's - DW_TAG_GNU_call_site_parameter. + DW_TAG_call_site_parameter. Function always returns non-NULL value. It throws NO_ENTRY_VALUE_ERROR if it cannot resolve the parameter for any reason. */ @@ -1501,7 +1499,7 @@ value_of_dwarf_block_entry (struct type *type, struct frame_info *frame, suppressed during normal operation. The expression can be arbitrary if there is no caller-callee entry value binding expected. */ throw_error (NO_ENTRY_VALUE_ERROR, - _("DWARF-2 expression error: DW_OP_GNU_entry_value is supported " + _("DWARF-2 expression error: DW_OP_entry_value is supported " "only for single DW_OP_reg* or for DW_OP_fbreg(*)")); } @@ -2196,7 +2194,7 @@ indirect_pieced_value (struct value *value) return NULL; if (bit_length != 0) - error (_("Invalid use of DW_OP_GNU_implicit_pointer")); + error (_("Invalid use of DW_OP_implicit_pointer")); piece = p; break; @@ -2792,7 +2790,7 @@ class symbol_needs_eval_context : public dwarf_expr_context per_cu_dwarf_call (this, die_offset, per_cu); } - /* DW_OP_GNU_entry_value accesses require a caller, therefore a + /* DW_OP_entry_value accesses require a caller, therefore a frame. */ void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind, @@ -4153,6 +4151,7 @@ disassemble_dwarf_expression (struct ui_file *stream, } break; + case DW_OP_implicit_pointer: case DW_OP_GNU_implicit_pointer: { ul = extract_unsigned_integer (data, offset_size, @@ -4167,6 +4166,7 @@ disassemble_dwarf_expression (struct ui_file *stream, } break; + case DW_OP_deref_type: case DW_OP_GNU_deref_type: { int addr_size = *data++; @@ -4183,6 +4183,7 @@ disassemble_dwarf_expression (struct ui_file *stream, } break; + case DW_OP_const_type: case DW_OP_GNU_const_type: { cu_offset type_die; @@ -4197,6 +4198,7 @@ disassemble_dwarf_expression (struct ui_file *stream, } break; + case DW_OP_regval_type: case DW_OP_GNU_regval_type: { uint64_t reg; @@ -4216,7 +4218,9 @@ disassemble_dwarf_expression (struct ui_file *stream, } break; + case DW_OP_convert: case DW_OP_GNU_convert: + case DW_OP_reinterpret: case DW_OP_GNU_reinterpret: { cu_offset type_die; @@ -4238,6 +4242,7 @@ disassemble_dwarf_expression (struct ui_file *stream, } break; + case DW_OP_entry_value: case DW_OP_GNU_entry_value: data = safe_read_uleb128 (data, end, &ul); fputc_filtered ('\n', stream); hooks/post-receive -- Repository for Project Archer.