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 +#include +#include +#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; +}