From d38fc0c36bc9530fdebf709316a73ad6db5e2db5 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 9 Apr 2021 07:01:53 +0000 Subject: driver: added --hdrdump support. --- src/driver/pe_driver_ctx.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/driver') diff --git a/src/driver/pe_driver_ctx.c b/src/driver/pe_driver_ctx.c index 486284c..bc20b6d 100644 --- a/src/driver/pe_driver_ctx.c +++ b/src/driver/pe_driver_ctx.c @@ -215,6 +215,43 @@ int pe_get_driver_ctx( case TAG_DSOSYMS: cctx.fmtflags |= PERK_OUTPUT_MDSO_SYMS; break; + + case TAG_HDRDUMP: + if (!entry->arg) { + cctx.hdrdump = 0; + cctx.hdrdump = ~cctx.hdrdump; + } else if (!strcmp(entry->arg,"dos")) { + cctx.hdrdump = PERK_HDRDUMP_IMAGE_DOS_HEADER; + } else if (!strcmp(entry->arg,"image.dos")) { + cctx.hdrdump = PERK_HDRDUMP_IMAGE_DOS_HEADER; + } else if (!strcmp(entry->arg,"coff")) { + cctx.hdrdump = PERK_HDRDUMP_COFF_IMAGE_HEADER; + cctx.hdrdump |= PERK_HDRDUMP_COFF_OBJECT_HEADER; + cctx.hdrdump |= PERK_HDRDUMP_COFF_OPT_HEADER; + } else if (!strcmp(entry->arg,"coff.image")) { + cctx.hdrdump = PERK_HDRDUMP_COFF_IMAGE_HEADER; + } else if (!strcmp(entry->arg,"coff.obj")) { + cctx.hdrdump = PERK_HDRDUMP_COFF_OBJECT_HEADER; + } else if (!strcmp(entry->arg,"coff.object")) { + cctx.hdrdump = PERK_HDRDUMP_COFF_OBJECT_HEADER; + } else if (!strcmp(entry->arg,"coff.opt")) { + cctx.hdrdump = PERK_HDRDUMP_COFF_OPT_HEADER; + } else if (!strcmp(entry->arg,"coff.optional")) { + cctx.hdrdump = PERK_HDRDUMP_COFF_OPT_HEADER; + } else if (!strcmp(entry->arg,"sectbl")) { + cctx.hdrdump = PERK_HDRDUMP_SECTION_TABLE; + } else if (!strcmp(entry->arg,"section.table")) { + cctx.hdrdump = PERK_HDRDUMP_SECTION_TABLE; + } else if (!strcmp(entry->arg,"exphdr")) { + cctx.hdrdump = PERK_HDRDUMP_EXPORT_HEADER; + } else if (!strcmp(entry->arg,"export.header")) { + cctx.hdrdump = PERK_HDRDUMP_EXPORT_HEADER; + } else if (!strcmp(entry->arg,"imptbl")) { + cctx.hdrdump = PERK_HDRDUMP_IMPORT_TABLE; + } else if (!strcmp(entry->arg,"import.table")) { + cctx.hdrdump = PERK_HDRDUMP_IMPORT_TABLE; + } + break; } } else nunits++; -- cgit v1.2.3