From 3354519f919a69fd7571e25067c3f92c1958e2c7 Mon Sep 17 00:00:00 2001 From: Charles Betros Date: Wed, 16 May 2018 08:07:29 -0500 Subject: [PATCH] Fix breakpoints for elf. --- .../Cosmos.Build.Tasks.csproj | 2 +- .../ExtractMapFromElfFile.cs | 36 +++++++++++++------ source/Cosmos.Build.Tasks/IL2CPU.cs | 15 ++++++++ source/Cosmos.Build.Tasks/Ld.cs | 16 +++++++++ source/Cosmos.Build.Tasks/Nasm.cs | 20 +++++++++++ .../ReadNasmMapToDebugInfo.cs | 8 +++++ .../build/Cosmos.Build.targets | 14 ++++---- .../tools/cygwin/win/objdump.bat | 7 ++++ 8 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 source/Cosmos.Build.Tasks/tools/cygwin/win/objdump.bat diff --git a/source/Cosmos.Build.Tasks/Cosmos.Build.Tasks.csproj b/source/Cosmos.Build.Tasks/Cosmos.Build.Tasks.csproj index 3009577b3..9057d2a69 100644 --- a/source/Cosmos.Build.Tasks/Cosmos.Build.Tasks.csproj +++ b/source/Cosmos.Build.Tasks/Cosmos.Build.Tasks.csproj @@ -2,7 +2,7 @@ net471 - win + win7-x86 Cosmos.Build Cosmos build system. $(CosmosDescription) diff --git a/source/Cosmos.Build.Tasks/ExtractMapFromElfFile.cs b/source/Cosmos.Build.Tasks/ExtractMapFromElfFile.cs index aaa2195aa..d656991f8 100644 --- a/source/Cosmos.Build.Tasks/ExtractMapFromElfFile.cs +++ b/source/Cosmos.Build.Tasks/ExtractMapFromElfFile.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.IO; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -18,7 +19,7 @@ namespace Cosmos.Build.Tasks [Required] public string DebugInfoFile { get; set; } - protected override string ToolName => "objdump.exe"; + protected override string ToolName => "objdump.bat"; protected override MessageImportance StandardErrorLoggingImportance => MessageImportance.High; protected override MessageImportance StandardOutputLoggingImportance => MessageImportance.High; @@ -52,25 +53,38 @@ namespace Cosmos.Build.Tasks { var xBuilder = new CommandLineBuilder(); - xBuilder.AppendSwitch("--wide"); - xBuilder.AppendSwitch("--syms"); + string xPathToTool = Path.GetDirectoryName(GenerateFullPathToTool()); + + xBuilder.AppendFileNameIfNotNull(xPathToTool); + + xBuilder.AppendFileNameIfNotNull(InputFile); - xBuilder.AppendSwitch(">"); xBuilder.AppendFileNameIfNotNull(MapFile); - + return xBuilder.ToString(); } public override bool Execute() { - if (!base.Execute()) + Log.LogMessage(MessageImportance.High, "Extracting Map file..."); + + var xSW = Stopwatch.StartNew(); + try { - return false; + if (!base.Execute()) + { + return false; + } + + ObjDump.ExtractMapSymbolsForElfFile(DebugInfoFile, MapFile); + + return true; + } + finally + { + xSW.Stop(); + Log.LogMessage(MessageImportance.High, "Extracting Map file took {0}", xSW.Elapsed); } - - ObjDump.ExtractMapSymbolsForElfFile(DebugInfoFile, MapFile); - - return true; } } } diff --git a/source/Cosmos.Build.Tasks/IL2CPU.cs b/source/Cosmos.Build.Tasks/IL2CPU.cs index ff7d5181c..19c22bd94 100644 --- a/source/Cosmos.Build.Tasks/IL2CPU.cs +++ b/source/Cosmos.Build.Tasks/IL2CPU.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using Microsoft.Build.Framework; @@ -91,5 +92,19 @@ namespace Cosmos.Build.Tasks } protected override string GetResponseFileSwitch(string responseFilePath) => $"ResponseFile:{responseFilePath}"; + + public override bool Execute() + { + var xSW = Stopwatch.StartNew(); + try + { + return base.Execute(); + } + finally + { + xSW.Stop(); + Log.LogMessage(MessageImportance.High, "IL2CPU task took {0}", xSW.Elapsed); + } + } } } diff --git a/source/Cosmos.Build.Tasks/Ld.cs b/source/Cosmos.Build.Tasks/Ld.cs index 6a5632bc3..5814fb592 100644 --- a/source/Cosmos.Build.Tasks/Ld.cs +++ b/source/Cosmos.Build.Tasks/Ld.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; @@ -141,5 +142,20 @@ namespace Cosmos.Build.Tasks return xBuilder.ToString(); } + + public override bool Execute() + { + var xSW = Stopwatch.StartNew(); + try + { + return base.Execute(); + } + finally + { + xSW.Stop(); + Log.LogMessage(MessageImportance.High, "LD task took {0}", xSW.Elapsed); + } + } + } } diff --git a/source/Cosmos.Build.Tasks/Nasm.cs b/source/Cosmos.Build.Tasks/Nasm.cs index 5421ee40e..a70f10a8a 100644 --- a/source/Cosmos.Build.Tasks/Nasm.cs +++ b/source/Cosmos.Build.Tasks/Nasm.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.IO; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -84,6 +85,10 @@ namespace Cosmos.Build.Tasks { xBuilder.AppendSwitch("-dELF_COMPILATION"); } + else + { + xBuilder.AppendSwitch("-dBIN_COMPILATION"); + } xBuilder.AppendSwitch("-O0"); @@ -91,5 +96,20 @@ namespace Cosmos.Build.Tasks return xBuilder.ToString(); } + + public override bool Execute() + { + var xSW = Stopwatch.StartNew(); + + try + { + return base.Execute(); + } + finally + { + xSW.Stop(); + Log.LogMessage(MessageImportance.High, "Nasm task took {0}", xSW.Elapsed); + } + } } } diff --git a/source/Cosmos.Build.Tasks/ReadNasmMapToDebugInfo.cs b/source/Cosmos.Build.Tasks/ReadNasmMapToDebugInfo.cs index a0ef23457..ed458cbce 100644 --- a/source/Cosmos.Build.Tasks/ReadNasmMapToDebugInfo.cs +++ b/source/Cosmos.Build.Tasks/ReadNasmMapToDebugInfo.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Globalization; using System.IO; using Microsoft.Build.Framework; @@ -19,6 +20,8 @@ namespace Cosmos.Build.Tasks public override bool Execute() { + var xSW = Stopwatch.StartNew(); + try { var xSourceInfos = ParseMapFile(MapFile); @@ -42,6 +45,11 @@ namespace Cosmos.Build.Tasks Log.LogErrorFromException(ex, true, true, null); return false; } + finally + { + xSW.Stop(); + Log.LogMessage(MessageImportance.High, "ReadNasmMapToDebugInfo task took {0}", xSW.Elapsed); + } } private static List