diff --git a/mcs/class/corlib/System.Diagnostics/StackTrace.cs b/mcs/class/corlib/System.Diagnostics/StackTrace.cs index 3fbe759aa7567..6b164f318ac17 100644 --- a/mcs/class/corlib/System.Diagnostics/StackTrace.cs +++ b/mcs/class/corlib/System.Diagnostics/StackTrace.cs @@ -328,6 +328,26 @@ static void InitMetadataHandlers () string aotid = Assembly.GetAotId (); if (aotid != "00000000-0000-0000-0000-000000000000") AddMetadataHandler ("AOTID", st => { return aotid; }); + + AddMetadataHandler ("MVID", st => { + var mvidLines = new Dictionary> (); + var frames = st.GetFrames (); + for (var lineNumber = 0; lineNumber < frames.Length; lineNumber++) { + var mvid = frames[lineNumber].GetMethod ().Module.ModuleVersionId; + if (!mvidLines.ContainsKey (mvid)) + mvidLines.Add (mvid, new List ()); + + mvidLines[mvid].Add (lineNumber); + } + + var sb = new StringBuilder (); + foreach (var kv in mvidLines) { + var mvid = kv.Key.ToString ().ToUpper (); + sb.AppendLine (string.Format ("{0} {1}", mvid, string.Join (",", kv.Value))); + } + + return sb.ToString (); + }); } private static void AddMetadataHandler (string id, Func handler)