From b1bfef653388230e8c7cf1a668c2cf2461c22fc1 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 16 Feb 2011 21:32:05 +0000 Subject: [PATCH] * dwarf2loc.c (unimplemented): Handle unnamed opcodes. (compile_dwarf_to_ax) : Use unimplemented. : Update. (disassemble_dwarf_expression): Update. * dwarf2read.c (dwarf_stack_op_name): Remove 'def' argument. (decode_locdesc): Update. * dwarf2expr.h (dwarf_stack_op_name): Update. --- gdb/ChangeLog | 10 ++++++++++ gdb/dwarf2expr.h | 2 +- gdb/dwarf2loc.c | 18 +++++++++++++----- gdb/dwarf2read.c | 17 +++++++++++++---- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b3e9adc9f4..05a4843fef 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2011-02-16 Tom Tromey + + * dwarf2loc.c (unimplemented): Handle unnamed opcodes. + (compile_dwarf_to_ax) : Use unimplemented. + : Update. + (disassemble_dwarf_expression): Update. + * dwarf2read.c (dwarf_stack_op_name): Remove 'def' argument. + (decode_locdesc): Update. + * dwarf2expr.h (dwarf_stack_op_name): Update. + 2011-02-16 Tom Tromey * ax.h (struct aop_map) : Now const. diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h index 3858dc8d5f..620269fb10 100644 --- a/gdb/dwarf2expr.h +++ b/gdb/dwarf2expr.h @@ -229,7 +229,7 @@ const gdb_byte *read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end, const gdb_byte *read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end, LONGEST * r); -const char *dwarf_stack_op_name (unsigned int, int); +const char *dwarf_stack_op_name (unsigned int); void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *, const char *); diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 0f58954d76..f90335dfc9 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -1334,8 +1334,14 @@ dwarf2_loc_desc_needs_frame (const gdb_byte *data, unsigned short size, static void unimplemented (unsigned int op) { - error (_("DWARF operator %s cannot be translated to an agent expression"), - dwarf_stack_op_name (op, 1)); + const char *name = dwarf_stack_op_name (op); + + if (name) + error (_("DWARF operator %s cannot be translated to an agent expression"), + name); + else + error (_("Unknown DWARF operator 0x%02x cannot be to an agent expression"), + op); } /* A helper function to convert a DWARF register to an arch register. @@ -1793,8 +1799,10 @@ compile_dwarf_to_ax (struct agent_expr *expr, struct axs_value *loc, ax_simple (expr, aop_ref64); break; default: + /* Note that dwarf_stack_op_name will never return + NULL here. */ error (_("Unsupported size %d in %s"), - size, dwarf_stack_op_name (op, 1)); + size, dwarf_stack_op_name (op)); } } break; @@ -2070,7 +2078,7 @@ compile_dwarf_to_ax (struct agent_expr *expr, struct axs_value *loc, unimplemented (op); default: - error (_("Unhandled dwarf expression opcode 0x%x"), op); + unimplemented (op); } } @@ -2295,7 +2303,7 @@ disassemble_dwarf_expression (struct ui_file *stream, LONGEST l; const char *name; - name = dwarf_stack_op_name (op, 0); + name = dwarf_stack_op_name (op); if (!name) error (_("Unrecognized DWARF opcode 0x%02x at %ld"), diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 837fa3bc6f..08b804ab6c 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -12497,7 +12497,7 @@ dwarf_form_name (unsigned form) /* Convert a DWARF stack opcode into its string name. */ const char * -dwarf_stack_op_name (unsigned op, int def) +dwarf_stack_op_name (unsigned op) { switch (op) { @@ -12819,7 +12819,7 @@ dwarf_stack_op_name (unsigned op, int def) case DW_OP_GNU_implicit_pointer: return "DW_OP_GNU_implicit_pointer"; default: - return def ? "OP_" : NULL; + return NULL; } } @@ -13743,8 +13743,17 @@ decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu) break; default: - complaint (&symfile_complaints, _("unsupported stack op: '%s'"), - dwarf_stack_op_name (op, 1)); + { + const char *name = dwarf_stack_op_name (op); + + if (name) + complaint (&symfile_complaints, _("unsupported stack op: '%s'"), + name); + else + complaint (&symfile_complaints, _("unsupported stack op: '%02x'"), + op); + } + return (stack[stacki]); } -- 2.34.1