const char *name;
const char *culture;
const char *hash_value;
+ const guint8* public_key;
+ const char *public_tok_value;
+ guint32 hash_alg;
guint32 hash_len;
guint32 flags;
guint16 major, minor, build, revision;
typedef struct {
int ref_count;
char *basedir;
+ gboolean in_gac;
MonoAssemblyName aname;
GModule *aot_module;
MonoImage *image;
- MonoImage **modules;
/* Load files here */
- void *dynamic;
+ gboolean dynamic;
} MonoAssembly;
typedef struct {
struct _MonoImage {
int ref_count;
FILE *f;
+ /* if f is NULL the image was loaded from raw data */
+ char *raw_data;
+ guint32 raw_data_len;
+ gboolean raw_data_allocated;
char *name;
const char *assembly_name;
const char *module_name;
+ const char *version;
char *guid;
void *image_info;
*/
MonoAssembly **references;
+ MonoImage **modules;
+
+ MonoImage **files;
+
/*
* The Assembly this image was loaded from.
*/
*/
GHashTable *method_cache;
GHashTable *class_cache;
+ /*
+ * Indexed by fielddef and memberref tokens
+ */
+ GHashTable *field_cache;
+
+ /* indexed by typespec tokens. */
+ GHashTable *typespec_cache;
+
+ /*
+ * Indexed by MonoGenericInst.
+ */
+ GHashTable *generic_inst_cache;
+
/*
* Indexes namespaces to hash tables that map class name to typedef token.
*/
GHashTable *managed_wrapper_cache;
GHashTable *native_wrapper_cache;
GHashTable *remoting_invoke_cache;
+ GHashTable *synchronized_cache;
void *reflection_info;
* metadata engine
*/
void *user_info;
+
+ /* dll map entries */
+ GHashTable *dll_map;
+
+ /* Whenever this is a dynamically emitted module */
+ gboolean dynamic;
};
typedef enum {
MONO_IMAGE_IMAGE_INVALID
} MonoImageOpenStatus;
+void mono_images_init (void);
+
MonoImage *mono_image_open (const char *fname,
MonoImageOpenStatus *status);
+MonoImage *mono_image_open_from_data (char *data, guint32 data_len, gboolean need_copy,
+ MonoImageOpenStatus *status);
MonoImage *mono_image_loaded (const char *name);
MonoImage *mono_image_loaded_by_guid (const char *guid);
+void mono_image_init (MonoImage *image);
void mono_image_close (MonoImage *image);
+void mono_image_addref (MonoImage *image);
const char *mono_image_strerror (MonoImageOpenStatus status);
int mono_image_ensure_section (MonoImage *image,
guint32 mono_image_get_entry_point (MonoImage *image);
const char *mono_image_get_resource (MonoImage *image, guint32 offset, guint32 *size);
+MonoImage* mono_image_load_file_for_image (MonoImage *image, int fileidx);
/* This actually returns a MonoPEResourceDataEntry *, but declaring it
* causes an include file loop.
guint32 mono_image_strong_name_position (MonoImage *image, guint32 *size);
void mono_image_add_to_name_cache (MonoImage *image,
const char *nspace,
- const char *name, guint32 index);
+ const char *name, guint32 idx);
#endif