summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/reader/pe_read_aux_rec_section.c32
1 files changed, 32 insertions, 0 deletions
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;
+}