zdump: df_elf: refactor check_elf_hdr

The function will be reused by upcoming patches.

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: Steffen Eiden <seiden@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
Marc Hartmayer
2022-09-23 13:58:43 +00:00
committed by Jan Höppner
parent 1780efae07
commit 6176509076
3 changed files with 15 additions and 10 deletions

View File

@@ -52,6 +52,15 @@ bool ehdr_is_s390x(const Elf64_Ehdr *ehdr)
ehdr->e_ident[EI_CLASS] == ELFCLASS64;
}
int ehdr_check_s390x(const Elf64_Ehdr *ehdr)
{
if (!ehdr_is_elf_object(ehdr) || !ehdr_is_vmcore(ehdr))
return -ENODEV;
if (!ehdr_is_s390x(ehdr))
ERR_EXIT("Only s390x (64 bit) core dump files are supported");
return 0;
}
Elf64_Ehdr *read_elf_hdr(const struct zg_fh *fh)
{
Elf64_Ehdr *ehdr;

View File

@@ -147,6 +147,11 @@ bool ehdr_is_vmcore(const Elf64_Ehdr *ehdr);
*/
bool ehdr_is_s390x(const Elf64_Ehdr *ehdr);
/*
* Verify that given header is a s390x ELF header
*/
int ehdr_check_s390x(const Elf64_Ehdr *ehdr);
/*
* Read ELF header at current offset
*/

View File

@@ -251,15 +251,6 @@ static int pt_notes_add(const Elf64_Phdr *phdr)
return 0;
}
static int check_elf_hdr(const Elf64_Ehdr *ehdr)
{
if (!ehdr_is_elf_object(ehdr) || !ehdr_is_vmcore(ehdr))
return -ENODEV;
if (!ehdr_is_s390x(ehdr))
ERR_EXIT("Only s390x (64 bit) core dump files are supported");
return 0;
}
/*
* Initialize ELF input dump format
*/
@@ -276,7 +267,7 @@ static int dfi_elf_init(void)
if (!ehdr)
return -ENODEV;
if (check_elf_hdr(ehdr) < 0)
if (ehdr_check_s390x(ehdr) < 0)
goto free_ehdr;
df_elf_ensure_s390x();