From a9d23f9a72373e0bd8ce580d043aa19140855ec3 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 9 Apr 2021 07:03:37 +0000 Subject: utility: pe_perform_hdrdump_actions(): initial implementation. --- src/driver/pe_amain.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src') diff --git a/src/driver/pe_amain.c b/src/driver/pe_amain.c index 50d18ac..00f5ed3 100644 --- a/src/driver/pe_amain.c +++ b/src/driver/pe_amain.c @@ -48,6 +48,32 @@ static ssize_t pe_version(struct pe_driver_ctx * dctx, int fdout) verclr[4],verinfo->commit,verclr[5]); } +static void pe_perform_hdrdump_actions( + const struct pe_driver_ctx * dctx, + struct pe_unit_ctx * uctx) +{ + if (dctx->cctx->hdrdump & PERK_HDRDUMP_IMAGE_DOS_HEADER) + pe_hdrdump_image_dos_hdr(dctx,uctx->meta); + + if (dctx->cctx->hdrdump & PERK_HDRDUMP_COFF_IMAGE_HEADER) + pe_hdrdump_coff_image_hdr(dctx,uctx->meta); + + if (dctx->cctx->hdrdump & PERK_HDRDUMP_COFF_OBJECT_HEADER) + pe_hdrdump_coff_object_hdr(dctx,uctx->meta); + + if (dctx->cctx->hdrdump & PERK_HDRDUMP_COFF_OPT_HEADER) + pe_hdrdump_opt_hdr(dctx,uctx->meta); + + if (dctx->cctx->hdrdump & PERK_HDRDUMP_SECTION_TABLE) + pe_hdrdump_sec_tbl(dctx,uctx->meta); + + if (dctx->cctx->hdrdump & PERK_HDRDUMP_EXPORT_HEADER) + pe_hdrdump_export_hdr(dctx,uctx->meta); + + if (dctx->cctx->hdrdump & PERK_HDRDUMP_IMPORT_TABLE) + pe_hdrdump_import_tbl(dctx,uctx->meta); +} + static void pe_perform_unit_actions( const struct pe_driver_ctx * dctx, struct pe_unit_ctx * uctx) @@ -74,6 +100,9 @@ static void pe_perform_unit_actions( if ((flags & PERK_OUTPUT_MDSO_LIBS) || (flags & PERK_OUTPUT_MDSO_SYMS)) pe_output_mdso_libraries(dctx,uctx->meta); + + if (dctx->cctx->hdrdump) + pe_perform_hdrdump_actions(dctx,uctx); } static int pe_exit(struct pe_driver_ctx * dctx, int ret) -- cgit v1.2.3