diff options
Diffstat (limited to 'kexec/crashdump-elf.c')
-rw-r--r-- | kexec/crashdump-elf.c | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/kexec/crashdump-elf.c b/kexec/crashdump-elf.c index 5ec5a07..e702a53 100644 --- a/kexec/crashdump-elf.c +++ b/kexec/crashdump-elf.c @@ -3,6 +3,26 @@ #error FUNC, EHDR and PHDR must be defined #endif +#if (ELF_WIDTH == 64) +#define dfprintf_phdr(fh, prefix, phdr) \ +do { \ + dfprintf((fh), \ + "%s: p_type = %u, p_offset = 0x%lx p_paddr = 0x%lx " \ + "p_vaddr = 0x%lx p_filesz = 0x%lx p_memsz = 0x%lx\n", \ + (prefix), (phdr)->p_type, (phdr)->p_offset, (phdr)->p_paddr, \ + (phdr)->p_vaddr, (phdr)->p_filesz, (phdr)->p_memsz); \ +} while(0) +#else +#define dfprintf_phdr(fh, prefix, phdr) \ +do { \ + dfprintf((fh), \ + "%s: p_type = %u, p_offset = 0x%x " "p_paddr = 0x%x " \ + "p_vaddr = 0x%x p_filesz = 0x%x p_memsz = 0x%x\n", \ + (prefix), (phdr)->p_type, (phdr)->p_offset, (phdr)->p_paddr, \ + (phdr)->p_vaddr, (phdr)->p_filesz, (phdr)->p_memsz); \ +} while(0) +#endif + /* Prepares the crash memory headers and stores in supplied buffer. */ int FUNC(struct kexec_info *info, struct crash_elf_info *elf_info, @@ -120,11 +140,7 @@ int FUNC(struct kexec_info *info, /* Increment number of program headers. */ (elf->e_phnum)++; - dfprintf(stdout, "Elf header: p_type = %d, p_offset = 0x%lx " - "p_paddr = 0x%lx p_vaddr = 0x%lx " - "p_filesz = 0x%lx p_memsz = 0x%lx\n", - phdr->p_type, phdr->p_offset, phdr->p_paddr, - phdr->p_vaddr, phdr->p_filesz, phdr->p_memsz); + dfprintf_phdr(stdout, "Elf header", phdr); } /* Setup an PT_LOAD type program header for the region where @@ -141,12 +157,7 @@ int FUNC(struct kexec_info *info, phdr->p_filesz = phdr->p_memsz = info->kern_size; phdr->p_align = 0; (elf->e_phnum)++; - dfprintf(stdout, "Kernel text Elf header: " - "p_type = %d, p_offset = 0x%lx " - "p_paddr = 0x%lx p_vaddr = 0x%lx " - "p_filesz = 0x%lx p_memsz = 0x%lx\n", - phdr->p_type, phdr->p_offset, phdr->p_paddr, - phdr->p_vaddr, phdr->p_filesz, phdr->p_memsz); + dfprintf_phdr(stdout, "Kernel text Elf header", phdr); } /* Setup PT_LOAD type program header for every system RAM chunk. @@ -187,11 +198,9 @@ int FUNC(struct kexec_info *info, /* Increment number of program headers. */ (elf->e_phnum)++; - dfprintf(stdout, "Elf header: p_type = %d, p_offset = 0x%lx " - "p_paddr = 0x%lx p_vaddr = 0x%lx " - "p_filesz = 0x%lx p_memsz = 0x%lx\n", - phdr->p_type, phdr->p_offset, phdr->p_paddr, - phdr->p_vaddr, phdr->p_filesz, phdr->p_memsz); + dfprintf_phdr(stdout, "Elf header", phdr); } return 0; } + +#undef dfprintf_phdr |