diff options
author | midipix <writeonce@midipix.org> | 2025-06-11 06:44:34 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-06-11 06:44:57 +0000 |
commit | 39eebb91012f75bce9166cb6f5724426730121e0 (patch) | |
tree | dc25e81a609f13157739aa97812a2e2814c5f24a /src | |
parent | 2115d01c6543b2ab46b0205287882fc4704d1832 (diff) | |
download | perk-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.c | 6 | ||||
-rw-r--r-- | src/output/pe_output_image_sections.c | 8 | ||||
-rw-r--r-- | src/output/pe_output_image_symbols.c | 4 | ||||
-rw-r--r-- | src/reader/pe_read_section_header.c | 6 |
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); |