summaryrefslogtreecommitdiff
path: root/src/driver
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver')
-rw-r--r--src/driver/pe_driver_ctx.c37
1 files changed, 37 insertions, 0 deletions
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++;