@@ -104,7 +104,7 @@ mono_images_unlock(void)
104
104
}
105
105
106
106
static MonoImage *
107
- mono_image_open_a_lot_parameterized (MonoLoadedImages * li , MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status );
107
+ mono_image_open_a_lot_parameterized (MonoLoadedImages * li , MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status , const MonoImageOpenOptions * options );
108
108
109
109
/* Maps string keys to MonoImageStorage values.
110
110
*
@@ -1174,8 +1174,7 @@ dump_encmap (MonoImage *image)
1174
1174
}
1175
1175
1176
1176
static MonoImage *
1177
- do_mono_image_load (MonoImage * image , MonoImageOpenStatus * status ,
1178
- gboolean care_about_cli , gboolean care_about_pecoff )
1177
+ do_mono_image_load (MonoImage * image , MonoImageOpenStatus * status , const MonoImageLoadOptions * options )
1179
1178
{
1180
1179
ERROR_DECL (error );
1181
1180
GSList * l ;
@@ -1201,7 +1200,7 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
1201
1200
if (status )
1202
1201
* status = MONO_IMAGE_IMAGE_INVALID ;
1203
1202
1204
- if (care_about_pecoff == FALSE )
1203
+ if (options -> dont_care_about_pecoff == TRUE )
1205
1204
goto done ;
1206
1205
1207
1206
if (!mono_image_load_pe_data (image ))
@@ -1210,7 +1209,7 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
1210
1209
image -> loader = (MonoImageLoader * )& pe_loader ;
1211
1210
}
1212
1211
1213
- if (care_about_cli == FALSE ) {
1212
+ if (options -> dont_care_about_cli == TRUE ) {
1214
1213
goto done ;
1215
1214
}
1216
1215
@@ -1409,8 +1408,7 @@ mono_image_storage_new_raw_data (char *datac, guint32 data_len, gboolean raw_dat
1409
1408
}
1410
1409
1411
1410
static MonoImage *
1412
- do_mono_image_open (MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status ,
1413
- gboolean care_about_cli , gboolean care_about_pecoff , gboolean metadata_only )
1411
+ do_mono_image_open (MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status , const MonoImageOpenOptions * options )
1414
1412
{
1415
1413
MonoCLIImageInfo * iinfo ;
1416
1414
MonoImage * image ;
@@ -1424,6 +1422,7 @@ do_mono_image_open (MonoAssemblyLoadContext *alc, const char *fname, MonoImageOp
1424
1422
}
1425
1423
1426
1424
image = g_new0 (MonoImage , 1 );
1425
+ image -> ref_count = 1 ;
1427
1426
image -> storage = storage ;
1428
1427
mono_image_init_raw_data (image , storage );
1429
1428
if (!image -> raw_data ) {
@@ -1433,14 +1432,14 @@ do_mono_image_open (MonoAssemblyLoadContext *alc, const char *fname, MonoImageOp
1433
1432
* status = MONO_IMAGE_IMAGE_INVALID ;
1434
1433
return NULL ;
1435
1434
}
1436
- iinfo = g_new0 ( MonoCLIImageInfo , 1 ) ;
1437
- image -> image_info = iinfo ;
1435
+ image -> not_executable = !! options -> not_executable ;
1436
+ image -> metadata_only = !! options -> metadata_only ;
1438
1437
image -> name = mono_path_resolve_symlinks (fname );
1439
1438
image -> filename = g_strdup (image -> name );
1440
- image -> metadata_only = !! metadata_only ;
1441
- image -> ref_count = 1 ;
1439
+ iinfo = g_new0 ( MonoCLIImageInfo , 1 ) ;
1440
+ image -> image_info = iinfo ;
1442
1441
image -> alc = alc ;
1443
- return do_mono_image_load (image , status , care_about_cli , care_about_pecoff );
1442
+ return do_mono_image_load (image , status , & options -> load_options );
1444
1443
}
1445
1444
1446
1445
/**
@@ -1627,7 +1626,8 @@ mono_image_open_from_data_internal (MonoAssemblyLoadContext *alc, char *data, gu
1627
1626
image -> ref_count = 1 ;
1628
1627
image -> alc = alc ;
1629
1628
1630
- image = do_mono_image_load (image , status , TRUE, TRUE);
1629
+ MonoImageLoadOptions options = {0 , };
1630
+ image = do_mono_image_load (image , status , & options );
1631
1631
if (image == NULL )
1632
1632
return NULL ;
1633
1633
@@ -1742,7 +1742,8 @@ mono_image_open_from_module_handle (MonoAssemblyLoadContext *alc, HMODULE module
1742
1742
image -> ref_count = has_entry_point ? 0 : 1 ;
1743
1743
image -> alc = alc ;
1744
1744
1745
- image = do_mono_image_load (image , status , TRUE, TRUE);
1745
+ MonoImageLoadOptions options = {0 , };
1746
+ image = do_mono_image_load (image , status , & options );
1746
1747
if (image == NULL )
1747
1748
return NULL ;
1748
1749
@@ -1761,11 +1762,12 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
1761
1762
* status = MONO_IMAGE_NOT_SUPPORTED ;
1762
1763
return NULL ;
1763
1764
}
1764
- return mono_image_open_a_lot (mono_alc_get_default (), fname , status );
1765
+ MonoImageOpenOptions options = {0 , };
1766
+ return mono_image_open_a_lot (mono_alc_get_default (), fname , status , & options );
1765
1767
}
1766
1768
1767
1769
static MonoImage *
1768
- mono_image_open_a_lot_parameterized (MonoLoadedImages * li , MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status )
1770
+ mono_image_open_a_lot_parameterized (MonoLoadedImages * li , MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status , const MonoImageOpenOptions * options )
1769
1771
{
1770
1772
MonoImage * image ;
1771
1773
GHashTable * loaded_images = mono_loaded_images_get_hash (li );
@@ -1867,18 +1869,18 @@ mono_image_open_a_lot_parameterized (MonoLoadedImages *li, MonoAssemblyLoadConte
1867
1869
mono_images_unlock ();
1868
1870
1869
1871
// Image not loaded, load it now
1870
- image = do_mono_image_open (alc , fname , status , TRUE, TRUE, FALSE );
1872
+ image = do_mono_image_open (alc , fname , status , options );
1871
1873
if (image == NULL )
1872
1874
return NULL ;
1873
1875
1874
1876
return register_image (li , image );
1875
1877
}
1876
1878
1877
1879
MonoImage *
1878
- mono_image_open_a_lot (MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status )
1880
+ mono_image_open_a_lot (MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status , const MonoImageOpenOptions * options )
1879
1881
{
1880
1882
MonoLoadedImages * li = mono_alc_get_loaded_images (alc );
1881
- return mono_image_open_a_lot_parameterized (li , alc , fname , status );
1883
+ return mono_image_open_a_lot_parameterized (li , alc , fname , status , options );
1882
1884
}
1883
1885
1884
1886
/**
@@ -1893,7 +1895,8 @@ mono_image_open_a_lot (MonoAssemblyLoadContext *alc, const char *fname, MonoImag
1893
1895
MonoImage *
1894
1896
mono_image_open (const char * fname , MonoImageOpenStatus * status )
1895
1897
{
1896
- return mono_image_open_a_lot (mono_alc_get_default (), fname , status );
1898
+ MonoImageOpenOptions options = {0 , };
1899
+ return mono_image_open_a_lot (mono_alc_get_default (), fname , status , & options );
1897
1900
}
1898
1901
1899
1902
/**
@@ -1911,7 +1914,9 @@ mono_pe_file_open (const char *fname, MonoImageOpenStatus *status)
1911
1914
{
1912
1915
g_return_val_if_fail (fname != NULL , NULL );
1913
1916
1914
- return do_mono_image_open (mono_alc_get_default (), fname , status , FALSE, TRUE, FALSE);
1917
+ MonoImageOpenOptions options = {0 , };
1918
+ options .load_options .dont_care_about_cli = 1 ;
1919
+ return do_mono_image_open (mono_alc_get_default (), fname , status , & options );
1915
1920
}
1916
1921
1917
1922
/**
@@ -1926,7 +1931,10 @@ mono_image_open_raw (MonoAssemblyLoadContext *alc, const char *fname, MonoImageO
1926
1931
{
1927
1932
g_return_val_if_fail (fname != NULL , NULL );
1928
1933
1929
- return do_mono_image_open (alc , fname , status , FALSE, FALSE, FALSE);
1934
+ MonoImageOpenOptions options = {0 , };
1935
+ options .load_options .dont_care_about_cli = 1 ;
1936
+ options .load_options .dont_care_about_pecoff = 1 ;
1937
+ return do_mono_image_open (alc , fname , status , & options );
1930
1938
}
1931
1939
1932
1940
/*
@@ -1937,7 +1945,9 @@ mono_image_open_raw (MonoAssemblyLoadContext *alc, const char *fname, MonoImageO
1937
1945
MonoImage *
1938
1946
mono_image_open_metadata_only (MonoAssemblyLoadContext * alc , const char * fname , MonoImageOpenStatus * status )
1939
1947
{
1940
- return do_mono_image_open (alc , fname , status , TRUE, TRUE, TRUE);
1948
+ MonoImageOpenOptions options = {0 , };
1949
+ options .metadata_only = 1 ;
1950
+ return do_mono_image_open (alc , fname , status , & options );
1941
1951
}
1942
1952
1943
1953
/**
0 commit comments