summaryrefslogtreecommitdiff
path: root/sys/ddb
diff options
context:
space:
mode:
authorMartin Pieuchot <mpi@cvs.openbsd.org>2017-08-11 20:47:22 +0000
committerMartin Pieuchot <mpi@cvs.openbsd.org>2017-08-11 20:47:22 +0000
commit398d246a851788d6e211b3fd698aadc065234104 (patch)
treebc6f159bd1d988199786ceff624d32783c8859e5 /sys/ddb
parentae46e4000de55aa9117ae9160b30020aa7d00bb4 (diff)
Fall back using db_print_cmd() if no CTF data has been found.
Diffstat (limited to 'sys/ddb')
-rw-r--r--sys/ddb/db_ctf.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/sys/ddb/db_ctf.c b/sys/ddb/db_ctf.c
index e60d0ea1c1f..afdc4bfa82c 100644
--- a/sys/ddb/db_ctf.c
+++ b/sys/ddb/db_ctf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_ctf.c,v 1.13 2017/08/11 16:57:19 mpi Exp $ */
+/* $OpenBSD: db_ctf.c,v 1.14 2017/08/11 20:47:21 mpi Exp $ */
/*
* Copyright (c) 2016-2017 Martin Pieuchot
@@ -250,6 +250,9 @@ db_ctf_type_by_symbol(Elf_Sym *st)
uint16_t *dsp;
size_t idx = 0;
+ if (!db_ctf.ctf_found || st == NULL)
+ return NULL;
+
while (objtoff < db_ctf.cth->cth_funcoff) {
dsp = (uint16_t *)(db_ctf.data + objtoff);
@@ -502,16 +505,12 @@ exit:
* print <symbol name>
*/
void
-db_ctf_pprint_cmd(db_expr_t addr, int have_addr, db_expr_t count,
- char *modifiers)
+db_ctf_pprint_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
Elf_Sym *st;
const struct ctf_type *ctt;
int t;
- if (!db_ctf.ctf_found)
- return;
-
/*
* Read the struct name from the debugger input.
*/
@@ -528,9 +527,9 @@ db_ctf_pprint_cmd(db_expr_t addr, int have_addr, db_expr_t count,
return;
}
-
if ((ctt = db_ctf_type_by_symbol(st)) == NULL) {
- db_printf("Type not found %s\n", db_tok_string);
+ modif[0] = '\0';
+ db_print_cmd(addr, 0, 0, modif);
db_flush_lex();
return;
}