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


 255 dis_previnstr(dis_handle_t *dhp, uint64_t pc, int n)
 256 {
 257         if (dhp->dh_arch->da_previnstr == NULL)
 258                 return (dis_generic_previnstr(dhp, pc, n));
 259 
 260         return (dhp->dh_arch->da_previnstr(dhp, pc, n));
 261 }
 262 
 263 int
 264 dis_min_instrlen(dis_handle_t *dhp)
 265 {
 266         return (dhp->dh_arch->da_min_instrlen(dhp));
 267 }
 268 
 269 int
 270 dis_max_instrlen(dis_handle_t *dhp)
 271 {
 272         return (dhp->dh_arch->da_max_instrlen(dhp));
 273 }
 274 









 275 int
 276 dis_instrlen(dis_handle_t *dhp, uint64_t pc)
 277 {



 278         return (dhp->dh_arch->da_instrlen(dhp, pc));
 279 }
 280 
 281 int
 282 dis_vsnprintf(char *restrict s, size_t n, const char *restrict format,
 283     va_list args)
 284 {
 285 #ifdef DIS_STANDALONE
 286         return (mdb_iob_vsnprintf(s, n, format, args));
 287 #else
 288         return (vsnprintf(s, n, format, args));
 289 #endif
 290 }
 291 
 292 int
 293 dis_snprintf(char *restrict s, size_t n, const char *restrict format, ...)
 294 {
 295         va_list args;
 296 
 297         va_start(args, format);


 255 dis_previnstr(dis_handle_t *dhp, uint64_t pc, int n)
 256 {
 257         if (dhp->dh_arch->da_previnstr == NULL)
 258                 return (dis_generic_previnstr(dhp, pc, n));
 259 
 260         return (dhp->dh_arch->da_previnstr(dhp, pc, n));
 261 }
 262 
 263 int
 264 dis_min_instrlen(dis_handle_t *dhp)
 265 {
 266         return (dhp->dh_arch->da_min_instrlen(dhp));
 267 }
 268 
 269 int
 270 dis_max_instrlen(dis_handle_t *dhp)
 271 {
 272         return (dhp->dh_arch->da_max_instrlen(dhp));
 273 }
 274 
 275 static int
 276 dis_generic_instrlen(dis_handle_t *dhp, uint64_t pc)
 277 {
 278         if (dis_disassemble(dhp, pc, NULL, 0) != 0)
 279                 return (-1);
 280 
 281         return (dhp->dh_addr - pc);
 282 }
 283 
 284 int
 285 dis_instrlen(dis_handle_t *dhp, uint64_t pc)
 286 {
 287         if (dhp->dh_arch->da_instrlen == NULL)
 288                 return (dis_generic_instrlen(dhp, pc));
 289 
 290         return (dhp->dh_arch->da_instrlen(dhp, pc));
 291 }
 292 
 293 int
 294 dis_vsnprintf(char *restrict s, size_t n, const char *restrict format,
 295     va_list args)
 296 {
 297 #ifdef DIS_STANDALONE
 298         return (mdb_iob_vsnprintf(s, n, format, args));
 299 #else
 300         return (vsnprintf(s, n, format, args));
 301 #endif
 302 }
 303 
 304 int
 305 dis_snprintf(char *restrict s, size_t n, const char *restrict format, ...)
 306 {
 307         va_list args;
 308 
 309         va_start(args, format);