diff options
author | midipix <writeonce@midipix.org> | 2025-05-30 23:17:35 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-05-30 23:44:13 +0000 |
commit | 57ddbe03f41c4fc4686f92734b2aa3a56392815a (patch) | |
tree | 635f1f264223b7a19d70d22918cfc075b591074e | |
parent | d2434891f37ef9592fa2e6b606d4a4411500d94b (diff) | |
download | perk-57ddbe03f41c4fc4686f92734b2aa3a56392815a.tar.bz2 perk-57ddbe03f41c4fc4686f92734b2aa3a56392815a.tar.xz |
library api: _meta_ (object and image meta data) namespace overhaul.
-rw-r--r-- | include/perk/perk.h | 16 | ||||
-rw-r--r-- | project/common.mk | 2 | ||||
-rw-r--r-- | src/driver/pe_unit_ctx.c | 4 | ||||
-rw-r--r-- | src/logic/pe_image_meta_data.c (renamed from src/logic/pe_get_image_meta.c) | 46 | ||||
-rw-r--r-- | src/output/pe_output_mdso_libraries.c | 14 |
5 files changed, 41 insertions, 41 deletions
diff --git a/include/perk/perk.h b/include/perk/perk.h index 07078ec..9cf175f 100644 --- a/include/perk/perk.h +++ b/include/perk/perk.h @@ -284,20 +284,20 @@ perk_api int pe_map_raw_image (const struct pe_driver_ctx *, perk_api int pe_unmap_raw_image (struct pe_raw_image *); /* image meta api */ -perk_api int pe_get_image_meta (const struct pe_driver_ctx *, +perk_api int pe_meta_get_image_meta (const struct pe_driver_ctx *, const struct pe_raw_image *, struct pe_image_meta **); -perk_api void pe_free_image_meta (struct pe_image_meta *); +perk_api void pe_meta_free_image_meta (struct pe_image_meta *); -perk_api int pe_get_named_section_index (const struct pe_image_meta *, const char *); -perk_api int pe_get_block_section_index (const struct pe_image_meta *, const struct pe_block *); +perk_api int pe_meta_get_named_section_index (const struct pe_image_meta *, const char *); +perk_api int pe_meta_get_block_section_index (const struct pe_image_meta *, const struct pe_block *); -perk_api int pe_get_roffset_from_rva (const struct pe_image_meta *, uint32_t, uint32_t *); -perk_api int pe_get_rva_from_roffset (const struct pe_image_meta *, uint32_t, uint32_t *); +perk_api int pe_meta_get_roffset_from_rva (const struct pe_image_meta *, uint32_t, uint32_t *); +perk_api int pe_meta_get_rva_from_roffset (const struct pe_image_meta *, uint32_t, uint32_t *); -perk_api int pe_get_expsym_by_name (const struct pe_image_meta *, const char *, struct pe_expsym *); -perk_api int pe_get_expsym_by_index (const struct pe_image_meta *, unsigned, struct pe_expsym *); +perk_api int pe_meta_get_expsym_by_name (const struct pe_image_meta *, const char *, struct pe_expsym *); +perk_api int pe_meta_get_expsym_by_index (const struct pe_image_meta *, unsigned, struct pe_expsym *); /* info api */ perk_api int pe_info_get_image_abi (const struct pe_image_meta *, struct pe_info_string *); diff --git a/project/common.mk b/project/common.mk index ef923e4..ae1cced 100644 --- a/project/common.mk +++ b/project/common.mk @@ -19,7 +19,7 @@ API_SRCS = \ src/info/pe_info_get_image_framework.c \ src/info/pe_info_get_image_subsystem.c \ src/info/pe_info_get_image_subtype.c \ - src/logic/pe_get_image_meta.c \ + src/logic/pe_image_meta_data.c \ src/logic/pe_map_raw_image.c \ src/output/pe_output_error.c \ src/output/pe_output_export_symbols.c \ diff --git a/src/driver/pe_unit_ctx.c b/src/driver/pe_unit_ctx.c index 48afa81..8a88884 100644 --- a/src/driver/pe_unit_ctx.c +++ b/src/driver/pe_unit_ctx.c @@ -17,7 +17,7 @@ static int pe_lib_free_unit_ctx_impl(struct pe_unit_ctx_impl * ctx, int ret) { if (ctx) { - pe_free_image_meta(ctx->meta); + pe_meta_free_image_meta(ctx->meta); pe_unmap_raw_image(&ctx->map); free(ctx); } @@ -51,7 +51,7 @@ int pe_lib_get_unit_ctx( return pe_lib_free_unit_ctx_impl(ctx, PERK_NESTED_ERROR(dctx)); - if (pe_get_image_meta(dctx,&ctx->map,&ctx->meta)) + if (pe_meta_get_image_meta(dctx,&ctx->map,&ctx->meta)) return pe_lib_free_unit_ctx_impl(ctx, PERK_NESTED_ERROR(dctx)); diff --git a/src/logic/pe_get_image_meta.c b/src/logic/pe_image_meta_data.c index daf6939..37d524f 100644 --- a/src/logic/pe_get_image_meta.c +++ b/src/logic/pe_image_meta_data.c @@ -34,12 +34,12 @@ static int pe_free_image_meta_impl(struct pe_image_meta * meta, int ret) return ret; } -void pe_free_image_meta(struct pe_image_meta * meta) +void pe_meta_free_image_meta(struct pe_image_meta * meta) { pe_free_image_meta_impl(meta,0); } -int pe_get_named_section_index(const struct pe_image_meta * m, const char * name) +int pe_meta_get_named_section_index(const struct pe_image_meta * m, const char * name) { int i; for (i=0; i<m->m_coff.cfh_num_of_sections; i++) if (!(strcmp(name,m->m_sectbl[i].sh_name))) @@ -48,7 +48,7 @@ int pe_get_named_section_index(const struct pe_image_meta * m, const char * name return -1; } -int pe_get_block_section_index(const struct pe_image_meta * m, const struct pe_block * block) +int pe_meta_get_block_section_index(const struct pe_image_meta * m, const struct pe_block * block) { int i; uint32_t low,high; @@ -67,7 +67,7 @@ int pe_get_block_section_index(const struct pe_image_meta * m, const struct pe_b return -1; } -int pe_get_roffset_from_rva(const struct pe_image_meta * m, uint32_t rva, uint32_t * roffset) +int pe_meta_get_roffset_from_rva(const struct pe_image_meta * m, uint32_t rva, uint32_t * roffset) { int i; uint32_t low,high; @@ -85,7 +85,7 @@ int pe_get_roffset_from_rva(const struct pe_image_meta * m, uint32_t rva, uint32 return -1; } -int pe_get_rva_from_roffset(const struct pe_image_meta * m, uint32_t roffset, uint32_t * rva) +int pe_meta_get_rva_from_roffset(const struct pe_image_meta * m, uint32_t roffset, uint32_t * rva) { int i; uint32_t low,high,ref; @@ -110,7 +110,7 @@ int pe_get_rva_from_roffset(const struct pe_image_meta * m, uint32_t roffset, ui return -1; } -int pe_get_expsym_by_name( +int pe_meta_get_expsym_by_name( const struct pe_image_meta * m, const char * name, struct pe_expsym * expsym) @@ -144,7 +144,7 @@ int pe_get_expsym_by_name( return -1; } -int pe_get_expsym_by_index( +int pe_meta_get_expsym_by_index( const struct pe_image_meta * m, unsigned index, struct pe_expsym * expsym) @@ -230,7 +230,7 @@ static void pe_detect_image_subtype(struct pe_image_meta * m) static bool pe_image_is_psxscl(const struct pe_image_meta * m) { return (!m->m_stats.t_nimplibs - && !pe_get_expsym_by_name(m,"__psx_init",0)); + && !pe_meta_get_expsym_by_name(m,"__psx_init",0)); } static bool pe_image_is_cygwin(const struct pe_image_meta * m) @@ -257,22 +257,22 @@ static bool pe_image_is_msys(const struct pe_image_meta * m) static bool pe_image_is_mingw(const struct pe_image_meta * m) { - return ((pe_get_named_section_index(m,".CRT") >= 0) - && (pe_get_named_section_index(m,".bss") >= 0) - && (pe_get_named_section_index(m,".tls") >= 0)); + return ((pe_meta_get_named_section_index(m,".CRT") >= 0) + && (pe_meta_get_named_section_index(m,".bss") >= 0) + && (pe_meta_get_named_section_index(m,".tls") >= 0)); } static void pe_detect_image_framework(struct pe_image_meta * m) { int framework; - if (pe_get_named_section_index(m,".midipix") >= 0) + if (pe_meta_get_named_section_index(m,".midipix") >= 0) framework = PE_FRAMEWORK_MIDIPIX; - else if (pe_get_named_section_index(m,".freestd") >= 0) + else if (pe_meta_get_named_section_index(m,".freestd") >= 0) framework = PE_FRAMEWORK_FREESTD; - else if (pe_get_named_section_index(m,".cygheap") >= 0) + else if (pe_meta_get_named_section_index(m,".cygheap") >= 0) framework = PE_FRAMEWORK_CYGONE; else if (pe_image_is_psxscl(m)) @@ -302,7 +302,7 @@ static void pe_detect_image_framework(struct pe_image_meta * m) m->m_framework = framework; } -int pe_get_image_meta( +int pe_meta_get_image_meta( const struct pe_driver_ctx * dctx, const struct pe_raw_image * image, struct pe_image_meta ** meta) @@ -376,8 +376,8 @@ int pe_get_image_meta( } /* .edata */ - i = pe_get_named_section_index(m,".edata"); - s = pe_get_block_section_index(m,&m->m_opt.oh_dirs.coh_export_tbl); + i = pe_meta_get_named_section_index(m,".edata"); + s = pe_meta_get_block_section_index(m,&m->m_opt.oh_dirs.coh_export_tbl); if ((i >= 0) && (i != s)) return pe_free_image_meta_impl( @@ -404,8 +404,8 @@ int pe_get_image_meta( unsigned char * pitem; size_t psize; - i = pe_get_named_section_index(m,".idata"); - s = pe_get_block_section_index(m,&m->m_opt.oh_dirs.coh_import_tbl); + i = pe_meta_get_named_section_index(m,".idata"); + s = pe_meta_get_block_section_index(m,&m->m_opt.oh_dirs.coh_import_tbl); if ((i >= 0) && (i != s)) return pe_free_image_meta_impl( @@ -501,7 +501,7 @@ int pe_get_image_meta( } /* .dsometa */ - if ((i = pe_get_named_section_index(m,MDSO_META_SECTION)) >= 0) { + if ((i = pe_meta_get_named_section_index(m,MDSO_META_SECTION)) >= 0) { m->h_dsometa = &m->m_sectbl[i]; m->r_dsometa = base + m->m_sectbl[i].sh_ptr_to_raw_data; @@ -511,7 +511,7 @@ int pe_get_image_meta( } /* .dsosyms */ - if ((i = pe_get_named_section_index(m,MDSO_SYMS_SECTION)) >= 0) { + if ((i = pe_meta_get_named_section_index(m,MDSO_SYMS_SECTION)) >= 0) { m->h_dsosyms = &m->m_sectbl[i]; m->r_dsosyms = base + m->m_sectbl[i].sh_ptr_to_raw_data; @@ -521,13 +521,13 @@ int pe_get_image_meta( } /* .dsostrs */ - if ((i = pe_get_named_section_index(m,MDSO_STRS_SECTION)) >= 0) { + if ((i = pe_meta_get_named_section_index(m,MDSO_STRS_SECTION)) >= 0) { m->h_dsostrs = &m->m_sectbl[i]; m->r_dsostrs = base + m->m_sectbl[i].sh_ptr_to_raw_data; } /* .dsodata */ - if ((i = pe_get_named_section_index(m,MDSO_DATA_SECTION)) >= 0) { + if ((i = pe_meta_get_named_section_index(m,MDSO_DATA_SECTION)) >= 0) { m->h_dsodata = &m->m_sectbl[i]; m->r_dsodata = base + m->m_sectbl[i].sh_ptr_to_raw_data; } diff --git a/src/output/pe_output_mdso_libraries.c b/src/output/pe_output_mdso_libraries.c index c668564..049cd4e 100644 --- a/src/output/pe_output_mdso_libraries.c +++ b/src/output/pe_output_mdso_libraries.c @@ -92,7 +92,7 @@ static char * dsolib_name(const struct pe_image_meta * m, int i) rva = va - m->m_opt.oh_mem.coh_image_base; } - if (pe_get_roffset_from_rva(m,(uint32_t)rva,&roffset) < 0) + if (pe_meta_get_roffset_from_rva(m,(uint32_t)rva,&roffset) < 0) return 0; return (addr = m->r_image.map_addr) + roffset; @@ -117,14 +117,14 @@ static unsigned char * dsosym_meta(const struct pe_image_meta * m, int j) rva = va; } - if ((idx = pe_get_named_section_index(m,MDSO_META_SECTION)) >= 0) - if (idx != pe_get_block_section_index(m,&(struct pe_block){rva,0})) + if ((idx = pe_meta_get_named_section_index(m,MDSO_META_SECTION)) >= 0) + if (idx != pe_meta_get_block_section_index(m,&(struct pe_block){rva,0})) return (unsigned char *)(-1); if (va > rva) return 0; - if (pe_get_roffset_from_rva(m,rva,&roffset) < 0) + if (pe_meta_get_roffset_from_rva(m,rva,&roffset) < 0) return 0; return (unsigned char *)m->r_image.map_addr + roffset; @@ -150,14 +150,14 @@ static char * dsosym_string(const struct pe_image_meta * m, int j) rva = va; } - if ((idx = pe_get_named_section_index(m,MDSO_STRS_SECTION)) >= 0) - if (idx != pe_get_block_section_index(m,&(struct pe_block){rva,0})) + if ((idx = pe_meta_get_named_section_index(m,MDSO_STRS_SECTION)) >= 0) + if (idx != pe_meta_get_block_section_index(m,&(struct pe_block){rva,0})) return (char *)(-2); if (va > rva) return 0; - if (pe_get_roffset_from_rva(m,rva,&roffset) < 0) + if (pe_meta_get_roffset_from_rva(m,rva,&roffset) < 0) return 0; return (addr = m->r_image.map_addr) + roffset; |