Dave Anderson wrote:
Dave Anderson wrote:cc -c -g -DX86 -D_FILE_OFFSET_BITS=64 diskdump.cor should it be:
In file included from diskdump.c:24:
diskdump.h:49: array size missing in `tasks'
make[3]: *** [diskdump.o] Error 1because 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?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