[Kgdb-bugreport] Problem getting kgdb to read kernel symbols. addresses shifted?

Dave Anderson anderson at redhat.com
Mon Oct 1 09:35:27 EDT 2007


Vivek Goyal wrote:
> On Fri, Sep 28, 2007 at 05:40:33PM -0600, Eric W. Biederman wrote:
> 
>>Derek Atkins <warlord at MIT.EDU> writes:
>>
>>
>>>Well, gdb agrees with System.map, so I'm sure that gdb itself is
>>>okay.  It's certainly possible that that the kgdb stub is weird,
>>>but /proc/kallsyms doesn't match System.map, and THAT'S what's
>>>confusing me most of all.
>>
>>Ok.  So we must have a relocatable kernel that figures it has been
>>relocated.  Interesting.  
>>
>>What is your bootloader?
>>What is your kernel version?
>>What is your kernel config?
>>
>>The only time I would expect to see what you are seeing is if
>>you are debugging the kdump kernel, which doesn't sound like
>>the case.
>>
>>If we actually have a truly offset kernel then while things
>>may not be perfect this is at least expected.  I don't think
>>I have heard of anyone handling this case very well.
>>
> 
> 
> Hi Eric and others,
> 
> I think we might be running into the issues because i386, FC7 relocatable
> kernel has been compiled for 16MB physical address but effectively it
> runs at 4MB physical address. So kernel does not run at compiled address
> and any kind of debugging tools reading symbol address from System.map
> or rom vmlinux will fail as run time symbol addresses are different.
> 
> /proc/kallsyms should help though. This is one problem with shift in run
> time virtual address while relocating the kernel. We should be running kernel
> at compiled address to be able to debug it. Or enable any tools to parse
> /proc/kallsyms to read the shift in symbol addresses and adjust accordingly.
> 
> Thanks
> Vivek

Right, crash was updated in version 4.0-4.5 to allow the use
of /proc/kallsyms as an alternative to the System.map file,
as well as adding a new --reloc command line argument.  After
bringing up the vmlinux file in gdb (with the "wrong" addresses),
all of the minimal_symbol data structures in the gdb module are
back-patched with the /proc/kallsyms values:

  http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5

It seems the benefit of configuring the kernel that way is debatable,
and I will do all I can to convince the RHEL-6 and beyond kernel
maintainers from doing it that way in the future.  But Fedora goes
its own way.  Seems totally lame to issue a bogus System.map file
though...

Dave




More information about the kexec mailing list