From: Swaroop Sridhar Date: Wed, 15 Mar 2017 17:40:25 +0000 (-0700) Subject: Add support for testing via ILLINK X-Git-Tag: submit/tizen/20210909.063632~11030^2~7725 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0a75623de343f383f132e17d9c7f6c4d766f43e8;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Add support for testing via ILLINK Add support for testing via ILLINK This commit has the following changes: 1) Setup the testing infrastructure to run the CoreCLR tests after linking through ILLinker `runtest.cmd /link ` 2) The linker is taken as an argument for runtest.cmd, typically the corebuild of https://github.com/mono/linker 3) Tests are run by linking the test binaries and all libraries except `System.Private.Corelib.dll` 4) For tests that use reflection, setup Reflection roots in source directories as `.reflect.xml` Commit migrated from https://github.com/dotnet/coreclr/commit/7f8ba1a8bd20ce2330b8d733f1e51959470fdd8f --- diff --git a/src/coreclr/tests/runtest.cmd b/src/coreclr/tests/runtest.cmd index 9d54289..89e2571 100644 --- a/src/coreclr/tests/runtest.cmd +++ b/src/coreclr/tests/runtest.cmd @@ -80,6 +80,8 @@ if /i "%1" == "jitdisasm" (set __JitDisasm=1&shift&goto Arg_Loop) if /i "%1" == "GenerateLayoutOnly" (set __GenerateLayoutOnly=1&shift&goto Arg_Loop) if /i "%1" == "PerfTests" (set __PerfTests=true&shift&goto Arg_Loop) if /i "%1" == "runcrossgentests" (set RunCrossGen=true&shift&goto Arg_Loop) +if /i "%1" == "link" (set DoLink=true&set ILLINK=%2&shift&shift&goto Arg_Loop) + REM change it to COMPlus_GCStress when we stop using xunit harness if /i "%1" == "gcstresslevel" (set __GCSTRESSLEVEL=%2&set __TestTimeout=1800000&shift&shift&goto Arg_Loop) @@ -399,6 +401,7 @@ echo TestEnv- Optional parameter - this will run a custom script to set custom t echo VSVersion- Optional parameter - VS2015 or VS2017 ^(default: VS2017^) echo AgainstPackages - Optional parameter - this indicates that we are running tests that were built against packages echo GenerateLayoutOnly - If specified will not run the tests and will only create the Runtime Dependency Layout +echo link "ILlink" - Runs the tests after linking via ILlink echo RunCrossgenTests - Runs ReadytoRun tests echo jitstress n - Runs the tests with COMPlus_JitStress=n echo jitstressregs n - Runs the tests with COMPlus_JitStressRegs=n diff --git a/src/coreclr/tests/src/CLRTest.Execute.Batch.targets b/src/coreclr/tests/src/CLRTest.Execute.Batch.targets index 5de78b4..fa6d458 100644 --- a/src/coreclr/tests/src/CLRTest.Execute.Batch.targets +++ b/src/coreclr/tests/src/CLRTest.Execute.Batch.targets @@ -33,17 +33,21 @@ WARNING: When setting properties based on their current state (for example: @@ -203,7 +207,72 @@ Exit /b 0 - + + $(MSBuildProjectName).reflect.xml + nul + + REM Use hints for reflection roots, if provided in $(ReflectionRootsXml) + IF EXIST $(ReflectionRootsXml) set ReflectionRoots=-x $(ReflectionRootsXml) + + REM Include all .exe files in this directory as entry points (some tests had multiple .exe file modules) + FOR /F "delims=" %%E IN ('dir /b *.exe *.dll') DO SET Assemblies=!Assemblies! -a %%~nE + + REM Run dotnet-linker + REM Run the Linker such that all assemblies except System.Private.Corlib.dll are linked + REM Debug symbol generation needs some fixes, and is currently omitted. + REM Once this is fixed, add -b true option. + ECHO %ILLINK% -out %LinkBin% -d %CORE_ROOT% -c link -l none -t !Assemblies! !ReflectionRoots! + %ILLINK% -out %LinkBin% -d %CORE_ROOT% -c link -l none -t !Assemblies! !ReflectionRoots! + IF NOT "!ERRORLEVEL!"=="0" ( + ECHO EXECUTION OF %DOTNETLINK% - FAILED !ERRORLEVEL! + IF EXIST %LinkBin% rmdir /s /q %LinkBin% + Exit /b 1 + ) + + REM Copy CORECLR native binaries to %LinkBin%, so that we can run the test based on that directory + copy %CORE_ROOT%\clrjit.dll %LinkBin% > nul 2> nul + copy %CORE_ROOT%\coreclr.dll %LinkBin% > nul 2> nul + copy %CORE_ROOT%\mscorrc.dll %LinkBin% > nul 2> nul + copy %CORE_ROOT%\CoreRun.exe %LinkBin% > nul 2> nul + + REM Copy some files that may be arguments + copy *.txt %LinkBin% > nul 2> nul + + set ExePath=%LinkBin%\$(InputAssemblyName) + set CORE_ROOT=%~dp0%LinkBin% +) +]]> + + + + + + <_CLRTestRunFile Condition="'$(CLRTestIsHosted)'=='true'">"%CORE_ROOT%\corerun.exe" - + - + Debug diff --git a/src/coreclr/tests/src/CoreMangLib/system/delegate/miscellaneous/ClosedStatic.reflect.xml b/src/coreclr/tests/src/CoreMangLib/system/delegate/miscellaneous/ClosedStatic.reflect.xml new file mode 100644 index 0000000..c7c5a30 --- /dev/null +++ b/src/coreclr/tests/src/CoreMangLib/system/delegate/miscellaneous/ClosedStatic.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.csproj b/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.csproj index 9890c83..c2a22b8 100644 --- a/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.csproj +++ b/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.csproj @@ -1,5 +1,5 @@  - + Debug diff --git a/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.reflect.xml b/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.reflect.xml new file mode 100644 index 0000000..2754139 --- /dev/null +++ b/src/coreclr/tests/src/GC/Scenarios/ReflectObj/reflectobj.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.ilproj b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.ilproj index fc143e2..78baf3b 100644 --- a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.ilproj +++ b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.ilproj @@ -1,5 +1,5 @@ - + Debug diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.reflect.xml b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.reflect.xml new file mode 100644 index 0000000..9b45130 --- /dev/null +++ b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_13748/ReflectOnField.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.ilproj b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.ilproj index a383c04..f3b5392 100644 --- a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.ilproj +++ b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.ilproj @@ -1,5 +1,5 @@ - + self_override1 diff --git a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.reflect.xml b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.reflect.xml new file mode 100644 index 0000000..4d01f1a --- /dev/null +++ b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override1.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.ilproj b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.ilproj index 32c420b..fbd9b90 100644 --- a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.ilproj +++ b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.ilproj @@ -1,5 +1,5 @@ - + self_override2 diff --git a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.reflect.xml b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.reflect.xml new file mode 100644 index 0000000..90d85f5 --- /dev/null +++ b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override2.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.ilproj b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.ilproj index c1b9eec..82a9be3 100644 --- a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.ilproj +++ b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.ilproj @@ -1,5 +1,5 @@ - + self_override3 diff --git a/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.reflect.xml b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.reflect.xml new file mode 100644 index 0000000..0836d93 --- /dev/null +++ b/src/coreclr/tests/src/Loader/classloader/MethodImpl/self_override3.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.csproj b/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.csproj index 64b24ce..be180bb 100644 --- a/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.csproj +++ b/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.csproj @@ -1,5 +1,5 @@ - + TestObjectGetTypeVirtual diff --git a/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.reflect.xml b/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.reflect.xml new file mode 100644 index 0000000..b052d52 --- /dev/null +++ b/src/coreclr/tests/src/Loader/classloader/regressions/14610/TestObjectGetTypeVirtual.reflect.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.csproj b/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.csproj index 893005c..8231c2a 100644 --- a/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.csproj +++ b/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.csproj @@ -1,5 +1,5 @@ - + dev11_95728 diff --git a/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.reflect.xml b/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.reflect.xml new file mode 100644 index 0000000..b74972a --- /dev/null +++ b/src/coreclr/tests/src/Loader/classloader/regressions/dev11_95728/dev11_95728.reflect.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/coreclr/tests/src/dir.targets b/src/coreclr/tests/src/dir.targets index 2cc051d..5c2b077 100644 --- a/src/coreclr/tests/src/dir.targets +++ b/src/coreclr/tests/src/dir.targets @@ -184,4 +184,9 @@ + + +