lkml.org 
[lkml]   [2009]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: How to generate a Kerntypes file?
From
On Fri, Jan 23, 2009 at 9:45 PM, Cliff Wickman <cpw@sgi.com> wrote:
> On Fri, Jan 23, 2009 at 02:37:12PM +0800, jidong xiao wrote:
>> On Thu, Jan 22, 2009 at 9:31 PM, Cliff Wickman <cpw@sgi.com> wrote:
>> > Hi Jason,
>> >
>> > On Thu, Jan 22, 2009 at 06:59:34PM +0800, jidong xiao wrote:
>> >> Hi,All,
>> >>
>> >> Sometimes when I install a kernel I saw there is a Kerntypes file
>> >> installed under /boot directory, but sometimes no, I remember when I
>> >> install a sles9 kernel, there must be a Kerntypes file installed, but
>> >> most of other kernels doesn't include such a Kerntypes file. This file
>> >> is very useful for me to do some analysis, so I hope I can generate it
>> >> every time I build a kernel. Do I need a patch for this or there are
>> >> already some patches I can take use of?Thanks.
>> >
>> > You had a init/kerntypes.c in sles9 and sles10. It included a lot
>> > of basic kernel types. It was compiled with -g to make the kerntypes.
>> > I presume that you used the LKCD project's lcrash with the kerntypes.
>> >
>> Hi, Cliff,
>>
>> Thanks for your guides.
>>
>> Well yes I am intending to use lcrash to load the kernel debug information.
>>
>> I noticed that recently kdb is going to be able to print out kernel
>> structures, and now I want to test that feature, I started my
>> experiments by reading the instructions inside
>> kdb/modules/kdbm_debugtypes.c which is saying:
>>
>> * Usage:
>> * in order for the insmod kdbm_debugtypes.ko to succeed in loading types
>> * you must first use lcrash -t kerntypes.xxxx -o debug_info
>> * and echo debug_info > /proc/kdb/debug_info_name
>>
>> so I have to generate kerntypes file. I looked into init/kerntypes.c,
>> it seems there is nothing but just includes some header files, like
>> below:
>>
>> 16 #include <linux/compile.h>
>> 17 #include <linux/module.h>
>> 18 #include <linux/mm.h>
>> 19 #include <linux/vmalloc.h>
>> 20 #include <linux/config.h>
>> 21 #include <linux/utsname.h>
>> 22 #include <linux/kernel_stat.h>
>> 23 #include <linux/dump.h>
>> 24
>> 25 #include <asm/kerntypes.h>
>>
>> We can see here are 9 files are included, does this mean the resulted
>> Kerntypes file only provides kernel structures that are defined within
>> these 9 files?
> Yes
>> If I want to print out more kernel structures I need to
>> change this file so as to include more header files?
>
> Yes, in theory. But not so easily done, as you can't throw in any and every
> header and get a clean compile.
>
>> In addition, if I want to generate Kerntypes file via building a
>> mainline kernel(rather than SLES kernel), the only thing I need to do
>> is:
>> 1. add this init/kerntypes.c and include/asm/kerntypes.h into kernel
>> source code.
>> 2. change the Makefile accordingly.
>>
>> After that I just compile the kernel as usual and I should be able to
>> get the Kerntypes file(which is actually nothing but just
>> init/kerntypes.o), right?
>
> You wouldn't use init/kerntypes.c
> In your .config file set CONFIG_DEBUG_INFO=y
> That will cause the whole kernel to be compiled with -g.
> Then: dwarfextract -Pp vmlinux kerntypes
> You can append the structures from any modules:
> dwarfextract kerntypes -c xxx.ko,yyy.ko,zzz.ko kerntypes.with.modules
>
Hmm,this is very cool, I usually enable the kernel debug options in
config file.
>>
>> Regards
>> Jason
>>
>> > If you download lkcd (lkcd.svn.sourceforge.net) you also build a
>> > tool called dwarfextract. It is able to pull all the structure
>> > definitions out of a -g (CONFIG_DEBUG_INFO) kernel and any selected
>> > modules. That is useful with the lcrash command.
> BTW there are recent additions to dwarfextract. you might want to
> re-download lkcd.
>
Okay, I see. I will try dwarfextract first and let you know if I meet
further issue. Thanks

Regards
Jason
> -Cliff
> --
> Cliff Wickman
> Silicon Graphics, Inc.
> cpw@sgi.com
> (651) 683-3824
>


\
 
 \ /
  Last update: 2009-01-24 10:09    [W:0.045 / U:0.128 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site