Skip to content

Rountrip PDBs with missing constant signature #145

@tmat

Description

@tmat

Repro

Program.cs:

using System;

class Program
{
    static void Main(string[] args)
    {
       const float f = 1.0f;
       double x = f;
       Console.WriteLine(x);
    }
}
  1. csc Program.cs /debug:portable
  2. pdb2pdb a.exe
  3. pdb2pdb a.exe /pdb a.pdb2 /out a.pdb3
PDB0017: token 0x06000001: Invalid local constant data

The second step produces a PDB with NIL constant token signature since there is no StandAloneSig in a.exe that matches float signature.

The third step then calls ISymUnmanagedConstant.GetSignature on such constant and reports an error.
We could infer the constant signature from the value for primitive types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions