From 0596df31880ce480ca4c597df21002cba8dc22a1 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 2 Jul 2024 18:44:58 -0700 Subject: [PATCH] Fix syntax of exports file with no exported symbols on Linux Fixes #104325 --- .../Compiler/ExportsFileWriter.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExportsFileWriter.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExportsFileWriter.cs index 8dbc00caa7c463..80e094f5b3117b 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExportsFileWriter.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExportsFileWriter.cs @@ -13,11 +13,11 @@ namespace ILCompiler public class ExportsFileWriter { private readonly string _exportsFile; - private readonly IEnumerable _exportSymbols; + private readonly string[] _exportSymbols; private readonly List _methods; private readonly TypeSystemContext _context; - public ExportsFileWriter(TypeSystemContext context, string exportsFile, IEnumerable exportSymbols) + public ExportsFileWriter(TypeSystemContext context, string exportsFile, string[] exportSymbols) { _exportsFile = exportsFile; _exportSymbols = exportSymbols; @@ -51,11 +51,14 @@ public void EmitExportedMethods() else { streamWriter.WriteLine("V1.0 {"); - streamWriter.WriteLine(" global:"); - foreach (string symbol in _exportSymbols) - streamWriter.WriteLine($" {symbol};"); - foreach (var method in _methods) - streamWriter.WriteLine($" {method.GetUnmanagedCallersOnlyExportName()};"); + if (_exportSymbols.Length != 0 || _methods.Count != 0) + { + streamWriter.WriteLine(" global:"); + foreach (string symbol in _exportSymbols) + streamWriter.WriteLine($" {symbol};"); + foreach (var method in _methods) + streamWriter.WriteLine($" {method.GetUnmanagedCallersOnlyExportName()};"); + } streamWriter.WriteLine(" local: *;"); streamWriter.WriteLine("};"); }