public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* How to generate a Kerntypes file?
@ 2009-01-22 10:59 jidong xiao
  2009-01-22 13:31 ` Cliff Wickman
  0 siblings, 1 reply; 5+ messages in thread
From: jidong xiao @ 2009-01-22 10:59 UTC (permalink / raw)
  To: linux-kernel

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.

Regards
Jason

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How to generate a Kerntypes file?
  2009-01-22 10:59 How to generate a Kerntypes file? jidong xiao
@ 2009-01-22 13:31 ` Cliff Wickman
  2009-01-23  6:37   ` jidong xiao
  0 siblings, 1 reply; 5+ messages in thread
From: Cliff Wickman @ 2009-01-22 13:31 UTC (permalink / raw)
  To: jidong xiao; +Cc: linux-kernel

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.

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.

If you want to analyze your live system or a dump with the crash command
(people.redhat.com/~anderson/) you don't need the kerntypes, as you use
the -g kernel itself.  Although you may make kerntypes with dwarfextract
and use them with crash also.

-Cliff

> Regards
> Jason
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How to generate a Kerntypes file?
  2009-01-22 13:31 ` Cliff Wickman
@ 2009-01-23  6:37   ` jidong xiao
  2009-01-23 13:45     ` Cliff Wickman
  0 siblings, 1 reply; 5+ messages in thread
From: jidong xiao @ 2009-01-23  6:37 UTC (permalink / raw)
  To: Cliff Wickman; +Cc: linux-kernel

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? If I want to print out more kernel structures I need to
change this file so as to include more header files?

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?

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.
>
> If you want to analyze your live system or a dump with the crash command
> (people.redhat.com/~anderson/) you don't need the kerntypes, as you use
> the -g kernel itself.  Although you may make kerntypes with dwarfextract
> and use them with crash also.
>
> -Cliff
>
>> Regards
>> Jason
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at  http://www.tux.org/lkml/
>
> --
> Cliff Wickman
> Silicon Graphics, Inc.
> cpw@sgi.com
> (651) 683-3824
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How to generate a Kerntypes file?
  2009-01-23  6:37   ` jidong xiao
@ 2009-01-23 13:45     ` Cliff Wickman
  2009-01-24  9:07       ` jidong xiao
  0 siblings, 1 reply; 5+ messages in thread
From: Cliff Wickman @ 2009-01-23 13:45 UTC (permalink / raw)
  To: jidong xiao; +Cc: linux-kernel

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

> 
> 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.

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How to generate a Kerntypes file?
  2009-01-23 13:45     ` Cliff Wickman
@ 2009-01-24  9:07       ` jidong xiao
  0 siblings, 0 replies; 5+ messages in thread
From: jidong xiao @ 2009-01-24  9:07 UTC (permalink / raw)
  To: Cliff Wickman; +Cc: linux-kernel

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
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-01-24  9:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-22 10:59 How to generate a Kerntypes file? jidong xiao
2009-01-22 13:31 ` Cliff Wickman
2009-01-23  6:37   ` jidong xiao
2009-01-23 13:45     ` Cliff Wickman
2009-01-24  9:07       ` jidong xiao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox