65 #define UWRECIPE_DEBUG 1 70 xed_iclass_enum_t xiclass = xed_decoded_inst_get_iclass(xptr);
71 const xed_inst_t *xi = xed_decoded_inst_inst(xptr);
78 case XED_ICLASS_JMP_FAR:
81 TMSG(COLD_CODE,
" --cold code routine detected!");
91 TMSG(COLD_CODE,
"got unwind interval from hpcrun_addr_to_interval");
105 case XED_ICLASS_JNBE:
107 case XED_ICLASS_JNLE:
114 case XED_ICLASS_JRCXZ:
120 case XED_ICLASS_FNSTCW:
121 case XED_ICLASS_STMXCSR:
143 case XED_ICLASS_ENTER:
147 case XED_ICLASS_LEAVE:
151 case XED_ICLASS_CALL_FAR:
152 case XED_ICLASS_CALL_NEAR:
156 case XED_ICLASS_RET_FAR:
157 case XED_ICLASS_RET_NEAR:
166 case XED_ICLASS_PUSH:
167 case XED_ICLASS_PUSHF:
168 case XED_ICLASS_PUSHFD:
169 case XED_ICLASS_PUSHFQ:
174 case XED_ICLASS_POPF:
175 case XED_ICLASS_POPFD:
176 case XED_ICLASS_POPFQ:
static void process_push(char *ins, xed_decoded_inst_t *xptr, long ins_offset)
unwind_interval * process_return(xed_decoded_inst_t *xptr, bool irdebug, interval_arg_t *iarg)
static void process_call(char *ins, long offset, xed_decoded_inst_t *xptr, void *start, void *end)
static void process_enter(char *ins, long ins_offset)
static void process_leave(char *ins, long ins_offset)
unwind_interval * process_conditional_branch(xed_decoded_inst_t *xptr, interval_arg_t *iarg)
bool uw_recipe_map_lookup(void *addr, unwinder_t uw, unwindr_info_t *unwr_info)
unwind_interval * process_addsub(xed_decoded_inst_t *xptr, const xed_inst_t *xi, interval_arg_t *iarg)
static void process_pop(char *ins, xed_decoded_inst_t *xptr, long ins_offset)
struct bitree_uwi_s bitree_uwi_t
static void process_move(char *ins, xed_decoded_inst_t *xptr, long ins_offset)
highwatermark_t highwatermark
bool hpcrun_is_cold_code(xed_decoded_inst_t *xptr, interval_arg_t *iarg)
void dump_ui_stderr(unwind_interval *u)
unwind_interval * process_lea(xed_decoded_inst_t *xptr, const xed_inst_t *xi, interval_arg_t *iarg)
unwind_interval * process_unconditional_branch(xed_decoded_inst_t *xptr, bool irdebug, interval_arg_t *iarg)
bitree_uwi_t unwind_interval
unwind_interval * process_and(xed_decoded_inst_t *xptr, const xed_inst_t *xi, interval_arg_t *iarg)
unwind_interval * process_inst(xed_decoded_inst_t *xptr, interval_arg_t *iarg)
void hpcrun_cold_code_fixup(unwind_interval *first, unwind_interval *current, unwind_interval *warm)