summaryrefslogtreecommitdiff
path: root/src/vm/pefile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/pefile.h')
-rw-r--r--src/vm/pefile.h322
1 files changed, 1 insertions, 321 deletions
diff --git a/src/vm/pefile.h b/src/vm/pefile.h
index 413d08c185..b7c7bd3e7c 100644
--- a/src/vm/pefile.h
+++ b/src/vm/pefile.h
@@ -26,11 +26,6 @@
#include "loaderheap.h"
#include "sstring.h"
#include "ex.h"
-#ifdef FEATURE_FUSION
-#include <fusion.h>
-#include <fusionbind.h>
-#include "binderngen.h"
-#endif
#include "assemblyspecbase.h"
#include "eecontract.h"
#include "metadatatracker.h"
@@ -141,14 +136,6 @@ private:
public:
void LoadLibrary(BOOL allowNativeSkip = TRUE);
-#ifdef FEATURE_MIXEDMODE
-protected:
- // Returns TRUE if this file references managed CRT (msvcmNN*).
- BOOL ReferencesManagedCRT();
-
- // Checks for unsupported loads of C++/CLI assemblies into multiple runtimes in this process.
- void CheckForDisallowedInProcSxSLoad();
-#endif // FEATURE_MIXEDMODE
private:
void CheckForDisallowedInProcSxSLoadWorker();
@@ -194,9 +181,6 @@ public:
BOOL Equals(PEImage *pImage);
#endif // DACCESS_COMPILE
-#ifndef FEATURE_CORECLR
- BOOL IsShareable();
-#endif
void GetMVID(GUID *pMvid);
@@ -291,9 +275,6 @@ public:
LPCSTR GetLocale();
DWORD GetFlags();
HRESULT GetFlagsNoTrigger(DWORD * pdwFlags);
-#ifdef FEATURE_CAS_POLICY
- COR_TRUST *GetAuthenticodeSignature();
-#endif
// ------------------------------------------------------------
// PE file access
// ------------------------------------------------------------
@@ -347,9 +328,6 @@ public:
ULONG GetILImageTimeDateStamp();
-#ifdef FEATURE_CAS_POLICY
- SAFEHANDLE GetSafeHandle();
-#endif // FEATURE_CAS_POLICY
// ------------------------------------------------------------
// Image memory access
@@ -400,6 +378,7 @@ public:
PEImage *GetNativeImageWithRef();
PEImage *GetPersistentNativeImage();
#endif
+ BOOL HasNativeOrReadyToRunImage();
BOOL HasNativeImage();
PTR_PEImageLayout GetLoaded();
PTR_PEImageLayout GetLoadedNative();
@@ -520,10 +499,6 @@ protected:
void ConvertMDInternalToReadWrite();
void ReleaseMetadataInterfaces(BOOL bDestructor, BOOL bKeepNativeData=FALSE);
-#ifdef FEATURE_CAS_POLICY
- // Check the Authenticode signature of a PE file
- void CheckAuthenticodeSignature();
-#endif // FEATURE_CAS_POLICY
friend class Module;
#ifdef FEATURE_PREJIT
@@ -572,21 +547,11 @@ protected:
#endif
IMetaDataImport2 *m_pImporter;
IMetaDataEmit *m_pEmitter;
-#ifndef FEATURE_CORECLR
- IMetaDataAssemblyImport *m_pAssemblyImporter;
- IMetaDataAssemblyEmit *m_pAssemblyEmitter;
-#endif
SimpleRWLock *m_pMetadataLock;
Volatile<LONG> m_refCount;
SBuffer *m_hash; // cached SHA1 hash value
int m_flags;
BOOL m_fStrongNameVerified;
-#ifdef FEATURE_CAS_POLICY
- COR_TRUST *m_certificate;
- BOOL m_fCheckedCertificate;
- IInternetSecurityManager *m_pSecurityManager;
- Crst m_securityManagerLock;
-#endif // FEATURE_CAS_POLICY
#ifdef DEBUGGING_SUPPORTED
#ifdef FEATURE_PREJIT
@@ -659,7 +624,6 @@ public:
protected:
PTR_ICLRPrivAssembly m_pHostAssembly;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// For certain assemblies, we do not have m_pHostAssembly since they are not bound using an actual binder.
// An example is Ref-Emitted assemblies. Thus, when such assemblies trigger load of their dependencies,
// we need to ensure they are loaded in appropriate load context.
@@ -668,13 +632,10 @@ protected:
// assembly that created the dynamic assembly. If the creator assembly is dynamic itself, then its fallback
// load context would be propagated to the assembly being dynamically generated.
ICLRPrivBinder *m_pFallbackLoadContextBinder;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
protected:
- friend class CLRPrivBinderFusion;
#ifndef DACCESS_COMPILE
- // CLRPrivBinderFusion calls this for Fusion-bound assemblies in AppX processes.
void SetHostAssembly(ICLRPrivAssembly * pHostAssembly)
{ LIMITED_METHOD_CONTRACT; m_pHostAssembly = clr::SafeAddRef(pHostAssembly); }
#endif //DACCESS_COMPILE
@@ -696,7 +657,6 @@ public:
bool CanUseWithBindingCache()
{ LIMITED_METHOD_CONTRACT; return !HasHostAssembly(); }
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
void SetFallbackLoadContextBinder(ICLRPrivBinder *pFallbackLoadContextBinder)
{
LIMITED_METHOD_CONTRACT;
@@ -709,7 +669,6 @@ public:
return m_pFallbackLoadContextBinder;
}
-#endif //defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
}; // class PEFile
@@ -728,19 +687,6 @@ class PEAssembly : public PEFile
// Public API
// ------------------------------------------------------------
-#if !defined(FEATURE_CORECLR)
- static PEAssembly * Open(
- PEAssembly * pParentAssembly,
- PEImage * pPEImageIL,
- PEImage * pPEImageNI,
- ICLRPrivAssembly * pHostAssembly,
- BOOL fIsIntrospectionOnly);
-
- static PEAssembly * Open(
- PEAssembly * pParentAssembly,
- PEImage * pPEImageIL,
- BOOL isIntrospectionOnly = FALSE);
-#else //!FEATURE_CORECLR
// CoreCLR's PrivBinder PEAssembly creation entrypoint
static PEAssembly * Open(
PEAssembly * pParent,
@@ -748,69 +694,17 @@ class PEAssembly : public PEFile
PEImage * pPEImageNI,
ICLRPrivAssembly * pHostAssembly,
BOOL fIsIntrospectionOnly = FALSE);
-#endif //!FEATURE_CORECLR
// This opens the canonical mscorlib.dll
-#ifdef FEATURE_FUSION
- static PEAssembly *OpenSystem(IApplicationContext *pAppCtx);
-#else
static PEAssembly *OpenSystem(IUnknown *pAppCtx);
-#endif
#ifdef DACCESS_COMPILE
virtual void EnumMemoryRegions(CLRDataEnumMemoryFlags flags);
#endif
-#ifdef FEATURE_FUSION
- static PEAssembly *Open(
- IAssembly *pIAssembly,
- IBindResult *pNativeFusionAssembly,
- IFusionBindLog *pFusionLog = NULL,
- BOOL isSystemAssembly = FALSE,
- BOOL isIntrospectionOnly = FALSE);
-
- static PEAssembly *Open(
- IHostAssembly *pIHostAssembly,
- BOOL isSystemAssembly = FALSE,
- BOOL isIntrospectionOnly = FALSE);
-
-#ifdef FEATURE_MIXEDMODE
- // Use for main exe loading
- // NOTE: This may also be used for "spontaneous" (IJW) dll loading where
- // we need to deliver DllMain callbacks, but we should eliminate this case
-
- static PEAssembly *OpenHMODULE(
- HMODULE hMod,
- IAssembly *pFusionAssembly,
- IBindResult *pNativeFusionAssembly,
- IFusionBindLog *pFusionLog = NULL,
- BOOL isIntrospectionOnly = FALSE);
-#endif // FEATURE_MIXEDMODE
-
- static PEAssembly *DoOpen(
- IAssembly *pIAssembly,
- IBindResult *pNativeFusionAssembly,
- IFusionBindLog *pFusionLog,
- BOOL isSystemAssembly,
- BOOL isIntrospectionOnly = FALSE);
-
- static PEAssembly *DoOpen(
- IHostAssembly *pIHostAssembly,
- BOOL isSystemAssembly,
- BOOL isIntrospectionOnly = FALSE);
-#ifdef FEATURE_MIXEDMODE
- static PEAssembly *DoOpenHMODULE(
- HMODULE hMod,
- IAssembly *pFusionAssembly,
- IBindResult *pNativeFusionAssembly,
- IFusionBindLog *pFusionLog,
- BOOL isIntrospectionOnly = FALSE);
-#endif // FEATURE_MIXEDMODE
-#else
static PEAssembly *Open(
CoreBindResult* pBindResult,
BOOL isSystem,
BOOL isIntrospectionOnly);
-#endif // FEATURE_FUSION
static PEAssembly *Create(
PEAssembly *pParentAssembly,
@@ -833,11 +727,7 @@ class PEAssembly : public PEFile
private:
// Private helpers for crufty exception handling reasons
-#ifdef FEATURE_FUSION
- static PEAssembly *DoOpenSystem(IApplicationContext *pAppCtx);
-#else
static PEAssembly *DoOpenSystem(IUnknown *pAppCtx);
-#endif
public:
@@ -846,50 +736,9 @@ class PEAssembly : public PEFile
// ------------------------------------------------------------
BOOL IsSourceGAC();
-#ifdef FEATURE_CORECLR
BOOL IsProfileAssembly();
-#endif // FEATURE_CORECLR
ULONG HashIdentity();
-#ifdef FEATURE_FUSION
-
- BOOL FusionLoggingEnabled()
- {
- LIMITED_METHOD_CONTRACT;
- return m_bFusionLogEnabled && (m_pFusionLog != NULL);
- };
- void DisableFusionLogging()
- {
- m_bFusionLogEnabled = FALSE;
- };
-
- IFusionBindLog *GetFusionBindLog()
- {
- LIMITED_METHOD_CONTRACT;
-#ifdef FEATURE_FUSION
- return (m_bFusionLogEnabled && (m_pFusionLog != NULL)) ? m_pFusionLog : NULL;
-#else
- return NULL;
-#endif
- }
-
-
- BOOL IsBindingCodeBase();
-
- BOOL IsSourceDownloadCache();
-
- LOADCTX_TYPE GetLoadContext();
- BOOL IsContextLoad();
-
- // Can we avoid exposing these?
- IAssembly *GetFusionAssembly();
- IHostAssembly *GetIHostAssembly();
- IAssemblyName *GetFusionAssemblyName();
- IAssemblyName *GetFusionAssemblyNameNoCreate();
- IAssemblyLocation* GetNativeAssemblyLocation();
- DWORD GetLocationFlags();
- PEKIND GetFusionProcessorArchitecture();
-#endif
#ifndef DACCESS_COMPILE
virtual void ReleaseIL();
@@ -947,49 +796,12 @@ class PEAssembly : public PEFile
#ifdef FEATURE_PREJIT
void ExternalVLog(DWORD facility, DWORD level, const WCHAR *fmt, va_list args) DAC_EMPTY();
void FlushExternalLog() DAC_EMPTY();
-#ifdef FEATURE_FUSION
- void ETWTraceLogMessage(DWORD dwETWLogCategory, PEAssembly *pAsm)
- {
- LIMITED_METHOD_CONTRACT
- if (FusionLoggingEnabled() &&
- (ETW_TRACING_CATEGORY_ENABLED(MICROSOFT_WINDOWS_DOTNETRUNTIME_PRIVATE_PROVIDER_Context, TRACE_LEVEL_INFORMATION, CLR_PRIVATEFUSION_KEYWORD)))
- {
- m_pFusionLog->ETWTraceLogMessage(dwETWLogCategory, (pAsm?pAsm->m_pFusionAssemblyName:NULL));
- }
- }
- ULONGLONG GetBindingID()
- {
- LIMITED_METHOD_CONTRACT;
- ULONGLONG ullBindingID = 0;
- if (FusionLoggingEnabled())
- m_pFusionLog->GetBindingID(&ullBindingID);
- return ullBindingID;
- }
-#endif
#endif
-#ifndef FEATURE_CORECLR
- BOOL IsReportedToUsageLog();
- void SetReportedToUsageLog();
-#endif // !FEATURE_CORECLR
protected:
#ifndef DACCESS_COMPILE
-#ifdef FEATURE_FUSION
- PEAssembly(
- PEImage *image,
- IMetaDataEmit *pEmit,
- IAssembly *pIAssembly,
- IBindResult *pNativeFusionAssembly,
- PEImage *pNIImage,
- IFusionBindLog *pFusionLog,
- IHostAssembly *pIHostAssembly,
- PEFile *creator,
- BOOL system,
- BOOL introspectionOnly = FALSE,
- ICLRPrivAssembly * pHostAssembly = NULL);
-#else
PEAssembly(
CoreBindResult* pBindResultInfo,
IMetaDataEmit *pEmit,
@@ -1000,7 +812,6 @@ class PEAssembly : public PEFile
PEImage * pPEImageNI = NULL,
ICLRPrivAssembly * pHostAssembly = NULL
);
-#endif
virtual ~PEAssembly();
#endif
@@ -1011,28 +822,11 @@ class PEAssembly : public PEFile
friend class DomainAssembly;
#ifdef FEATURE_PREJIT
-#ifdef FEATURE_FUSION
- void SetNativeImage(IBindResult *pNativeFusionAssembly);
-#else
void SetNativeImage(PEImage *image);
-#endif
BOOL CheckNativeImageVersion(PEImage *image);
-#ifdef FEATURE_FUSION
- void ClearNativeImage();
- void SetNativeImageClosure(IAssemblyBindingClosure *pClosure)
- {
- LIMITED_METHOD_CONTRACT;
- if (m_pNativeImageClosure!=NULL)
- m_pNativeImageClosure->Release();
- if (pClosure)
- pClosure->AddRef();
- m_pNativeImageClosure=pClosure;
- };
- BOOL HasEqualNativeClosure(DomainAssembly* pDomainAssembly);
-#endif //FEATURE_FUSION
#endif // FEATURE_PREJIT
@@ -1049,29 +843,13 @@ class PEAssembly : public PEFile
// ------------------------------------------------------------
PTR_PEFile m_creator;
-#ifdef FEATURE_FUSION
- IAssemblyName *m_pFusionAssemblyName;
- IAssembly *m_pFusionAssembly;
- IFusionBindLog *m_pFusionLog;
- BOOL m_bFusionLogEnabled;
- IHostAssembly *m_pIHostAssembly;
- IAssemblyLocation *m_pNativeAssemblyLocation;
- IAssemblyBindingClosure *m_pNativeImageClosure; //present only for shared
- LOADCTX_TYPE m_loadContext;
- DWORD m_dwLocationFlags;
-#else
BOOL m_bIsFromGAC;
BOOL m_bIsOnTpaList;
// Using a separate entry and not m_pHostAssembly because otherwise
// HasHostAssembly becomes true that trips various other code paths resulting in bad
// things
SString m_sTextualIdentity;
-#endif
-#ifdef FEATURE_CORECLR
int m_fProfileAssembly; // Tri-state cache
-#else
- BOOL m_fStrongNameBypassed;
-#endif
public:
PTR_PEFile GetCreator()
@@ -1090,98 +868,15 @@ class PEAssembly : public PEFile
inline bool CanUseWithBindingCache()
{
STATIC_CONTRACT_WRAPPER;
-#if !defined(FEATURE_APPX_BINDER)
return (HasBindableIdentity());
-#else
- return (PEFile::CanUseWithBindingCache() && HasBindableIdentity());
-#endif // FEATURE_CORECLR
}
};
-#ifdef FEATURE_MULTIMODULE_ASSEMBLIES
-
-class PEModule : public PEFile
-{
- VPTR_VTABLE_CLASS(PEModule, PEFile)
-
- public:
-
- // ------------------------------------------------------------
- // Public API
- // ------------------------------------------------------------
-
- static PEModule *Open(PEAssembly *assembly, mdFile token,
- const SString &fileName);
-
- static PEModule *OpenMemory(PEAssembly *assembly, mdFile kToken,
- const void *flat, COUNT_T size);
-
- static PEModule *Create(PEAssembly *assembly, mdFile kToken, IMetaDataEmit *pEmit);
-
-#ifdef DACCESS_COMPILE
- virtual void EnumMemoryRegions(CLRDataEnumMemoryFlags flags);
-#endif
-
- private:
- // Private helpers for crufty exception handling reasons
- static PEModule *DoOpen(PEAssembly *assembly, mdFile token,
- const SString &fileName);
-
- static PEModule *DoOpenMemory(PEAssembly *assembly, mdFile kToken,
- const void *flat, COUNT_T size);
- public:
-
- // ------------------------------------------------------------
- // Metadata access
- // ------------------------------------------------------------
-
- PEAssembly *GetAssembly();
- mdFile GetToken();
- BOOL IsResource();
- BOOL IsIStream();
- LPCUTF8 GetSimpleName();
-
- // ------------------------------------------------------------
- // Logging
- // ------------------------------------------------------------
-#ifdef FEATURE_PREJIT
- void ExternalVLog(DWORD facility, DWORD level, const WCHAR *fmt, va_list args) DAC_EMPTY();
- void FlushExternalLog() DAC_EMPTY();
-#endif
-private:
- // ------------------------------------------------------------
- // Loader access API
- // ------------------------------------------------------------
-
- friend class DomainModule;
-#ifdef FEATURE_PREJIT
- void SetNativeImage(const SString &fullPath);
-#endif // FEATURE_PREJIT
-
-private:
-
-#ifndef DACCESS_COMPILE
- PEModule(PEImage *image, PEAssembly *assembly, mdFile token, IMetaDataEmit *pEmit);
- virtual ~PEModule();
-#endif
-
- // ------------------------------------------------------------
- // Instance fields
- // ------------------------------------------------------------
-
- PTR_PEAssembly m_assembly;
- mdFile m_token;
- BOOL m_bIsResource;
-};
-#endif // FEATURE_MULTIMODULE_ASSEMBLIES
typedef ReleaseHolder<PEFile> PEFileHolder;
typedef ReleaseHolder<PEAssembly> PEAssemblyHolder;
-#ifdef FEATURE_MULTIMODULE_ASSEMBLIES
-typedef ReleaseHolder<PEModule> PEModuleHolder;
-#endif // FEATURE_MULTIMODULE_ASSEMBLIES
// A small shim around PEAssemblies/IBindResult that allow us to write Fusion/CLR-agnostic
@@ -1199,21 +894,6 @@ class LoggablePEAssembly : public LoggableAssembly
return m_peAssembly->GetPath();
}
-#ifdef FEATURE_FUSION
- virtual IAssemblyName* FusionAssemblyName()
- {
- STANDARD_VM_CONTRACT;
-
- return m_peAssembly->GetFusionAssemblyName();
- }
-
- virtual IFusionBindLog* FusionBindLog()
- {
- STANDARD_VM_CONTRACT;
-
- return m_peAssembly->GetFusionBindLog();
- }
-#endif // FEATURE_FUSION
LoggablePEAssembly(PEAssembly *peAssembly)
{