9 if (!
bin || !
bin->clr || !
bin->clr->methoddefs) {
27 char *type_name =
NULL;
28 char *type_namespace =
NULL;
31 ut32 type_methods_end = type_methods_start;
52 if ((type_name || type_namespace) &&
i >= type_methods_start &&
i >= type_methods_end) {
76 type_namespace ? type_namespace :
"",
77 type_namespace && type_namespace[0] !=
'\x00' ?
"::" :
"",
78 type_name ? type_name :
"",
105 if (!
bin || !
bin->clr || !methoddef) {
113 if (!(methoddef->implflags & 0x01) && methoddef->rva) {
RZ_API void rz_bin_symbol_free(RzBinSymbol *sym)
int bin_pe_dotnet_read_method_header(Pe_image_clr *clr, RzBuffer *b, RzBinSymbol *sym)
int bin_pe_dotnet_init_clr(Pe_image_clr *clr, RzBuffer *b, ut64 image_clr_hdr_paddr)
int bin_pe_dotnet_init_metadata(Pe_image_clr *clr, bool big_endian, RzBuffer *b, ut64 metadata_directory)
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API RZ_BORROW RzListIter * rz_list_iterator(const RzList *list)
returns the first RzList iterator int the list
RZ_API RZ_OWN RzList * rz_list_newf(RzListFree f)
Returns a new initialized RzList pointer and sets the free method.
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
PE_DWord PE_() bin_pe_rva_to_paddr(RzBinPEObj *bin, PE_DWord rva)
PE_DWord PE_() bin_pe_rva_to_va(RzBinPEObj *bin, PE_DWord rva)
ut64 PE_() rz_bin_pe_get_clr_methoddef_offset(RzBinPEObj *bin, Pe_image_metadata_methoddef *methoddef)
RZ_OWN RzList *PE_() rz_bin_pe_get_clr_symbols(RzBinPEObj *bin)
int PE_() bin_pe_init_clr(RzBinPEObj *bin)
#define PE_IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR
#define RZ_BIN_TYPE_FUNC_STR
RZ_API RZ_OWN char * rz_buf_get_string(RZ_NONNULL RzBuffer *b, ut64 addr)
Get a string from the buffer.
void(* RzListFree)(void *ptr)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
static size_t rz_pvector_len(const RzPVector *vec)
#define rz_pvector_foreach(vec, it)
Pe_image_clr_header * header
struct rz_list_iter_t * n
ut64(WINAPI *w32_GetEnabledXStateFeatures)()