summaryrefslogtreecommitdiffstats
path: root/sys/ddb/db_kld.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1998-10-09 23:34:09 +0000
committerpeter <peter@FreeBSD.org>1998-10-09 23:34:09 +0000
commit887fa28cea396ffa01e57a2f72bedbddef48ae12 (patch)
treea0e37ea2709eb7211c8fc39c0ccbb5b704d6443e /sys/ddb/db_kld.c
parent692ee062462d25f1ab80215f6de911362451401c (diff)
downloadFreeBSD-src-887fa28cea396ffa01e57a2f72bedbddef48ae12.zip
FreeBSD-src-887fa28cea396ffa01e57a2f72bedbddef48ae12.tar.gz
Call some helper routines to be supplied by kern_linker.c in order to
get to all the symbol tables for all modules, not just the core kernel symbol table. Yes, DDB can see KLD module symbols with this, both by lookup and in tracebacks. No more references to _end from tracebacks within an LKM. :-)
Diffstat (limited to 'sys/ddb/db_kld.c')
-rw-r--r--sys/ddb/db_kld.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/sys/ddb/db_kld.c b/sys/ddb/db_kld.c
index 6870768..ed5bbd0 100644
--- a/sys/ddb/db_kld.c
+++ b/sys/ddb/db_kld.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_kld.c,v 1.1 1998/06/28 00:57:28 dfr Exp $
+ * $Id: db_kld.c,v 1.2 1998/07/05 10:11:20 dfr Exp $
* from db_aout.c,v 1.20 1998/06/07 17:09:36 dfr Exp
*/
@@ -35,6 +35,8 @@
* Symbol table routines for a.out format files.
*/
+#if defined(__ELF__) && !defined(__alpha__)
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/linker.h>
@@ -44,10 +46,6 @@
#include <ddb/ddb.h>
#include <ddb/db_sym.h>
-extern linker_file_t linker_kernel_file;
-
-#define KF linker_kernel_file
-
db_sym_t
X_db_lookup(stab, symstr)
db_symtab_t *stab;
@@ -55,10 +53,7 @@ X_db_lookup(stab, symstr)
{
linker_sym_t sym;
- if (!KF)
- return 0;
-
- if (KF->ops->lookup_symbol(KF, symstr, &sym) == 0)
+ if (linker_ddb_lookup(symstr, &sym) == 0)
return (db_sym_t) sym;
else
return (db_sym_t) 0;
@@ -75,10 +70,7 @@ X_db_search_symbol(symtab, off, strategy, diffp)
linker_sym_t sym;
long diff;
- if (!KF)
- return 0;
-
- if (KF->ops->search_symbol(KF, (caddr_t) off, &sym, &diff) == 0) {
+ if (linker_ddb_search_symbol((caddr_t) off, &sym, &diff) == 0) {
*diffp = (db_expr_t) diff;
return (db_sym_t) sym;
}
@@ -99,7 +91,7 @@ X_db_symbol_values(symtab, dbsym, namep, valuep)
linker_sym_t sym = (linker_sym_t) dbsym;
linker_symval_t symval;
- KF->ops->symbol_values(KF, sym, &symval);
+ linker_ddb_symbol_values(sym, &symval);
if (namep)
*namep = (char*) symval.name;
if (valuep)
@@ -136,3 +128,4 @@ kdb_init()
{
db_add_symbol_table(0, 0, "kernel", 0);
}
+#endif
OpenPOWER on IntegriCloud