[Crash-utility] Re: source line numbers and modules (on x86_64)

Mike Snitzer snitzer at gmail.com
Thu May 1 01:17:54 UTC 2008


On Wed, Apr 30, 2008 at 8:21 PM, Dave Anderson <anderson at redhat.com> wrote:
>
> Mike Snitzer wrote:
>
> > On Wed, Apr 30, 2008 at 7:41 PM, Dave Anderson <anderson at redhat.com>
> wrote:
> >
> >
> > > Mike Snitzer wrote:
> > >
> > >
> > >
> > > > On Wed, Apr 30, 2008 at 6:43 PM, Dave Anderson <anderson at redhat.com>
> > > >
> > > >
> > >
> >
> >
> >
> > >
> > > >
> > > > >  Anyway, there are no kernel patches applied to RHEL5 kernels
> > > > >  to make it work that I'm aware of.  That being said, I don't
> > > > >  have an answer as to why they don't work for modules on your
> > > > >  custom kernel (or why they don't work in RHEL4 kernels...).
> > > > >
> > > > >
> > > > >
> > > > >
> > > > I configured my x86_64 kernel to be relocatable.  Could this be the
> > > > reason for modules' line number debug data being off?  From:
> > > > http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5
> > > >
> > > > "Using /proc/kallsyms or a --reloc=[size] as a command line argument
> > > >  is similar to using a System.map file, in that it results in the loss
> > > >  of the use of line number debug data."
> > > >
> > > >
> > > >
> > > >
> > >  No, that particular issue only applies to the base kernel, and is
> > > irrelevant with respect to modules.
> > >  (Note that the RHEL5 kernel is relocatable as well.)
> > >
> > >
> >
> > OK, yeah making the base kernel non-relocatable didn't help.
> >
> >
> >
> > >  What you might confirm is whether you're getting any debuginfo data
> when
> > > you load the module?  Are you sure that your modules are being built
> with -g?
> > >
> > >
> >
> > How would I confirm that I'm getting debuginfo data when I 'mod -s
> > ext3'?  I'm using an spec file that is based heavily (at least
> > relative to debuginfo) on the redhat kernel-2.6.spec but I'll have to
> > verify that I'm building with -g...
> >
> > Mike
> >
> >
>
>  So your build procedure ends up with a kernel-debuginfo package that
> contains a set of "split" <module-name>.ko.debug files?

Yes.

> If you take the module filename displayed after the "mod -s" is done,
> and run it through "readelf -a", you'll see a .gnu_debuglink section.

My kernel's ext3.ko has:
  [23] .gnu_debuglink    PROGBITS         0000000000000000  00036558
       0000000000000014  0000000000000000           0     0     4

which would appear fairly comparable to what the RHEL5 kernel's ext3.ko has:
  [22] .gnu_debuglink    PROGBITS         0000000000000000  00037418
       0000000000000014  0000000000000000           0     0     4

> That /lib/modules/<path-to>/module.ko module will have
>  a link to its partner in
> /usr/lib/debug/lib/modules/<path-to>/module.ko.debug.

readelf -x $SECTION /lib/modules/<path-to>/ext3.ko shows that
.gnu_debuglink points to ext3.ko.debug as expected.

Given the "so far so good" nature of what you're helping me verify
here it still begs the question: so why doesn't it work on my
2.6.22.19 x86_64 kernel? ;)

Where does the line number debug data get stored in the
module.ko.debug?  In my case the source comes up as
"include/linux/clocksource.h: 121" for all kernel modules' symbols.

Any further pointers would be greatly appreciated, thanks a lot for
your time already!
Mike




More information about the Crash-utility mailing list