summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2025-06-10 15:36:27 +0000
committermidipix <writeonce@midipix.org>2025-06-10 18:06:26 +0000
commit6cc493ea65bf2c94d03f299e6343e8e50b4fb510 (patch)
treeb43078ede385f095b57fc38bc992ad5f41e3fe4b
parenta4b1bbeca250dea98f341502d71f09af636f9a1a (diff)
downloadperk-6cc493ea65bf2c94d03f299e6343e8e50b4fb510.tar.bz2
perk-6cc493ea65bf2c94d03f299e6343e8e50b4fb510.tar.xz
reader: implemented pe_read_aux_rec_section().
-rw-r--r--include/perk/perk.h3
-rw-r--r--project/common.mk1
-rw-r--r--src/reader/pe_read_aux_rec_section.c32
3 files changed, 36 insertions, 0 deletions
diff --git a/include/perk/perk.h b/include/perk/perk.h
index 47302b4..8c0baae 100644
--- a/include/perk/perk.h
+++ b/include/perk/perk.h
@@ -359,6 +359,9 @@ perk_api int pe_read_coff_symbol (const struct pe_raw_coff_symbol
perk_api int pe_read_import_lookup (const unsigned char *, struct pe_meta_import_lookup *,
uint32_t magic);
+perk_api int pe_read_aux_rec_section (const struct pe_raw_coff_symbol *, struct pe_meta_aux_rec_section *,
+ int idx);
+
/* low-level symtbl api */
perk_api uint32_t pe_hash_mbstr_crc32 (const unsigned char *);
perk_api uint64_t pe_hash_mbstr_crc64 (const unsigned char *);
diff --git a/project/common.mk b/project/common.mk
index 3413382..8951a25 100644
--- a/project/common.mk
+++ b/project/common.mk
@@ -34,6 +34,7 @@ API_SRCS = \
src/output/pe_output_image_symbols.c \
src/output/pe_output_idata_libraries.c \
src/output/pe_output_mdso_libraries.c \
+ src/reader/pe_read_aux_rec_section.c \
src/reader/pe_read_coff_header.c \
src/reader/pe_read_coff_symbol.c \
src/reader/pe_read_dos_header.c \
diff --git a/src/reader/pe_read_aux_rec_section.c b/src/reader/pe_read_aux_rec_section.c
new file mode 100644
index 0000000..df75352
--- /dev/null
+++ b/src/reader/pe_read_aux_rec_section.c
@@ -0,0 +1,32 @@
+/***************************************************************/
+/* perk: PE Resource Kit */
+/* Copyright (C) 2015--2025 SysDeer Technologies, LLC */
+/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
+/***************************************************************/
+
+#include <perk/perk.h>
+#include <perk/perk_consts.h>
+#include <perk/perk_structs.h>
+#include "perk_endian_impl.h"
+#include "perk_reader_impl.h"
+
+int pe_read_aux_rec_section(
+ const struct pe_raw_coff_symbol * p,
+ struct pe_meta_aux_rec_section * m,
+ int idx)
+{
+ const void * addr;
+ const struct pe_raw_aux_rec_section * arec;
+
+ addr = &p[++idx];
+ arec = (struct pe_raw_aux_rec_section *)addr;
+
+ m->aux_size = pe_read_long(arec->aux_size);
+ m->aux_num_of_relocs = pe_read_short(arec->aux_num_of_relocs);
+ m->aux_num_of_line_nums = pe_read_short(arec->aux_num_of_line_nums);
+ m->aux_check_sum = pe_read_long(arec->aux_check_sum);
+ m->aux_number = pe_read_short(arec->aux_number);
+ m->aux_selection = arec->aux_selection[0];
+
+ return 0;
+}