From 37a97ee46369a54a7df7552af737d75a5b4dafbc Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 27 Jul 2017 23:38:26 +0200 Subject: [PATCH] add printelfhdr function --- README.md | 1 + elf.h | 1 + print.c | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/README.md b/README.md index 3797cff..2cf04d2 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ Functions int readelf(FILE *f, Fhdr *fp); uint8_t* readelfsection(FILE *f, char *name, uint64_t *size, Fhdr *fp); void freeelf(Fhdr *fp); +void printelfhdr(Fhdr *fp); char* elfclass(uint8_t class); char* elfdata(uint8_t data); char* elfosabi(uint8_t osabi); diff --git a/elf.h b/elf.h index 237f39d..10b2494 100644 --- a/elf.h +++ b/elf.h @@ -50,6 +50,7 @@ struct Fhdr { int readelf(FILE*, Fhdr*); uint8_t* readelfsection(FILE*, char*, uint64_t*, Fhdr*); void freeelf(Fhdr*); +void printelfhdr(Fhdr*); char* elfclass(uint8_t); char* elfdata(uint8_t); char* elfosabi(uint8_t); diff --git a/print.c b/print.c index aaf49b9..a6a6c65 100644 --- a/print.c +++ b/print.c @@ -127,3 +127,16 @@ printelf64phdr(Elf64_Phdr *ph, Fhdr *fp) printf("align 0x%.16" PRIx64 "\n", ph->align); printf("\n"); } + +void +printelfhdr(Fhdr *fp) +{ + printident(fp); + printf("type %s (0x%.4x)\n", elftype(fp->type), fp->type); + printf("machine %s (0x%.4x)\n", elfmachine(fp->machine), fp->machine); + printf("version %s (%u)\n", elfversion(fp->version), fp->version); + if (fp->class == ELFCLASS32) + printf("entry 0x%.4ux\n", (uint32_t)fp->entry); + if (fp->class == ELFCLASS64) + printf("entry 0x%.8" PRIx64 "\n", fp->entry); +}