diff options
| -rw-r--r-- | usr/src/cmd/mdb/common/mdb/mdb_disasm.c | 16 | ||||
| -rw-r--r-- | usr/src/lib/libdisasm/i386/dis_i386.c | 3 |
2 files changed, 7 insertions, 12 deletions
diff --git a/usr/src/cmd/mdb/common/mdb/mdb_disasm.c b/usr/src/cmd/mdb/common/mdb/mdb_disasm.c index ca1517e047..94a02ebd25 100644 --- a/usr/src/cmd/mdb/common/mdb/mdb_disasm.c +++ b/usr/src/cmd/mdb/common/mdb/mdb_disasm.c @@ -202,9 +202,10 @@ static int libdisasm_lookup(void *data, uint64_t addr, char *buf, size_t buflen, uint64_t *start, size_t *len) { - if (buf != NULL) { - GElf_Sym sym; + char c; + GElf_Sym sym; + if (buf != NULL) { #ifdef __sparc uint32_t instr[3]; uint32_t dtrace_id; @@ -234,24 +235,15 @@ libdisasm_lookup(void *data, uint64_t addr, char *buf, size_t buflen, } } #endif - if (mdb_lookup_by_addr((uintptr_t)addr, MDB_SYM_FUZZY, - buf, buflen, &sym) < 0) { - if (buflen > 0) - *buf = '\0'; - return (-1); - } + (void) mdb_snprintf(buf, buflen, "%a", (uintptr_t)addr); } #ifdef __sparc out: #endif if (start != NULL || len != NULL) { - GElf_Sym sym; - char c; - if (mdb_lookup_by_addr(addr, MDB_SYM_FUZZY, &c, 1, &sym) < 0) return (-1); - if (start != NULL) *start = sym.st_value; if (len != NULL) diff --git a/usr/src/lib/libdisasm/i386/dis_i386.c b/usr/src/lib/libdisasm/i386/dis_i386.c index e499bd9ee0..3bcb4b3a71 100644 --- a/usr/src/lib/libdisasm/i386/dis_i386.c +++ b/usr/src/lib/libdisasm/i386/dis_i386.c @@ -189,6 +189,9 @@ dis_previnstr(dis_handle_t *dhp, uint64_t pc, int n) int cur, nseen; uint64_t res = pc; + if (n <= 0) + return (pc); + if (dhp->dh_lookup(dhp->dh_data, pc, NULL, 0, &start, NULL) != 0 || start == pc) return (res); |
