[Crash-utility] Include file for extensions

Dave Anderson anderson at redhat.com
Thu Apr 30 18:06:59 UTC 2009


----- "Michael Holzheu" <holzheu at linux.vnet.ibm.com> wrote:

> Hi again,
> 
> We found a problem in sial. Because sial.c does not include defs.h, for
> all used functions like "ulong symbol_value(char *)", that do not have a
> prototype, the compiler assumes that the return value is int.  Therefore
> we get wrong results.
> 
> A comment in sial.c says:
> 
> // some stuff from crash's defs.h, file which cannot be included here.
> // Hate to do this but this is a quick port..
> // If anyone cares to work on the include and defs structure to make
> // this work cleanly...
> 
> If you compile sial with "-Wall" you get:
>
> gcc -g -I.. -Ilibsial -I../gdb-6.1/bfd -I../gdb-6.1/include
> -I../gdb-6.1/gdb -I../gdb-6.1/gdb/config -nostartfiles -shared
> -rdynamic
> -o sial.so sial.c -fPIC -DS390X -Wall -Llibsial -lsial 
> sial.c: In function 'apigetmem':
> sial.c:96: warning: implicit declaration of function 'readmem'
> sial.c: In function 'apigetval':
> sial.c:424: warning: implicit declaration of function 'symbol_exists'
> sial.c:425: warning: implicit declaration of function 'symbol_value'
> sial.c: In function 'apigetdefs':
> sial.c:572: warning: implicit declaration of function 'sial_addneg'
> sial.c: In function 'edit_cmd':
> sial.c:676: warning: implicit declaration of function 'cmd_usage'
> sial.c: In function 'rm_sial_cmd':
> sial.c:842: warning: unused variable 'end'
> sial.c: At top level:
> sial.c:917: warning: return type defaults to 'int'
> sial.c: In function '_init':
> sial.c:1013: warning: implicit declaration of function
> 'register_extension'
> 
> To solve the problem, we could either define an small official API
> include file for crash extensions (crash.h?), make defs.h include-able
> or just do the quick and ugly fix that declares the missing functions in
> sial.c.

No, there's no need for a "crash.h" file, because by definition crash
extensions modules are *supposed* to #include "defs.h".  In fact, the
crash-devel subpackage solely consists of "/usr/include/crash/defs.h"
for extension module writers.  

But Luc Chouinard apparently ran into some difficulties with duplicate
declarations or something like that when he did the port.

Anyway, I don't touch the SIAL stuff, and even though the patch below is
fine with me, I'll defer to Luc Chouinard to see if he wants to address
it otherwise.  I've cc'd him directly with this response -- he'll probably
say it's fine.

Thanks,
  Dave

> 
> Michael
> 
> The following is the fix for solution (3):
> ---
>  extensions/sial.c |    7 +++++++
>  1 file changed, 7 insertions(+)
> 
> Index: crash-4.0-8.9/extensions/sial.c
> ===================================================================
> --- crash-4.0-8.9.orig/extensions/sial.c
> +++ crash-4.0-8.9/extensions/sial.c
> @@ -84,6 +84,13 @@ struct command_table_entry {            
>  extern FILE *fp; 
>  extern char *crash_global_cmd();
>  
> +typedef unsigned long long int ulonglong;
> +extern int readmem(ulonglong, int, void *, long, char *, ulong);
> +extern int symbol_exists(char *);
> +extern ulong symbol_value(char *);
> +extern void cmd_usage(char *, int);
> +extern void register_extension(struct command_table_entry *);
> +
>  //
> 
> /////////////////////////////////////////////////////////////////////////
>  /*






More information about the Crash-utility mailing list