From 7fbcd11db880d97898b7a27580c20a38e1432c19 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sun, 28 Jun 2009 14:04:27 +0200 Subject: [PATCH] dbghelp: When the CU is compiled with GCC, deal with some GCC extensions. --- dlls/dbghelp/dwarf.c | 4 +++- dlls/dbghelp/dwarf.h | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 82e836f2963..7843e679330 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -781,7 +781,9 @@ compute_location(dwarf2_traverse_context_t* ctx, struct location* loc, } break; default: - FIXME("Unhandled attr op: %x\n", op); + if (op < DW_OP_lo_user) /* as DW_OP_hi_user is 0xFF, we don't need to test against it */ + FIXME("Unhandled attr op: %x\n", op); + /* FIXME else unhandled extension */ return loc_err_internal; } } diff --git a/dlls/dbghelp/dwarf.h b/dlls/dbghelp/dwarf.h index e7a0a7e4824..a590df2c9f0 100644 --- a/dlls/dbghelp/dwarf.h +++ b/dlls/dbghelp/dwarf.h @@ -376,6 +376,18 @@ typedef enum dwarf_operation_e DW_OP_call2 = 0x98, DW_OP_call4 = 0x99, DW_OP_call_ref = 0x9a, + DW_OP_form_tls_address = 0x9b, + DW_OP_call_frame_cfa = 0x9c, + DW_OP_bit_piece = 0x9d, + + /* Implementation defined extensions */ + DW_OP_lo_user = 0xe0, + DW_OP_hi_user = 0xff, + + /* GNU extensions */ + DW_OP_GNU_push_tls_address = 0xe0, + DW_OP_GNU_uninit = 0xf0, + DW_OP_GNU_encoded_addr = 0xf1, } dwarf_operation_t; enum dwarf_calling_convention