Skip to content

Commit 0abfb00

Browse files
authored
Merge pull request github#6660 from hvitved/csharp/dotnet-exec-tracing-windows
C#: Handle `dotnet exec csc.dll` compiler calls on Windows
2 parents 131d63c + af0b9ab commit 0abfb00

File tree

6 files changed

+39
-34
lines changed

6 files changed

+39
-34
lines changed

csharp/extractor/Semmle.Extraction.CSharp.Driver/Driver.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using System;
2+
using System.Text.RegularExpressions;
3+
using System.Collections.Generic;
4+
15
namespace Semmle.Extraction.CSharp
26
{
37
/// <summary>
@@ -9,6 +13,31 @@ public static int Main(string[] args)
913
{
1014
Extractor.SetInvariantCulture();
1115

16+
Console.WriteLine($"Semmle.Extraction.CSharp.Driver: called with {string.Join(", ", args)}");
17+
18+
if (args.Length > 0 && args[0] == "--dotnetexec")
19+
{
20+
var compilerRegEx = new Regex(@"csc\.exe|mcs\.exe|csc\.dll", RegexOptions.Compiled);
21+
var cil = args.Length > 1 && args[1] == "--cil";
22+
for (var i = cil ? 2 : 1; i < args.Length; i++)
23+
{
24+
if (compilerRegEx.IsMatch(args[i]))
25+
{
26+
var argsList = new List<string>();
27+
if (cil)
28+
argsList.Add("--cil");
29+
argsList.Add("--compiler");
30+
argsList.Add(args[i]);
31+
if (i + 1 < args.Length)
32+
argsList.AddRange(args[(i + 1)..]);
33+
return (int)Extractor.Run(argsList.ToArray());
34+
}
35+
}
36+
37+
Console.WriteLine($"Semmle.Extraction.CSharp.Driver: not a compiler invocation");
38+
return 0;
39+
}
40+
1241
return (int)Extractor.Run(args);
1342
}
1443
}

csharp/tools/linux64/compiler-tracing.spec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
prepend --cil
77
**/mono*:
88
**/dotnet:
9-
invoke ${config_dir}/extract-csharp.sh
9+
invoke ${config_dir}/Semmle.Extraction.CSharp.Driver
10+
prepend --dotnetexec
11+
prepend --cil
1012
**/msbuild:
1113
**/xbuild:
1214
replace yes

csharp/tools/linux64/extract-csharp.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

csharp/tools/osx64/compiler-tracing.spec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
prepend --cil
77
**/mono*:
88
**/dotnet:
9-
invoke ${config_dir}/extract-csharp.sh
9+
invoke ${config_dir}/Semmle.Extraction.CSharp.Driver
10+
prepend --dotnetexec
11+
prepend --cil
1012
**/msbuild:
1113
**/xbuild:
1214
replace yes

csharp/tools/osx64/extract-csharp.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

csharp/tools/win64/compiler-tracing.spec

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@
77
prepend --compiler
88
prepend "${compiler}"
99
prepend --cil
10+
**\dotnet.exe:
11+
invoke ${config_dir}\Semmle.Extraction.CSharp.Driver.exe
12+
prepend --dotnetexec
13+
prepend --cil

0 commit comments

Comments
 (0)