svn commit: r237725 - stable/9/sys/kern
John Baldwin
jhb at FreeBSD.org
Thu Jun 28 19:34:24 UTC 2012
Author: jhb
Date: Thu Jun 28 19:34:23 2012
New Revision: 237725
URL: http://svn.freebsd.org/changeset/base/237725
Log:
MFC 236404:
Extend VERBOSE_SYSINIT to also print out the name of variables passed
to SYSINIT routines if they can be resolved via symbol look up in DDB.
To avoid false positives, only honor a name if the symbol resolves
exactly to the pointer value (no offset).
Modified:
stable/9/sys/kern/init_main.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/amd64/include/xen/ (props changed)
stable/9/sys/boot/ (props changed)
stable/9/sys/boot/i386/efi/ (props changed)
stable/9/sys/boot/ia64/efi/ (props changed)
stable/9/sys/boot/ia64/ski/ (props changed)
stable/9/sys/boot/powerpc/boot1.chrp/ (props changed)
stable/9/sys/boot/powerpc/ofw/ (props changed)
stable/9/sys/cddl/contrib/opensolaris/ (props changed)
stable/9/sys/conf/ (props changed)
stable/9/sys/contrib/dev/acpica/ (props changed)
stable/9/sys/contrib/octeon-sdk/ (props changed)
stable/9/sys/contrib/pf/ (props changed)
stable/9/sys/contrib/x86emu/ (props changed)
stable/9/sys/dev/ (props changed)
stable/9/sys/dev/e1000/ (props changed)
stable/9/sys/dev/isp/ (props changed)
stable/9/sys/dev/ixgbe/ (props changed)
stable/9/sys/fs/ (props changed)
stable/9/sys/fs/ntfs/ (props changed)
stable/9/sys/modules/ (props changed)
Modified: stable/9/sys/kern/init_main.c
==============================================================================
--- stable/9/sys/kern/init_main.c Thu Jun 28 19:27:54 2012 (r237724)
+++ stable/9/sys/kern/init_main.c Thu Jun 28 19:34:23 2012 (r237725)
@@ -158,6 +158,24 @@ sysinit_add(struct sysinit **set, struct
newsysinit_end = newset + count;
}
+#if defined (DDB) && defined(VERBOSE_SYSINIT)
+static const char *
+symbol_name(vm_offset_t va, db_strategy_t strategy)
+{
+ const char *name;
+ c_db_sym_t sym;
+ db_expr_t offset;
+
+ if (va == 0)
+ return (NULL);
+ sym = db_search_symbol(va, strategy, &offset);
+ if (offset != 0)
+ return (NULL);
+ db_symbol_values(sym, &name, NULL);
+ return (name);
+}
+#endif
+
/*
* System startup; initialize the world, create process 0, mount root
* filesystem, and fork to create init and pagedaemon. Most of the
@@ -238,15 +256,16 @@ restart:
}
if (verbose) {
#if defined(DDB)
- const char *name;
- c_db_sym_t sym;
- db_expr_t offset;
-
- sym = db_search_symbol((vm_offset_t)(*sipp)->func,
- DB_STGY_PROC, &offset);
- db_symbol_values(sym, &name, NULL);
- if (name != NULL)
- printf(" %s(%p)... ", name, (*sipp)->udata);
+ const char *func, *data;
+
+ func = symbol_name((vm_offset_t)(*sipp)->func,
+ DB_STGY_PROC);
+ data = symbol_name((vm_offset_t)(*sipp)->udata,
+ DB_STGY_ANY);
+ if (func != NULL && data != NULL)
+ printf(" %s(&%s)... ", func, data);
+ else if (func != NULL)
+ printf(" %s(%p)... ", func, (*sipp)->udata);
else
#endif
printf(" %p(%p)... ", (*sipp)->func,
More information about the svn-src-stable-9
mailing list