summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/cmd/mdb/common/mdb/mdb_disasm.c16
-rw-r--r--usr/src/lib/libdisasm/i386/dis_i386.c3
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);