summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2025-06-10 18:05:20 +0000
committermidipix <writeonce@midipix.org>2025-06-10 18:06:26 +0000
commit09166f55c8dd0c1b09c57a66cac337374e694e06 (patch)
tree01c56be58621fcb98ac105dc5d81206919af6e11
parent6cc493ea65bf2c94d03f299e6343e8e50b4fb510 (diff)
downloadperk-09166f55c8dd0c1b09c57a66cac337374e694e06.tar.bz2
perk-09166f55c8dd0c1b09c57a66cac337374e694e06.tar.xz
reader: implemented pe_read_aux_rec_weaksym().
-rw-r--r--include/perk/perk.h3
-rw-r--r--project/common.mk1
-rw-r--r--src/reader/pe_read_aux_rec_weaksym.c28
3 files changed, 32 insertions, 0 deletions
diff --git a/include/perk/perk.h b/include/perk/perk.h
index 8c0baae..59b55e5 100644
--- a/include/perk/perk.h
+++ b/include/perk/perk.h
@@ -362,6 +362,9 @@ perk_api int pe_read_import_lookup (const unsigned char *,
perk_api int pe_read_aux_rec_section (const struct pe_raw_coff_symbol *, struct pe_meta_aux_rec_section *,
int idx);
+perk_api int pe_read_aux_rec_weaksym (const struct pe_raw_coff_symbol *, struct pe_meta_aux_rec_weaksym *,
+ 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 8951a25..8eab6ac 100644
--- a/project/common.mk
+++ b/project/common.mk
@@ -35,6 +35,7 @@ API_SRCS = \
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_aux_rec_weaksym.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_weaksym.c b/src/reader/pe_read_aux_rec_weaksym.c
new file mode 100644
index 0000000..b02c44c
--- /dev/null
+++ b/src/reader/pe_read_aux_rec_weaksym.c
@@ -0,0 +1,28 @@
+/***************************************************************/
+/* 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_weaksym(
+ const struct pe_raw_coff_symbol * p,
+ struct pe_meta_aux_rec_weaksym * m,
+ int idx)
+{
+ const void * addr;
+ const struct pe_raw_aux_rec_weaksym * arec;
+
+ addr = &p[++idx];
+ arec = (struct pe_raw_aux_rec_weaksym *)addr;
+
+ m->aux_tag_index = pe_read_long(arec->aux_tag_index);
+ m->aux_characteristics = pe_read_long(arec->aux_characteristics);
+
+ return 0;
+}