Mercurial > illumos > illumos-gate
changeset 14162:b876bad2811a
4054 dis sometimes decides random symbols are functions
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Approved by: Albert Lee <trisk@nexenta.com>
author | Richard Lowe <richlowe@richlowe.net> |
---|---|
date | Sat, 17 Aug 2013 17:54:47 -0400 |
parents | 374f51e72d3f |
children | 712ede127bb4 |
files | usr/src/cmd/dis/dis_target.c |
diffstat | 1 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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;