提交 338dd021 编写于 作者: T Tomas Matousek

Disable Deterministic PDB GUID generation for RTM

上级 72a7129a
......@@ -46,7 +46,7 @@ private ImmutableArray<byte> EmitDeterministic(string source, Platform platform,
return compilation.EmitToArray();
}
[Fact, WorkItem(372, "https://github.com/dotnet/roslyn/issues/372")]
[Fact(Skip = "926"), WorkItem(372, "https://github.com/dotnet/roslyn/issues/372")]
public void Simple()
{
var source =
......@@ -94,7 +94,7 @@ public void CompareAllBytesEmitted_Release()
AssertEx.Equal(result3, result4);
}
[Fact, WorkItem(926)]
[Fact(Skip = "926"), WorkItem(926)]
public void CompareAllBytesEmitted_Debug()
{
var source =
......
......@@ -712,6 +712,7 @@
<HintPath>..\..\..\..\packages\System.Reflection.Metadata.$(SystemReflectionMetadataVersion)\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
</Reference>
</ItemGroup>
<!-- Support for deterministic PDB (workitem 926)
<ItemGroup>
<Content Include="..\..\..\..\packages\Microsoft.DiaSymReader.Native.1.0.0-rc2\lib\any~windows\x86\Microsoft.DiaSymReader.Native.x86.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
......@@ -720,6 +721,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
-->
<Import Project="..\AnalyzerDriver\AnalyzerDriver.projitems" Label="Shared" />
<Import Project="..\SharedCollections\SharedCollections.projitems" Label="Shared" />
<ImportGroup Label="Targets">
......
......@@ -144,6 +144,7 @@ internal interface ISymUnmanagedWriter5 : ISymUnmanagedWriter2
void MapTokenToSourceSpan(uint token, ISymUnmanagedDocumentWriter document, uint startLine, uint startColumn, uint endLine, uint endColumn);
}
#if DETERMINISTIC_PDB // workitem 926
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("CA6C2ED9-103D-46A9-B03B-05446485848B"), SuppressUnmanagedCodeSecurity]
internal interface ISymUnmanagedWriter6 : ISymUnmanagedWriter5
{
......@@ -154,7 +155,7 @@ internal interface ISymUnmanagedWriter6 : ISymUnmanagedWriter5
void InitializeDeterministic([MarshalAs(UnmanagedType.IUnknown)] object emitter, [MarshalAs(UnmanagedType.IUnknown)] object stream);
void SetSignature(uint sig, Guid sig70);
}
#endif
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct ImageDebugDirectory
{
......
......@@ -718,6 +718,7 @@ private void DefineScopeLocals(LocalScope currentScope, uint localSignatureToken
const string SymWriterClsid = "0AE2DEB0-F901-478b-BB9F-881EE8066788";
#if DETERMINISTIC_PDB // workitem 926
private static bool s_MicrosoftDiaSymReaderNativeLoadFailed;
[DllImport("Microsoft.DiaSymReader.Native.x86.dll", EntryPoint = "CreateSymWriter")]
......@@ -725,7 +726,7 @@ private void DefineScopeLocals(LocalScope currentScope, uint localSignatureToken
[DllImport("Microsoft.DiaSymReader.Native.amd64.dll", EntryPoint = "CreateSymWriter")]
private extern static void CreateSymWriter64(ref Guid id, [MarshalAs(UnmanagedType.IUnknown)]out object symWriter);
#endif
private static Type GetCorSymWriterSxSType()
{
if (s_lazyCorSymWriterSxSType == null)
......@@ -741,6 +742,7 @@ private static object CreateSymWriterWorker()
{
object symWriter = null;
#if DETERMINISTIC_PDB
// First try to load an implementation from Microsoft.DiaSymReader.Native, which supports determinism.
if (!s_MicrosoftDiaSymReaderNativeLoadFailed)
{
......@@ -762,7 +764,7 @@ private static object CreateSymWriterWorker()
symWriter = null;
}
}
#endif
if (symWriter == null)
{
// Try to find a registered CLR implementation
......@@ -784,6 +786,7 @@ public void SetMetadataEmitter(MetadataWriter metadataWriter)
if (_deterministic)
{
#if DETERMINISTIC_PDB
var deterministicSymWriter = symWriter as ISymUnmanagedWriter6;
if (deterministicSymWriter == null)
{
......@@ -791,6 +794,9 @@ public void SetMetadataEmitter(MetadataWriter metadataWriter)
}
deterministicSymWriter.InitializeDeterministic(new PdbMetadataWrapper(metadataWriter), _pdbStream);
#else
throw new NotSupportedException(CodeAnalysisResources.SymWriterNotDeterministic);
#endif
}
else
{
......@@ -808,6 +814,7 @@ public void SetMetadataEmitter(MetadataWriter metadataWriter)
public unsafe ContentId GetContentId()
{
#if DETERMINISTIC_PDB
if (_deterministic)
{
// Call to GetDebugInfo fails for SymWriter initialized using InitializeDeterministic.
......@@ -825,7 +832,7 @@ public unsafe ContentId GetContentId()
return id;
}
#endif
// See symwrite.cpp - the data byte[] doesn't depend on the content of metadata tables or IL.
// The writer only sets two values of the ImageDebugDirectory struct.
//
......@@ -1419,6 +1426,6 @@ public void WriteDefinitionLocations(MultiDictionary<DebugSourceDocument, Defini
}
}
#endregion
#endregion
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<!-- Support for deterministic PDB generation (workitem 926)
<package id="Microsoft.DiaSymReader.Native" version="1.0.0-rc2" />
-->
</packages>
......@@ -27,7 +27,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Emit
<Fact>
Public Sub CompareAllBytesEmitted_Release()
Dim source =
Dim source =
"Class Program
Shared Sub Main()
End Sub
......@@ -41,7 +41,7 @@ End Class"
AssertEx.Equal(result3, result4)
End Sub
<Fact, WorkItem(926)>
<Fact(Skip:="926"), WorkItem(926)>
Public Sub CompareAllBytesEmitted_Debug()
Dim source =
"Class Program
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册