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