summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2025-06-11 06:44:34 +0000
committermidipix <writeonce@midipix.org>2025-06-11 06:44:57 +0000
commit39eebb91012f75bce9166cb6f5724426730121e0 (patch)
treedc25e81a609f13157739aa97812a2e2814c5f24a /src
parent2115d01c6543b2ab46b0205287882fc4704d1832 (diff)
downloadperk-39eebb91012f75bce9166cb6f5724426730121e0.tar.bz2
perk-39eebb91012f75bce9166cb6f5724426730121e0.tar.xz
struct pe_meta_sec_hdr: optimize for iterative name access.
Diffstat (limited to 'src')
-rw-r--r--src/logic/pe_image_meta_data.c6
-rw-r--r--src/output/pe_output_image_sections.c8
-rw-r--r--src/output/pe_output_image_symbols.c4
-rw-r--r--src/reader/pe_read_section_header.c6
4 files changed, 8 insertions, 16 deletions
diff --git a/src/logic/pe_image_meta_data.c b/src/logic/pe_image_meta_data.c
index 9846818..b2255d7 100644
--- a/src/logic/pe_image_meta_data.c
+++ b/src/logic/pe_image_meta_data.c
@@ -470,10 +470,10 @@ int pe_meta_get_image_meta(
for (i=0; i<m->m_coff.cfh_num_of_sections; i++) {
pe_read_section_header(&m->r_sectbl[i],&m->m_sectbl[i]);
- if (m->m_sectbl[i].sh_name[0] == '/')
- if ((l = strtol(&m->m_sectbl[i].sh_name[1],0,10)) > 0)
+ if (m->m_sectbl[i].sh_name_buf[0] == '/')
+ if ((l = strtol(&m->m_sectbl[i].sh_name_buf[1],0,10)) > 0)
if (l < m->m_coff.cfh_size_of_str_tbl)
- m->m_sectbl[i].sh_long_name = base + m->m_coff.cfh_ptr_to_str_tbl + l;
+ m->m_sectbl[i].sh_name = base + m->m_coff.cfh_ptr_to_str_tbl + l;
}
/* .edata */
diff --git a/src/output/pe_output_image_sections.c b/src/output/pe_output_image_sections.c
index 69b49d5..5fb2393 100644
--- a/src/output/pe_output_image_sections.c
+++ b/src/output/pe_output_image_sections.c
@@ -30,13 +30,7 @@ int pe_output_image_sections(
}
for (i=0; i<meta->m_coff.cfh_num_of_sections; i++)
- if (pe_dprintf(
- fdout,
- "%s%s\n",
- dash,
- meta->m_sectbl[i].sh_long_name
- ? meta->m_sectbl[i].sh_long_name
- : meta->m_sectbl[i].sh_name) < 0)
+ if (pe_dprintf(fdout,"%s%s\n",dash,meta->m_sectbl[i].sh_name) < 0)
return PERK_FILE_ERROR(dctx);
return 0;
diff --git a/src/output/pe_output_image_symbols.c b/src/output/pe_output_image_symbols.c
index c07221d..8c63fc4 100644
--- a/src/output/pe_output_image_symbols.c
+++ b/src/output/pe_output_image_symbols.c
@@ -146,9 +146,7 @@ static int pe_output_symbol_records_yaml(
default:
sechdr = &meta->m_sectbl[symrec->cs_section_number - 1];
- secname = sechdr->sh_long_name
- ? sechdr->sh_long_name
- : sechdr->sh_name;
+ secname = sechdr->sh_name;
}
typedesc[0] = pe_sym_type_desc_msb[(symrec->cs_type >> 4) & 0x03];
diff --git a/src/reader/pe_read_section_header.c b/src/reader/pe_read_section_header.c
index 4a2c7f5..ce62b82 100644
--- a/src/reader/pe_read_section_header.c
+++ b/src/reader/pe_read_section_header.c
@@ -15,10 +15,10 @@
int pe_read_section_header(const struct pe_raw_sec_hdr * p, struct pe_meta_sec_hdr * m)
{
/* name: meta struct conveniently contains null termination */
- memset(m,0,sizeof(m->sh_name));
- memcpy(m,p,sizeof(p->sh_name));
+ memset(m->sh_name_buf,0,sizeof(m->sh_name_buf));
+ memcpy(m->sh_name_buf,p,sizeof(p->sh_name));
- m->sh_long_name = 0;
+ m->sh_name = m->sh_name_buf;
m->sh_virtual_size = pe_read_long(p->sh_virtual_size);
m->sh_virtual_addr = pe_read_long(p->sh_virtual_addr);
m->sh_size_of_raw_data = pe_read_long(p->sh_size_of_raw_data);