437706 output: pe_output_image_sections(): implementation and integration.

Authored and Committed by midipix 8 years ago
    output: pe_output_image_sections(): implementation and integration.
    
        
file modified
+1 -0
include/perk/perk.h CHANGED
@@ -171,6 +171,7 @@ perk_api void pe_free_unit_ctx (struct pe_unit_ctx *);
171
171
/* utility api */
172
172
perk_api int pe_main (int, char **, char **);
173
173
perk_api int pe_output_image_category (const struct pe_driver_ctx *, const struct pe_image_meta *, FILE *);
174
+ perk_api int pe_output_image_sections (const struct pe_driver_ctx *, const struct pe_image_meta *, FILE *);
174
175
perk_api int pe_output_export_symbols (const struct pe_driver_ctx *, const struct pe_image_meta *, FILE *);
175
176
perk_api int pe_output_import_libraries(const struct pe_driver_ctx *, const struct pe_image_meta *, FILE *);
176
177
perk_api int pe_output_error_record (const struct pe_driver_ctx *, const struct pe_error_info *);
file modified
+1 -0
project/common.mk CHANGED
@@ -11,6 +11,7 @@ API_SRCS = \
11
11
src/output/pe_output_error.c \
12
12
src/output/pe_output_export_symbols.c \
13
13
src/output/pe_output_image_category.c \
14
+ src/output/pe_output_image_sections.c \
14
15
src/output/pe_output_import_libraries.c \
15
16
src/reader/pe_read_coff_header.c \
16
17
src/reader/pe_read_dos_header.c \
file modified
+3 -0
src/driver/pe_amain.c CHANGED
@@ -55,6 +55,9 @@ static void pe_perform_unit_actions(
55
55
if (flags & PERK_OUTPUT_IMAGE_CATEGORY)
56
56
pe_output_image_category(dctx,uctx->meta,0);
57
57
58
+ if (flags & PERK_OUTPUT_IMAGE_SECTIONS)
59
+ pe_output_image_sections(dctx,uctx->meta,0);
60
+
58
61
if (flags & PERK_OUTPUT_EXPORT_SYMS)
59
62
pe_output_export_symbols(dctx,uctx->meta,0);
60
63
src/output/pe_output_image_sections.c ADDED
@@ -0,0 +1,40 @@
1
+ /***************************************************************/
2
+ /* perk: PE Resource Kit */
3
+ /* Copyright (C) 2015--2016 Z. Gilboa */
4
+ /* Released under GPLv2 and GPLv3; see COPYING.PERK. */
5
+ /***************************************************************/
6
+
7
+ #include <stdio.h>
8
+
9
+ #include <perk/perk.h>
10
+ #include <perk/perk_output.h>
11
+ #include "perk_errinfo_impl.h"
12
+
13
+ int pe_output_image_sections(
14
+ const struct pe_driver_ctx * dctx,
15
+ const struct pe_image_meta * meta,
16
+ FILE * fout)
17
+ {
18
+ int i;
19
+ const char * dash = "";
20
+
21
+ if (!fout)
22
+ fout = stdout;
23
+
24
+ if (dctx->cctx->fmtflags & PERK_PRETTY_YAML) {
25
+ if (fputs("sections:\n",fout) < 0)
26
+ return PERK_FILE_ERROR(dctx);
27
+
28
+ dash = "- ";
29
+ }
30
+
31
+ for (i=0; i<meta->coff.num_of_sections; i++)
32
+ if (fprintf(fout,"%s%s\n",
33
+ dash,
34
+ meta->sectbl[i].long_name
35
+ ? meta->sectbl[i].long_name
36
+ : meta->sectbl[i].name) < 0)
37
+ return PERK_FILE_ERROR(dctx);
38
+
39
+ return 0;
40
+ }