Print this page
6069 libdisasm: instrlen arch op should have a sane default
Reviewed by: Robert Mustacchi <rm@joyent.com>

*** 270,282 **** --- 270,294 ---- dis_max_instrlen(dis_handle_t *dhp) { return (dhp->dh_arch->da_max_instrlen(dhp)); } + static int + dis_generic_instrlen(dis_handle_t *dhp, uint64_t pc) + { + if (dis_disassemble(dhp, pc, NULL, 0) != 0) + return (-1); + + return (dhp->dh_addr - pc); + } + int dis_instrlen(dis_handle_t *dhp, uint64_t pc) { + if (dhp->dh_arch->da_instrlen == NULL) + return (dis_generic_instrlen(dhp, pc)); + return (dhp->dh_arch->da_instrlen(dhp, pc)); } int dis_vsnprintf(char *restrict s, size_t n, const char *restrict format,