437706
output: pe_output_image_sections(): implementation and integration.
@@ -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 *);
|
@@ -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 \
|
@@ -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
|
|
@@ -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
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
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
|
+
}
|