[Crash-utility] questions about crash utility

卜弋天 buyit at live.cn
Thu Jan 17 16:30:08 UTC 2013


Hello:      i am using crash utility 6.0.8 to parse the dump file of kernel 3.4.  my platform will generate ebi.bin after crash, this binary file dumps ddr from address 0x0 to 0x20000000, total 512MB ram.      after i get this binary file, i prefix a elf header to it, the function to generate elf header is as below: static size_t mkelfheader(void *buf)
{
 struct elf_phdr *nhdr, *phdr;
 struct elfhdr *elf;
 size_t offset = 0;
 void *bufp = buf; elf = (Elf32_Ehdr *) bufp;
 bufp += sizeof(Elf32_Ehdr);
 offset += sizeof(struct elfhdr); memcpy(elf->e_ident, ELFMAG, SELFMAG);
 elf->e_ident[EI_CLASS] = ELFCLASS32;
 elf->e_ident[EI_DATA] = ELFDATA2LSB;
 elf->e_ident[EI_VERSION]= EV_CURRENT;
 elf->e_ident[EI_OSABI] = ELFOSABI_NONE;
 memset(elf->e_ident+EI_PAD, 0, EI_NIDENT-EI_PAD);
 elf->e_type = ET_CORE;
 elf->e_machine = EM_ARM;
 elf->e_version = EV_CURRENT;
 elf->e_entry = 0;
 elf->e_phoff = sizeof(struct elfhdr);
 elf->e_shoff = 0;
 elf->e_flags = 0;
 elf->e_ehsize = sizeof(struct elfhdr);
 elf->e_phentsize= sizeof(struct elf_phdr);
 elf->e_phnum = 2;
 elf->e_shentsize= 0;
 elf->e_shnum = 0;
 elf->e_shstrndx = 0; nhdr = (struct elf_phdr *) bufp;
 bufp += sizeof(struct elf_phdr);
 offset += sizeof(struct elf_phdr);
 nhdr->p_type = PT_NOTE;
 nhdr->p_offset = 0;
 nhdr->p_vaddr = 0;
 nhdr->p_paddr = 0;
 nhdr->p_filesz = 0;
 nhdr->p_memsz = 0;
 nhdr->p_flags = 0;
 nhdr->p_align = 0; phdr = (struct elf_phdr *) bufp;
 bufp += sizeof(struct elf_phdr);
 offset += sizeof(struct elf_phdr); phdr->p_type = PT_LOAD;
 phdr->p_flags = PF_R|PF_W|PF_X;
 phdr->p_offset = offset;
 phdr->p_vaddr = 0xc0000000;
 phdr->p_paddr = 0x00200000;
 phdr->p_filesz = phdr->p_memsz = MEMSIZE;
 phdr->p_align = 0; return offset;
}
       after all, there will be a cdump.elf which contains the generated elf header, tailed by ebi.bin. then i use crash utility to load this cdump.elf together with the vmlinux. it has below error: WARNING: could not find MAGIC_START!
WARNING: cpu_present_mask indicates more than 4 (NR_CPUS) cpus
crash: cannot determine base kernel version
crash: vmlinux and cdump.elf do not match!
        our platform set CONFIG_PHYS_OFFSET=0x00200000 in kernel .config file, which means that the virtual address 0xc0000000 will map to physical address 0x00200000.  for this reason, i set phdr->p_paddr = 0x00200000 when generate the elf header.         please help me to find out what is wrong, thanks very much.  Best Regards 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20130118/042f1fc5/attachment.htm>


More information about the Crash-utility mailing list