summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2025-06-07 13:39:58 +0000
committermidipix <writeonce@midipix.org>2025-06-07 15:20:04 +0000
commite5823e2b6269c82dc348bece70a40b1d96520c25 (patch)
tree455defe58af2c46972b7e98bcb067c8ba13c12aa /src
parent425c2f0202cdd52a2d51a91dc178a28cb9f00b1b (diff)
downloadperk-e5823e2b6269c82dc348bece70a40b1d96520c25.tar.bz2
perk-e5823e2b6269c82dc348bece70a40b1d96520c25.tar.xz
struct pe_meta_coff_symbol: optimize for iterative name access.
Diffstat (limited to 'src')
-rw-r--r--src/output/pe_output_image_symbols.c8
-rw-r--r--src/reader/pe_read_coff_symbol.c10
2 files changed, 6 insertions, 12 deletions
diff --git a/src/output/pe_output_image_symbols.c b/src/output/pe_output_image_symbols.c
index 73e712c..8305b1c 100644
--- a/src/output/pe_output_image_symbols.c
+++ b/src/output/pe_output_image_symbols.c
@@ -43,13 +43,7 @@ int pe_output_image_symbols(
&symtbl[i],&symrec,
&meta->m_coff,meta->r_image.map_addr);
- if (pe_dprintf(
- fdout,
- "%s%s\n",
- dash,
- symrec.cs_long_name
- ? symrec.cs_long_name
- : symrec.cs_name) < 0)
+ if (pe_dprintf(fdout,"%s%s\n",dash,symrec.cs_name) < 0)
return PERK_FILE_ERROR(dctx);
i += symtbl[i].cs_num_of_aux_symbols[0];
diff --git a/src/reader/pe_read_coff_symbol.c b/src/reader/pe_read_coff_symbol.c
index ef72e59..965e2c5 100644
--- a/src/reader/pe_read_coff_symbol.c
+++ b/src/reader/pe_read_coff_symbol.c
@@ -22,14 +22,14 @@ int pe_read_coff_symbol(
char * mark;
unsigned bias = 0;
- m->cs_long_name = 0;
+ m->cs_name = m->cs_name_buf;
m->cs_value = pe_read_long(p->cs_value);
m->cs_section_number = pe_read_short(p->cs_section_number);
m->cs_type = pe_read_short(p->cs_type);
m->cs_storage_class = p->cs_storage_class[0];
m->cs_num_of_aux_symbols = p->cs_num_of_aux_symbols[0];
- memset(m->cs_name,0,sizeof(m->cs_name));
+ memset(m->cs_name_buf,0,sizeof(m->cs_name_buf));
if (p->cs_storage_class[0] == PE_IMAGE_SYM_CLASS_FILE)
if (p->cs_num_of_aux_symbols[0])
@@ -40,17 +40,17 @@ int pe_read_coff_symbol(
if (!bias && (p->cs_storage_class[0] == PE_IMAGE_SYM_CLASS_FILE)
&& p->cs_num_of_aux_symbols[0]) {
- memcpy(m->cs_name,p[1].cs_name,sizeof(*p));
+ memcpy(m->cs_name_buf,p[1].cs_name,sizeof(*p));
} else if (p->cs_name[0]) {
- memcpy(m->cs_name,p->cs_name,sizeof(p->cs_name));
+ memcpy(m->cs_name_buf,p->cs_name,sizeof(p->cs_name));
} else if (!p->cs_name[1] && !p->cs_name[2] && !p->cs_name[3]) {
mark = (char *)base;
roffset = pe_read_long(&p->cs_name[4]);
if (roffset < coff->cfh_size_of_str_tbl)
- m->cs_long_name = mark + coff->cfh_ptr_to_str_tbl + roffset;
+ m->cs_name = mark + coff->cfh_ptr_to_str_tbl + roffset;
}
return 0;