Dave Anderson wrote:
Dave Anderson wrote:
cc -c -g -DX86 -D_FILE_OFFSET_BITS=64 diskdump.c
In file included from diskdump.c:24:
diskdump.h:49: array size missing in `tasks'
make[3]: *** [diskdump.o] Error 1

because of the tasks member at the end of this struct:

struct disk_dump_header {
        char                    signature[SIG_LEN];     /* = "DISKDUMP" */
        int                     header_version; /* Dump header version */
        struct new_utsname      utsname;        /* copy of system_utsname */
        struct timeval          timestamp;      /* Time stamp */
        unsigned int            status;         /* Above flags */
        int                     block_size;     /* Size of a block in byte */
        int                     sub_hdr_size;   /* Size of arch dependent
                                                   header in blocks */
        unsigned int            bitmap_blocks;  /* Size of Memory bitmap in
                                                   block */
        unsigned int            max_mapnr;      /* = max_mapnr */
        unsigned int            total_ram_blocks;/* Number of blocks should be
                                                   written */
        unsigned int            device_blocks;  /* Number of total blocks in
                                                 * the dump device */
        unsigned int            written_blocks; /* Number of written blocks */
        unsigned int            current_cpu;    /* CPU# which handles dump */
        int                     nr_cpus;        /* Number of CPUs */
        struct task_struct      *tasks[];
};

Can this be changed to: struct task_struct **tasks;
and get away with it?

or should it be:

        struct task_struct       *tasks[0];
 


I have confirmation that the latter option works as intended:
 

> I *think* the correct way would be: struct task_struct *tasks[0];

I think so too.  struct disk_dump_header is variable length. In diskdump.c,
one page size is allocated and read from vmcore and casted by disk_dump_header.
So this change should work.
I confirmed that the crash which includes this fix worked with compressed vmcore
on my machine. Please apply.

Regards,
Nobuhiro


On another note, before sending in patches, please first do this:

  $ touch defs.h; make Warn

and then fix whatever it complains about (except for the cmdline.c
warnings -- they come from the gdb source, and I'm not changing it).

Thanks,
  Dave