summaryrefslogtreecommitdiff
path: root/src/ilasm
diff options
context:
space:
mode:
authorMichael Letterle <mletterle@preemptive.com>2017-03-31 11:31:53 -0400
committerRuss Keldorph <russ.keldorph@microsoft.com>2017-04-26 12:30:48 -0700
commitbf579f8fdc6dbc77c3d989b9992590d55784028e (patch)
tree13987dde9b5e8172fb538221bc31acc9ff330fb8 /src/ilasm
parent077cf9cb03213c42eef2a9df99312697ca9faa52 (diff)
downloadcoreclr-bf579f8fdc6dbc77c3d989b9992590d55784028e.tar.gz
coreclr-bf579f8fdc6dbc77c3d989b9992590d55784028e.tar.bz2
coreclr-bf579f8fdc6dbc77c3d989b9992590d55784028e.zip
Lookup System.Runtime and mscorlib references by Assembly name
Rather than by alias. Fixes #10595
Diffstat (limited to 'src/ilasm')
-rw-r--r--src/ilasm/asmman.cpp11
-rw-r--r--src/ilasm/asmman.hpp2
-rw-r--r--src/ilasm/assembler.cpp16
3 files changed, 25 insertions, 4 deletions
diff --git a/src/ilasm/asmman.cpp b/src/ilasm/asmman.cpp
index 22e780f554..47dc6eb5c5 100644
--- a/src/ilasm/asmman.cpp
+++ b/src/ilasm/asmman.cpp
@@ -131,6 +131,17 @@ mdToken AsmMan::GetAsmRefTokByName(__in __nullterminated const char*
AsmManAssembly* tmp = GetAsmRefByName(szAsmRefName);
return(tmp ? tmp->tkTok : mdAssemblyRefNil);
}
+AsmManAssembly* AsmMan::GetAsmRefByAsmName(__in __nullterminated const char* szAsmName)
+{
+ AsmManAssembly* ret = NULL;
+ if(szAsmName)
+ {
+ for(int i=0; (ret = m_AsmRefLst.PEEK(i))&&
+ (strcmp(ret->szName,szAsmName)); i++);
+ }
+ return ret;
+}
+
//==============================================================================================================
void AsmMan::SetModuleName(__inout_opt __nullterminated char* szName)
{
diff --git a/src/ilasm/asmman.hpp b/src/ilasm/asmman.hpp
index 0ee875b805..00f4d52f13 100644
--- a/src/ilasm/asmman.hpp
+++ b/src/ilasm/asmman.hpp
@@ -272,6 +272,8 @@ public:
void SetManifestResFile(__in __nullterminated char* szFileName, ULONG ulOffset);
void SetManifestResAsmRef(__in __nullterminated char* szAsmRefName);
+ AsmManAssembly* GetAsmRefByAsmName(__in __nullterminated const char* szAsmName);
+
mdToken GetFileTokByName(__in __nullterminated char* szFileName);
mdToken GetAsmRefTokByName(__in __nullterminated const char* szAsmRefName);
mdToken GetAsmTokByName(__in __nullterminated const char* szAsmName)
diff --git a/src/ilasm/assembler.cpp b/src/ilasm/assembler.cpp
index 957b0bd22b..be535abce8 100644
--- a/src/ilasm/assembler.cpp
+++ b/src/ilasm/assembler.cpp
@@ -276,14 +276,22 @@ mdToken Assembler::GetAsmRef(__in __nullterminated const char* szName)
mdToken Assembler::GetBaseAsmRef()
{
- if (RidFromToken(m_pManifest->GetAsmRefTokByName("System.Runtime")) != 0)
+ AsmManAssembly* sysRuntime = m_pManifest->GetAsmRefByAsmName("System.Runtime");
+ if(sysRuntime != NULL)
{
- return GetAsmRef("System.Runtime");
+ return GetAsmRef(sysRuntime->szAlias ? sysRuntime->szAlias : sysRuntime->szName);
}
- if (RidFromToken(m_pManifest->GetAsmRefTokByName("netstandard")) != 0)
+ AsmManAssembly* mscorlibAsm = m_pManifest->GetAsmRefByAsmName("mscorlib");
+ if(mscorlibAsm != NULL)
{
- return GetAsmRef("netstandard");
+ return GetAsmRef(mscorlibAsm->szAlias ? mscorlibAsm->szAlias : mscorlibAsm->szName);
+ }
+
+ AsmManAssembly* netstandardAsm = m_pManifest->GetAsmRefByAsmName("netstandard");
+ if (netstandardAsm != NULL)
+ {
+ return GetAsmRef(netstandardAsm->szAlias ? netstandardAsm->szAlias : netstandardAsm->szName);
}
return GetAsmRef("mscorlib");