[Crash-utility] crash fails with incompatible arguments on current kernel
Dave Anderson
anderson at redhat.com
Mon Jun 6 20:33:12 UTC 2011
----- Original Message -----
> Hi,
>
> ..another one (if the kernel gets renamed from 3.0.0-rc to 3.0) - in order
> to help sial scripts that rely on LINUX_RELEASE we should do something
> like:
> ---
> extensions/sial.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> --- a/extensions/sial.c
> +++ b/extensions/sial.c
> @@ -621,12 +621,17 @@ How to extract basic set of -D flags fro
> if(tok) tok=strtok(NULL, " \t");
> if(tok) tok=strtok(NULL, " \t");
> if(tok) {
> - int two, major, minor, ret;
> - ret = sscanf(tok, "%d.%d.%d-", &two, &major, &minor);
> - if( ret == 3) {
> - sprintf(banner, "0x%02x%02x%02x", two, major, minor);
> + int version, patchlevel, sublevel, ret;
> + ret = sscanf(tok, "%d.%d.%d-", &version, &patchlevel, &sublevel);
> + switch (ret) {
> + case 2:
> + sublevel = 0;
> + case 3:
> + sprintf(banner, "0x%02x%02x%02x", version, patchlevel, sublevel);
> dt=sial_add_def(dt, sial_strdup("LINUX_RELEASE"),
> sial_strdup(banner));
> sial_msg("Core LINUX_RELEASE == '%s'\n", tok);
> + default:
> + break;
> }
> }
> }
Yeah -- and what about all of those "helper macros" in sial.c here:
static struct linuxdefs_s {
char *name;
char *value;
} linuxdefs[] = {
{"crash", "1"},
{"linux", "1"},
{"__linux", "1"},
{"__linux__", "1"},
{"unix", "1"},
{"__unix", "1"},
{"__unix__", "1"},
// helper macros
{"LINUX_2_2_16", "(LINUX_RELEASE==0x020210)"},
{"LINUX_2_2_17", "(LINUX_RELEASE==0x020211)"},
{"LINUX_2_4_0", "(LINUX_RELEASE==0x020400)"},
{"LINUX_2_2_X", "(((LINUX_RELEASE) & 0xffff00) == 0x020200)"},
{"LINUX_2_4_X", "(((LINUX_RELEASE) & 0xffff00) == 0x020400)"},
{"LINUX_2_6_X", "(((LINUX_RELEASE) & 0xffff00) == 0x020600)"},
...
Anyway, I defer all sial-related patches to Luc Chouinard for review.
I've cc'd him directly with this response.
Thanks,
Dave
More information about the Crash-utility
mailing list