# HG changeset patch # User Richard Lowe # Date 1376776487 14400 # Node ID b876bad2811ad1fcca1dc7c837f66f0a63c4b583 # Parent 374f51e72d3f428fb562e6589d5e2fb4af76d329 4054 dis sometimes decides random symbols are functions Reviewed by: Robert Mustacchi Reviewed by: Josef 'Jeff' Sipek Approved by: Albert Lee diff -r 374f51e72d3f -r b876bad2811a usr/src/cmd/dis/dis_target.c --- a/usr/src/cmd/dis/dis_target.c Fri Aug 16 18:18:28 2013 -0400 +++ b/usr/src/cmd/dis/dis_target.c Sat Aug 17 17:54:47 2013 -0400 @@ -647,13 +647,22 @@ sym_entry_t *sym, *osym, *match; int found; + *offset = 0; + *size = 0; + if (isfunc != NULL) + *isfunc = 0; + if (tgt->dt_symcache != NULL && addr >= tgt->dt_symcache->se_sym.st_value && addr < tgt->dt_symcache->se_sym.st_value + tgt->dt_symcache->se_sym.st_size) { - *offset = addr - tgt->dt_symcache->se_sym.st_value; - *size = tgt->dt_symcache->se_sym.st_size; - return (tgt->dt_symcache->se_name); + sym = tgt->dt_symcache; + *offset = addr - sym->se_sym.st_value; + *size = sym->se_sym.st_size; + if (isfunc != NULL) + *isfunc = (GELF_ST_TYPE(sym->se_sym.st_info) == + STT_FUNC); + return (sym->se_name); } lo = 0;