----- Forwarded Message -----
From: "Cliff Wickman" <cpw(a)sgi.com>
To: "Dave Anderson" <anderson(a)redhat.com>
Sent: Thursday, January 29, 2009 4:23:22 PM GMT -05:00 US/Canada Eastern
Subject: Re: [PATCH] crash: load of module types LKCD_KERNTYPES
Hi Dave,
On Thu, Jan 29, 2009 at 03:43:03PM -0500, Dave Anderson wrote:
----- "Cliff Wickman" <cpw(a)sgi.com> wrote:
> This patch allows additional kerntypes files to be loaded as module
> debuginfo (namelist) files.
>
> It's a bit of a kludge, as sym -s module <file> still requires
> that these types be associated with a loaded module. (but its use
> would only be desirable when there are loaded modules, so that
> restriction should not be a problem)
The patch looks fine (segregated), and I've queued it for the next release.
But I'm not entirely clear what you mean by the comment above? You've
got this kerntypes object file that was created from a kernel module, and
you can load its debuginfo data individually with "mod -s module kerntypes".
What's the kludge again?
Ok, not a kludge if the kerntypes was built from the module that you
name in the mod -s command.
But I would lump together the types from hundreds of modules into a
single compact file that I can load if needed. When I mod -s this file
it has to be associated with some loaded module.
-Cliff
>
> Tested against a live 2.6.27 kernel.
> Diffed against crash-4.0-7.6
>
> Signed-off-by: Cliff Wickman <cpw(a)sgi.com>
>
> ---
> symbols.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> Index: crash-4.0-7.6.ia64/symbols.c
> ===================================================================
> --- crash-4.0-7.6.ia64.orig/symbols.c
> +++ crash-4.0-7.6.ia64/symbols.c
> @@ -7992,8 +7992,12 @@ load_module_symbols(char *modref, char *
> error(FATAL, "cannot determine object file format: %s\n",
> namelist);
>
> - if (!(bfd_get_file_flags(mbfd) & HAS_SYMS))
> - error(FATAL, "no symbols in object file: %s\n",
> namelist);
> + if (LKCD_KERNTYPES() && file_elf_version(namelist) ==
> EV_DWARFEXTRACT) {
> + goto add_symbols; /* no symbols, add the debuginfo */
> + }
> +
> + if (!(bfd_get_file_flags(mbfd) & HAS_SYMS))
> + error(FATAL, "no symbols in object file: %s\n", namelist);
>
> symcount = bfd_read_minisymbols(mbfd, FALSE, &minisyms, &size);
> if (symcount < 0)
--
Cliff Wickman
Silicon Graphics, Inc.
cpw(a)sgi.com
(651) 683-3824