diff options
Diffstat (limited to 'kexec')
-rw-r--r-- | kexec/crashdump-elf.c | 41 | ||||
-rw-r--r-- | kexec/crashdump.c | 4 |
2 files changed, 29 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 diff --git a/kexec/crashdump.c b/kexec/crashdump.c index 1cb8123..f6fd911 100644 --- a/kexec/crashdump.c +++ b/kexec/crashdump.c @@ -31,18 +31,22 @@ /* include "crashdump-elf.c" twice to create two functions from one */ +#define ELF_WIDTH 64 #define FUNC crash_create_elf64_headers #define EHDR Elf64_Ehdr #define PHDR Elf64_Phdr #include "crashdump-elf.c" +#undef ELF_WIDTH #undef PHDR #undef EHDR #undef FUNC +#define ELF_WIDTH 32 #define FUNC crash_create_elf32_headers #define EHDR Elf32_Ehdr #define PHDR Elf32_Phdr #include "crashdump-elf.c" +#undef ELF_WIDTH #undef PHDR #undef EHDR #undef FUNC |