diff --git a/Tests/Cosmos.TestRunner.Core/Cosmos.TestRunner.Core.csproj b/Tests/Cosmos.TestRunner.Core/Cosmos.TestRunner.Core.csproj
index 3d8b091db..de49b7c53 100644
--- a/Tests/Cosmos.TestRunner.Core/Cosmos.TestRunner.Core.csproj
+++ b/Tests/Cosmos.TestRunner.Core/Cosmos.TestRunner.Core.csproj
@@ -73,6 +73,10 @@
+
+ {1116130E-28E0-428A-A597-F4B3B676C0CA}
+ Cosmos.Assembler
+ {0462E82B-8C29-41A9-8265-9C89038ADB29}Cosmos.Build.Common
diff --git a/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs b/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs
index 967b30d3e..65d82b0f0 100644
--- a/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs
+++ b/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs
@@ -15,16 +15,16 @@ namespace Cosmos.TestRunner.Core
engine.AllowedSecondsInKernel = 120;
// If you want to test only specific platforms, add them to the list, like next line. By default, all platforms are ran.
- // engine.RunTargets.Add(RunTargetEnum.Bochs);
+ engine.RunTargets.Add(RunTargetEnum.Bochs);
// if you're working on the compiler (or other lower parts), you can choose to run the compiler in process
// 1 thing to keep in mind though, is that this only works with 1 kernel at a time!
engine.RunIL2CPUInProcess = false;
engine.AddKernel(typeof(Cosmos.Compiler.Tests.SimpleWriteLine.Kernel.Kernel).Assembly.Location);
- engine.AddKernel(typeof(SimpleStructsAndArraysTest.Kernel).Assembly.Location);
- engine.AddKernel(typeof(VGACompilerCrash.Kernel).Assembly.Location);
- engine.AddKernel(typeof(BoxingTests.Kernel).Assembly.Location);
+ //engine.AddKernel(typeof(SimpleStructsAndArraysTest.Kernel).Assembly.Location);
+ //engine.AddKernel(typeof(VGACompilerCrash.Kernel).Assembly.Location);
+ //engine.AddKernel(typeof(BoxingTests.Kernel).Assembly.Location);
// known bugs, therefor disabled for now:
// end of known bugs
diff --git a/Tests/Cosmos.TestRunner.Core/Engine.Helpers.cs b/Tests/Cosmos.TestRunner.Core/Engine.Helpers.cs
index 608ca627c..1e8e75c71 100644
--- a/Tests/Cosmos.TestRunner.Core/Engine.Helpers.cs
+++ b/Tests/Cosmos.TestRunner.Core/Engine.Helpers.cs
@@ -62,6 +62,8 @@ namespace Cosmos.TestRunner.Core
{
throw new Exception("Cannot run multiple kernels with in-process compilation!");
}
+ // ensure we're using the referenced (= solution) version
+ Assembler.Assembler.ReadDebugStubFromDisk = false;
var xResult = Program.Run(xArguments, OutputHandler.LogMessage, OutputHandler.LogError);
if (xResult != 0)
{
diff --git a/source/Cosmos.Assembler/.editorconfig b/source/Cosmos.Assembler/.editorconfig
new file mode 100644
index 000000000..7324c3aae
--- /dev/null
+++ b/source/Cosmos.Assembler/.editorconfig
@@ -0,0 +1,2 @@
+[Assembler.cs]
+indent_size=2
diff --git a/source/Cosmos.Assembler/Assembler.cs b/source/Cosmos.Assembler/Assembler.cs
index a0c69392e..e29f11f56 100644
--- a/source/Cosmos.Assembler/Assembler.cs
+++ b/source/Cosmos.Assembler/Assembler.cs
@@ -11,6 +11,7 @@ using System.Reflection;
using System.Runtime.InteropServices;
using System.Xml;
using Cosmos.Assembler.x86;
+using Cosmos.Debug.DebugStub;
namespace Cosmos.Assembler {
public class Assembler {
@@ -511,13 +512,54 @@ namespace Cosmos.Assembler {
if (mComPort > 0) {
var xGen = new XSharp.Compiler.AsmGenerator();
- foreach (var xFile in Directory.GetFiles(Cosmos.Build.Common.CosmosPaths.DebugStubSrc, "*.xs")) {
- var xAsm = xGen.Generate(xFile);
- foreach (var xData in xAsm.Data) {
- Cosmos.Assembler.Assembler.CurrentInstance.DataMembers.Add(new DataMember() { RawAsm = xData });
+
+ var xGenerateAssembler =
+ new Action