Not All Symbols Present in a Loadable Kernel Module
pisymbol at gmail.com
Sat May 3 14:50:32 UTC 2008
On Fri, May 2, 2008 at 8:06 PM, David Christensen <davidch at broadcom.com> wrote:
> > > I'm trying to build the "bce" driver as a kernel module under
> > RELENG_7 but I'm
> > > finding that not all of the functions in the driver are exported as
> > symbols. This
> > > makes it difficult to "call" a function from ddb because I get the
> > error "Symbol
> > > not found". I'm building and loading the driver from
> > /usr/src/sys/modules/bce.
> > > What am I doing wrong? How can I get all functions in the driver
> > exported as
> > > symbols usable by the debugger?
> > Are you building a debug kernel or regular kernel? Have you turned on
> > debug symbols?
> > makeoptions DEBUG=-g # Build kernel with gdb(1)
> > debug symbols
> > Just a quick thought...I'm assuming these symbols are listed under
> > your final kernel image (nm it etc.).
> Yes, I'm building a debug kernel. I have the line listed above as well
> as the following:
> options KDB
> options DDB
> options GDB
> options INVARIANTS
> options INVARIANT_SUPPORT
> options WITNESS
> options WITNESS_SKIPSPIN
What symbols can you not access exactly and how are you
installing/setting up debugging?
I just built a RELENG_7 with DDB and I'm able to access bce symbols
without a problem. I can examine them and call them. I'm not using
options GDB however, only KDB/DDB.
- Make sure you have the right if_bce.ko/if_bce.ko.symbols files
generated/installed which contains the debug sections of your ko (from
the objcopy calls during the build - the binary is stripped with a
section pointer to the if_bce.ko.symbols file for debugging
information I believe)
- If you are using GDB, make sure its pointed to the right source base
so it can retrieve symbol information correctly
- If you are using GDB, stub it out and just use DDB to verify that
your build is sane (it works for me!)
- If all else fails, you can always build bce statically (just to move
More information about the freebsd-net