Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expand PerfMap format to support metadata for symbol indexation #53792

Merged
merged 3 commits into from
Jul 1, 2021

Conversation

trylek
Copy link
Member

@trylek trylek commented Jun 6, 2021

I have expanded the PerfMap format produced by Crossgen2 and
R2RDump to produce metadata in form of pseudo-symbol records with
high addresses. In this version I have implemented five metadata
entries - output GUID, target OS, target architecture, input
assembly names and input assembly MVIDs. I have verified for
System.Private.CoreLib and for the composite framework that
Crossgen2 and R2RDump produce identical metadata.

Thanks

Tomas

/cc @dotnet/crossgen-contrib

@trylek
Copy link
Member Author

trylek commented Jun 6, 2021

Example metadata for the composite framework:

FFFFFFFF 00 28abf608-79eb-36ba-0a52-ef7047051f3c
FFFFFFFE 00 Windows
FFFFFFFD 00 X64
FFFFFFFC 00 Dia2Lib
FFFFFFFB 00 0c6b30bb-2722-455d-b594-478ac4b81b14
FFFFFFFC 01 dotnet-Microsoft.XmlSerializer.Generator
FFFFFFFB 01 66818c72-2e5f-4313-889e-af0e2e10acf6
FFFFFFFC 02 FSharp.Core
FFFFFFFB 02 cdccf319-adec-8bdf-2295-52fabdb408cf
FFFFFFFC 03 ILCompiler.Reflection.ReadyToRun
FFFFFFFB 03 76cf152a-06b4-44a1-a177-37da4680d85b
FFFFFFFC 04 ILCompiler.TypeSystem.ReadyToRun
FFFFFFFB 04 fb8b2ad3-0aa9-44f1-9194-35ad135681e6
FFFFFFFC 05 Microsoft.Bcl.AsyncInterfaces
FFFFFFFB 05 1f4f96c4-fb28-460c-b35e-987b8eddbcdc
FFFFFFFC 06 Microsoft.CSharp
FFFFFFFB 06 623557e9-1da8-43bf-9c7c-ae2796fd43c8
FFFFFFFC 07 Microsoft.Diagnostics.FastSerialization
FFFFFFFB 07 6c04112e-341b-43e6-83ab-cad84b0282bb
FFFFFFFC 08 Microsoft.Diagnostics.NETCore.Client
FFFFFFFB 08 3bf77291-71aa-47f9-ba16-45bf631e2de8
FFFFFFFC 09 Microsoft.Diagnostics.Tools.RuntimeClient
FFFFFFFB 09 877dceee-e809-41a9-ac39-01958e0cfdc9
FFFFFFFC 0A Microsoft.Diagnostics.Tracing.TraceEvent
FFFFFFFB 0A 2efc0555-e00c-4438-bdb0-1f9f98c8b877
FFFFFFFC 0B Microsoft.Extensions.Caching.Abstractions
FFFFFFFB 0B 555e4830-7638-4c66-a4d0-e1518092ccd1
FFFFFFFC 0C Microsoft.Extensions.Caching.Memory
FFFFFFFB 0C 6259f37f-3653-43dc-b723-5640783c3cb1
FFFFFFFC 0D Microsoft.Extensions.Configuration
FFFFFFFB 0D 00f24262-8147-40f9-8596-2e05da1b9174
FFFFFFFC 0E Microsoft.Extensions.Configuration.Abstractions
FFFFFFFB 0E d9c1bcdc-61d6-464d-aaf2-a57074792eee
FFFFFFFC 0F Microsoft.Extensions.Configuration.Binder
FFFFFFFB 0F 82f98a45-a79b-4897-b4c1-60ff29dec843
FFFFFFFC 10 Microsoft.Extensions.Configuration.CommandLine
FFFFFFFB 10 b9bc609b-12c5-4f08-9c93-e2ed76a4e3d0
FFFFFFFC 11 Microsoft.Extensions.Configuration.EnvironmentVariables
FFFFFFFB 11 9f60a536-ef95-4c0c-8064-268968949d98
FFFFFFFC 12 Microsoft.Extensions.Configuration.FileExtensions
FFFFFFFB 12 526938e8-0679-436a-8983-2b8789a2aa3f
FFFFFFFC 13 Microsoft.Extensions.Configuration.Ini
FFFFFFFB 13 6822c16d-db4a-498f-bd95-926b7c05b5b2
FFFFFFFC 14 Microsoft.Extensions.Configuration.Json
FFFFFFFB 14 b58ebd2b-ce03-44c3-a8ec-5e7d43a3e7fd
FFFFFFFC 15 Microsoft.Extensions.Configuration.UserSecrets
FFFFFFFB 15 2b0fd1eb-e20f-4ec0-8bc0-96ca8cdf326f
FFFFFFFC 16 Microsoft.Extensions.Configuration.Xml
FFFFFFFB 16 ff33e47d-4216-465c-b060-f019bd01d3cd
FFFFFFFC 17 Microsoft.Extensions.DependencyInjection
FFFFFFFB 17 1be23199-72a5-4e7b-82e2-a046f2b2e270
FFFFFFFC 18 Microsoft.Extensions.DependencyInjection.Abstractions
FFFFFFFB 18 83dde1bb-82fa-4e3c-af6b-8cef5a0f2e9c
FFFFFFFC 19 Microsoft.Extensions.DependencyModel
FFFFFFFB 19 56db3d73-7368-4039-92fd-c6c489080639
FFFFFFFC 1A Microsoft.Extensions.FileProviders.Abstractions
FFFFFFFB 1A 2aa7ef5a-3538-425a-af93-9d251f7e60b2
FFFFFFFC 1B Microsoft.Extensions.FileProviders.Composite
FFFFFFFB 1B c0d1967f-cd7b-4907-b057-b00739e531db
FFFFFFFC 1C Microsoft.Extensions.FileProviders.Physical
FFFFFFFB 1C cc3ad194-84da-42a8-a070-91a037b8349f
FFFFFFFC 1D Microsoft.Extensions.FileSystemGlobbing
FFFFFFFB 1D 95606012-b36c-44a0-a31b-933550b4d9db
FFFFFFFC 1E Microsoft.Extensions.Hosting
FFFFFFFB 1E 3d90c03c-1aca-4d99-958c-0afc3245a60e
FFFFFFFC 1F Microsoft.Extensions.Hosting.Abstractions
FFFFFFFB 1F 0a1aae22-428d-4ecd-8d2c-86e3f72ded84
FFFFFFFC 20 Microsoft.Extensions.Hosting.Systemd
FFFFFFFB 20 abdfc827-1d64-4fc7-9b5b-765cc860ee03
FFFFFFFC 21 Microsoft.Extensions.Hosting.WindowsServices
FFFFFFFB 21 07f978cb-45f9-4094-813c-96c73ac616e3
FFFFFFFC 22 Microsoft.Extensions.Http
FFFFFFFB 22 79822ddc-ad01-464c-9419-bdb0d2dead68
FFFFFFFC 23 Microsoft.Extensions.Logging
FFFFFFFB 23 f6fff29b-8a17-4646-a21c-6a9c6187b0c1
FFFFFFFC 24 Microsoft.Extensions.Logging.Abstractions
FFFFFFFB 24 4c6c0d0b-a54d-4891-90f5-862e85382cf2
FFFFFFFC 25 Microsoft.Extensions.Logging.Configuration
FFFFFFFB 25 1e398ae2-f7b6-4079-b91b-82bdeac9d6da
FFFFFFFC 26 Microsoft.Extensions.Logging.Console
FFFFFFFB 26 52c8fddf-386a-49fb-a4bc-1af9861cce14
FFFFFFFC 27 Microsoft.Extensions.Logging.Debug
FFFFFFFB 27 404492c0-68d3-4c78-837f-6499befe5ec3
FFFFFFFC 28 Microsoft.Extensions.Logging.EventLog
FFFFFFFB 28 411bb2e6-07df-4100-9754-83bbd35eb925
FFFFFFFC 29 Microsoft.Extensions.Logging.EventSource
FFFFFFFB 29 e08c4994-b176-4301-b23a-fe1f5076e0fd
FFFFFFFC 2A Microsoft.Extensions.Logging.TraceSource
FFFFFFFB 2A 2eeac3f4-8d29-44c6-ab08-85d91f255951
FFFFFFFC 2B Microsoft.Extensions.Options
FFFFFFFB 2B 9d3ec11e-651b-4cfd-b3ca-d1bef4678e48
FFFFFFFC 2C Microsoft.Extensions.Options.ConfigurationExtensions
FFFFFFFB 2C fad0299c-e436-4e75-a6df-b691fbf35da8
FFFFFFFC 2D Microsoft.Extensions.Options.DataAnnotations
FFFFFFFB 2D bca0b4c0-a7cf-4585-8e21-cdd55041ca61
FFFFFFFC 2E Microsoft.Extensions.Primitives
FFFFFFFB 2E 25ac0c42-fae8-40c8-90f3-45337056130c
FFFFFFFC 2F Microsoft.VisualBasic
FFFFFFFB 2F f37a6804-e994-48dd-8490-363636f18574
FFFFFFFC 30 Microsoft.VisualBasic.Core
FFFFFFFB 30 3595a058-1289-447b-ac6a-7a9e20195abf
FFFFFFFC 31 Microsoft.Win32.Primitives
FFFFFFFB 31 8071f9c7-b1f6-47d6-bb7d-9dfb822dda66
FFFFFFFC 32 Microsoft.Win32.Registry
FFFFFFFB 32 ff885324-159d-42c5-92b5-dc470e53717e
FFFFFFFC 33 Microsoft.Win32.Registry.AccessControl
FFFFFFFB 33 68a9d9e3-a433-4088-813f-dbe060d0f417
FFFFFFFC 34 Microsoft.Win32.SystemEvents
FFFFFFFB 34 1ed8d520-6647-4d4f-a719-b2cf273c0f6e
FFFFFFFC 35 mscorlib
FFFFFFFB 35 2a9a387b-f2ce-4c79-ad21-c4202bf88b65
FFFFFFFC 36 netstandard
FFFFFFFB 36 31888bc9-8ee3-46fb-8ad2-eafb7f683b45
FFFFFFFC 37 Newtonsoft.Json
FFFFFFFB 37 c3b63374-76e9-443a-bbc4-d0f246af4e9e
FFFFFFFC 38 Newtonsoft.Json.Bson
FFFFFFFB 38 4c31d548-7f3e-4c21-bb3f-a39d930bf623
FFFFFFFC 39 OSExtensions
FFFFFFFB 39 295b9baa-4041-4dc1-b6b4-41030a91de1c
FFFFFFFC 3A runincontext
FFFFFFFB 3A ca942b51-0c46-48dc-b722-066c590b54a5
FFFFFFFC 3B System
FFFFFFFB 3B e98e8b96-7865-426f-84e9-06b3453bf352
FFFFFFFC 3C System.AppContext
FFFFFFFB 3C e7eade89-07b4-4b0b-963b-e02cf8187332
FFFFFFFC 3D System.Buffers
FFFFFFFB 3D b01ca54e-66c7-4ec1-9147-27333158ba06
FFFFFFFC 3E System.CodeDom
FFFFFFFB 3E 8f83e04b-3ba0-48f0-95c5-0246d3e4b1dc
FFFFFFFC 3F System.Collections
FFFFFFFB 3F 288ef6e3-828b-43c8-988a-b3f4fffab97f
FFFFFFFC 40 System.Collections.Concurrent
FFFFFFFB 40 f68ed222-2e98-4251-8988-79abc2e980f4
FFFFFFFC 41 System.Collections.Immutable
FFFFFFFB 41 8492c24d-f650-4173-b05d-f3af604a21fc
FFFFFFFC 42 System.Collections.NonGeneric
FFFFFFFB 42 dd48f88d-edd0-4a89-993c-7e68f062f5e8
FFFFFFFC 43 System.Collections.Specialized
FFFFFFFB 43 4489c767-61c2-4afa-85e1-9577d0d8278e
FFFFFFFC 44 System.ComponentModel
FFFFFFFB 44 a0ee9ad6-9a7b-49da-9abf-5bd5c32712e9
FFFFFFFC 45 System.ComponentModel.Annotations
FFFFFFFB 45 88f6e782-ead3-4571-82d0-dd1555672010
FFFFFFFC 46 System.ComponentModel.Composition
FFFFFFFB 46 1f061391-1ac4-40ca-9f0a-7572d38bb930
FFFFFFFC 47 System.ComponentModel.Composition.Registration
FFFFFFFB 47 ea67c589-bd30-40e4-bc6c-49ae302c2ea4
FFFFFFFC 48 System.ComponentModel.DataAnnotations
FFFFFFFB 48 7c593304-a6fc-4650-9937-f2ff56348a91
FFFFFFFC 49 System.ComponentModel.EventBasedAsync
FFFFFFFB 49 57ff3d78-4309-4133-bd48-7e186c5219f1
FFFFFFFC 4A System.ComponentModel.Primitives
FFFFFFFB 4A e72eadb0-128e-4656-b942-59b351a90fd5
FFFFFFFC 4B System.ComponentModel.TypeConverter
FFFFFFFB 4B 9f659f60-5f70-4c1e-8c34-91bc4bb424b3
FFFFFFFC 4C System.Composition.AttributedModel
FFFFFFFB 4C f6577ada-f926-4c56-aa50-f5f499c26e62
FFFFFFFC 4D System.Composition.Convention
FFFFFFFB 4D 303194f5-e697-456d-bb54-e65933129ac7
FFFFFFFC 4E System.Composition.Hosting
FFFFFFFB 4E 6dc235d2-0ddc-4781-95c3-6a4e7337e257
FFFFFFFC 4F System.Composition.Runtime
FFFFFFFB 4F 1ff24c75-1737-429c-bec0-682235a9e6d5
FFFFFFFC 50 System.Composition.TypedParts
FFFFFFFB 50 2397d591-7ce6-41a3-8bf1-2c1a966f652b
FFFFFFFC 51 System.Configuration
FFFFFFFB 51 a55776e8-52c1-484e-b20c-96c8c1c7e14e
FFFFFFFC 52 System.Configuration.ConfigurationManager
FFFFFFFB 52 ae1cce69-3474-4128-9788-2aaa5c910777
FFFFFFFC 53 System.Console
FFFFFFFB 53 e5d3f630-452b-405b-af7a-bb822b2b50eb
FFFFFFFC 54 System.Core
FFFFFFFB 54 9a7dadfc-1cbb-4957-896d-9e57d131a3bd
FFFFFFFC 55 System.Data
FFFFFFFB 55 ab1caa3c-598d-40a8-bba6-6089e161a313
FFFFFFFC 56 System.Data.Common
FFFFFFFB 56 39a38b77-d274-46db-8611-ca2ef0cf3b71
FFFFFFFC 57 System.Data.DataSetExtensions
FFFFFFFB 57 a1be3135-11b7-42e6-8489-06b8ec841169
FFFFFFFC 58 System.Data.Odbc
FFFFFFFB 58 d57b4c31-59e8-49c9-9cba-62cb8aefea2e
FFFFFFFC 59 System.Data.OleDb
FFFFFFFB 59 72e8490f-d9a1-4264-a02f-900e421b8421
FFFFFFFC 5A System.Diagnostics.Contracts
FFFFFFFB 5A 95adca50-13f0-454c-a0d2-9ddee263a672
FFFFFFFC 5B System.Diagnostics.Debug
FFFFFFFB 5B 61cb8dff-7bbd-4277-a105-201a74155521
FFFFFFFC 5C System.Diagnostics.DiagnosticSource
FFFFFFFB 5C 975c3ad0-013a-4c86-8d91-6d1b2ac36735
FFFFFFFC 5D System.Diagnostics.EventLog
FFFFFFFB 5D 206bcb8c-2635-47ad-8c63-75cd1981793e
FFFFFFFC 5E System.Diagnostics.EventLog.Messages
FFFFFFFB 5E 14dca2ef-5389-40fd-8759-19c6a4e9fcfb
FFFFFFFC 5F System.Diagnostics.FileVersionInfo
FFFFFFFB 5F 0e985897-ac43-44a8-88e1-72dc0e9145f3
FFFFFFFC 60 System.Diagnostics.PerformanceCounter
FFFFFFFB 60 c0b47e70-4819-42d3-929a-0523c82cb5a6
FFFFFFFC 61 System.Diagnostics.Process
FFFFFFFB 61 d8d506d6-95f4-4665-a4e9-101c1a265a49
FFFFFFFC 62 System.Diagnostics.StackTrace
FFFFFFFB 62 9c6c876c-b2f8-406b-99fd-dac6b33a0a70
FFFFFFFC 63 System.Diagnostics.TextWriterTraceListener
FFFFFFFB 63 9be8a3e5-712c-4f17-9809-038cb5b33e80
FFFFFFFC 64 System.Diagnostics.Tools
FFFFFFFB 64 98c505a4-dc08-4182-b653-be291052e1f1
FFFFFFFC 65 System.Diagnostics.TraceSource
FFFFFFFB 65 63f8c7f2-8e54-4e59-aee6-50f7c8d2b4aa
FFFFFFFC 66 System.Diagnostics.Tracing
FFFFFFFB 66 022292b8-7613-451d-ad2e-11e104fc39df
FFFFFFFC 67 System.DirectoryServices
FFFFFFFB 67 94d4bd92-cec8-4358-a1ef-8373b019cae2
FFFFFFFC 68 System.DirectoryServices.AccountManagement
FFFFFFFB 68 5eb1d79c-d5c1-459a-8714-8de2183becf8
FFFFFFFC 69 System.DirectoryServices.Protocols
FFFFFFFB 69 7089c28a-bb15-430d-bb1b-3b84e7a54e14
FFFFFFFC 6A System.Drawing
FFFFFFFB 6A 75c94d77-f54f-4891-afc4-4f2b8b473a2e
FFFFFFFC 6B System.Drawing.Common
FFFFFFFB 6B 4ff413d4-c9bf-489c-8795-2cf1c0d7b901
FFFFFFFC 6C System.Drawing.Primitives
FFFFFFFB 6C c12a6628-42fc-420c-9f8c-724196113c21
FFFFFFFC 6D System.Dynamic.Runtime
FFFFFFFB 6D 4f6aea33-4b8b-411d-a5b6-0020c051b350
FFFFFFFC 6E System.Formats.Asn1
FFFFFFFB 6E 3c78077d-75d6-476d-a244-8505c3b4dd62
FFFFFFFC 6F System.Formats.Cbor
FFFFFFFB 6F 2be768d5-1d24-4371-917f-425f6b21dd5b
FFFFFFFC 70 System.Globalization
FFFFFFFB 70 705fc2d6-d9dc-427c-9bbe-7e7cbea4c1d0
FFFFFFFC 71 System.Globalization.Calendars
FFFFFFFB 71 ab25880a-5dad-45c0-99c6-12adf0aaaff5
FFFFFFFC 72 System.Globalization.Extensions
FFFFFFFB 72 fa5b2625-caa8-40bf-b8a1-7790cd15ad75
FFFFFFFC 73 System.IO
FFFFFFFB 73 56ebd940-73be-40eb-b836-26de8dffa613
FFFFFFFC 74 System.IO.Compression
FFFFFFFB 74 8e0142c9-9d4e-4d17-bc90-0bb2f0ca89ce
FFFFFFFC 75 System.IO.Compression.Brotli
FFFFFFFB 75 225024ad-7605-4250-aa66-380a1d10f4ec
FFFFFFFC 76 System.IO.Compression.FileSystem
FFFFFFFB 76 6303eb61-479e-48ff-bcd5-eebc3bdf334f
FFFFFFFC 77 System.IO.Compression.ZipFile
FFFFFFFB 77 b7a249b9-8031-453d-baff-eb36548384a2
FFFFFFFC 78 System.IO.FileSystem
FFFFFFFB 78 69c730e8-0fb7-4dd3-bd2c-24926142dcef
FFFFFFFC 79 System.IO.FileSystem.AccessControl
FFFFFFFB 79 605a642d-3a4d-4856-b1ca-54efce8601a8
FFFFFFFC 7A System.IO.FileSystem.DriveInfo
FFFFFFFB 7A fcdba522-7929-406d-a2fb-0aff7c787ed1
FFFFFFFC 7B System.IO.FileSystem.Primitives
FFFFFFFB 7B b8b45a41-577d-4cfd-bba3-153ba51cdde8
FFFFFFFC 7C System.IO.FileSystem.Watcher
FFFFFFFB 7C 37592105-bdc2-4579-ba7a-3357cfc4808b
FFFFFFFC 7D System.IO.IsolatedStorage
FFFFFFFB 7D a173839e-e85e-4e9a-a948-c8da2f4eef8b
FFFFFFFC 7E System.IO.MemoryMappedFiles
FFFFFFFB 7E ed594d88-52ae-4744-87bf-79b4bfbc7be7
FFFFFFFC 7F System.IO.Packaging
FFFFFFFB 7F 5a781df5-e0a1-4b8f-97c1-850a2e380d81
FFFFFFFC 80 System.IO.Pipelines
FFFFFFFB 80 46f9d71b-ea49-4573-98c9-0d1b57a420cf
FFFFFFFC 81 System.IO.Pipes
FFFFFFFB 81 baae1098-43eb-4d3d-91b2-d29673115be5
FFFFFFFC 82 System.IO.Pipes.AccessControl
FFFFFFFB 82 355832d7-c242-4965-a148-e667025ee806
FFFFFFFC 83 System.IO.Ports
FFFFFFFB 83 77d6bc31-b9e6-4da5-b7d5-2975963bc942
FFFFFFFC 84 System.IO.UnmanagedMemoryStream
FFFFFFFB 84 f815e624-3391-43aa-b599-8ecc4d6a7b81
FFFFFFFC 85 System.Linq
FFFFFFFB 85 ac18d90b-8b57-40ad-8d68-745441d332c9
FFFFFFFC 86 System.Linq.Expressions
FFFFFFFB 86 94fdb0ee-080e-41af-917c-803ceffee9ab
FFFFFFFC 87 System.Linq.Parallel
FFFFFFFB 87 7e2a3f26-e8c6-4ed5-94d5-d9adbef67f3a
FFFFFFFC 88 System.Linq.Queryable
FFFFFFFB 88 7e1c94e1-9651-42be-ab4d-6a078d8c7339
FFFFFFFC 89 System.Management
FFFFFFFB 89 d23e20d3-33b3-47e3-a225-1dbb2cb25721
FFFFFFFC 8A System.Memory
FFFFFFFB 8A 78d38f81-6191-4951-be44-e0bae896fdc3
FFFFFFFC 8B System.Memory.Data
FFFFFFFB 8B 867cc901-afe3-46b4-a8b3-8c2d691a0f91
FFFFFFFC 8C System.Net
FFFFFFFB 8C 429cb17e-6c8a-4f77-8a8f-1d2adb3c9330
FFFFFFFC 8D System.Net.Connections
FFFFFFFB 8D 729349fd-d3a9-48ae-9f9e-7e7e5310354e
FFFFFFFC 8E System.Net.Http
FFFFFFFB 8E 1a31c211-6842-4136-96a3-6bbb0708a5f1
FFFFFFFC 8F System.Net.Http.Json
FFFFFFFB 8F 8a7a2b29-7705-44f2-b287-291739873f5b
FFFFFFFC 90 System.Net.Http.WinHttpHandler
FFFFFFFB 90 dd09e12a-141f-4448-aede-dc27d1966d48
FFFFFFFC 91 System.Net.HttpListener
FFFFFFFB 91 29778495-126b-4b99-b5f5-e3584a31bf07
FFFFFFFC 92 System.Net.Mail
FFFFFFFB 92 ecc5053b-cec1-4d34-aecb-b030fa6f1e9e
FFFFFFFC 93 System.Net.NameResolution
FFFFFFFB 93 94cbc7e8-f9f4-45d3-ba3d-1947526a4e9d
FFFFFFFC 94 System.Net.NetworkInformation
FFFFFFFB 94 ae87e715-4e31-4acb-881a-802bbe8db6e2
FFFFFFFC 95 System.Net.Ping
FFFFFFFB 95 031e86d6-3a3d-4968-9708-7ff96aba220b
FFFFFFFC 96 System.Net.Primitives
FFFFFFFB 96 7edd5476-672b-4fb9-b945-cd2511e829ef
FFFFFFFC 97 System.Net.Quic
FFFFFFFB 97 24c4d90d-afca-43e7-8a95-cea8f539253e
FFFFFFFC 98 System.Net.Requests
FFFFFFFB 98 9a639804-5a00-43da-8dd7-4e85b6dc03d7
FFFFFFFC 99 System.Net.Security
FFFFFFFB 99 88f3d113-2471-4157-b1dd-f8e7618e458c
FFFFFFFC 9A System.Net.ServicePoint
FFFFFFFB 9A 186ba071-6fc1-449c-93f5-36e0ebc9faf8
FFFFFFFC 9B System.Net.Sockets
FFFFFFFB 9B 4e97e855-7e95-461f-a35c-46b5b3b36a90
FFFFFFFC 9C System.Net.WebClient
FFFFFFFB 9C 67594ecd-5244-4d9c-8062-6049c40eb64a
FFFFFFFC 9D System.Net.WebHeaderCollection
FFFFFFFB 9D 09c8d3e7-e775-4350-8113-638e0cf8aa46
FFFFFFFC 9E System.Net.WebProxy
FFFFFFFB 9E 8d6d570c-c9c7-4740-8034-69426450957a
FFFFFFFC 9F System.Net.WebSockets
FFFFFFFB 9F a0e8b9be-e2f6-493c-a884-349095a0627d
FFFFFFFC A0 System.Net.WebSockets.Client
FFFFFFFB A0 5647d0d6-8e7f-4555-84c7-f9456a8ac56f
FFFFFFFC A1 System.Numerics
FFFFFFFB A1 fd0028a3-6e3d-4a3a-b393-9d5a11aad34b
FFFFFFFC A2 System.Numerics.Tensors
FFFFFFFB A2 ee55b90c-07ed-4a66-b13b-fb8be858d0d3
FFFFFFFC A3 System.Numerics.Vectors
FFFFFFFB A3 36b972af-a7fa-428d-bcf7-a33e4f5957a9
FFFFFFFC A4 System.ObjectModel
FFFFFFFB A4 13e2f0b0-3912-488f-8b80-db4312cca189
FFFFFFFC A5 System.Private.CoreLib
FFFFFFFB A5 7f0a315e-8c78-42e9-8b45-55b6c7120f8d
FFFFFFFC A6 System.Private.DataContractSerialization
FFFFFFFB A6 da1c3bef-4560-405f-995b-4fa66f3fd90d
FFFFFFFC A7 System.Private.Uri
FFFFFFFB A7 8151023a-d68f-4f4f-9753-bd3ff3b742ab
FFFFFFFC A8 System.Private.Xml
FFFFFFFB A8 252f99c2-58f9-440e-9b05-5d6e83da3397
FFFFFFFC A9 System.Private.Xml.Linq
FFFFFFFB A9 3596a01c-34a3-405f-9f77-84cd10dad6db
FFFFFFFC AA System.Reflection
FFFFFFFB AA 54f911d2-8c95-4b4c-b0ee-7f415bc959fe
FFFFFFFC AB System.Reflection.Context
FFFFFFFB AB f329172c-cb5c-4ab6-a6a1-01da9d7c79f7
FFFFFFFC AC System.Reflection.DispatchProxy
FFFFFFFB AC 1b43c93c-2ae0-41ca-a734-3f677299b8fd
FFFFFFFC AD System.Reflection.Emit
FFFFFFFB AD a46786f0-1883-462a-912b-b2133eb39501
FFFFFFFC AE System.Reflection.Emit.ILGeneration
FFFFFFFB AE 75771068-69ab-4a23-9e61-edd752d044ad
FFFFFFFC AF System.Reflection.Emit.Lightweight
FFFFFFFB AF 8a021070-970d-43be-ab65-7417c3e5e9ca
FFFFFFFC B0 System.Reflection.Extensions
FFFFFFFB B0 2b4a4247-3250-455c-92cb-c7a7c97a5c2f
FFFFFFFC B1 System.Reflection.Metadata
FFFFFFFB B1 79c81260-0a5e-4b4a-9d97-0b5a08491060
FFFFFFFC B2 System.Reflection.MetadataLoadContext
FFFFFFFB B2 f6e931e8-33c4-484a-aa48-f7c1cf45f97e
FFFFFFFC B3 System.Reflection.Primitives
FFFFFFFB B3 74342343-07ec-429e-82bd-26703c110eb5
FFFFFFFC B4 System.Reflection.TypeExtensions
FFFFFFFB B4 5bb7dc28-09ba-4175-87c6-1a97c4dc6ed1
FFFFFFFC B5 System.Resources.Extensions
FFFFFFFB B5 1312848d-8fdd-4c84-8134-b525b7398417
FFFFFFFC B6 System.Resources.Reader
FFFFFFFB B6 7abcbd58-35e6-4a2f-8710-9e7b56f2bf93
FFFFFFFC B7 System.Resources.ResourceManager
FFFFFFFB B7 df0683f6-706d-4225-b7ee-7d933d61cd22
FFFFFFFC B8 System.Resources.Writer
FFFFFFFB B8 073d2dce-2f5c-4189-8853-8f89c876ca62
FFFFFFFC B9 System.Runtime
FFFFFFFB B9 a811132c-a8eb-4177-9a49-6dcf2e38fa72
FFFFFFFC BA System.Runtime.Caching
FFFFFFFB BA 3864b03d-789c-474b-b151-7d2b78d27328
FFFFFFFC BB System.Runtime.CompilerServices.Unsafe
FFFFFFFB BB 234f9e08-8618-4819-b1f7-9b615efd43b4
FFFFFFFC BC System.Runtime.CompilerServices.VisualC
FFFFFFFB BC 09b48a11-2be1-49e0-b161-58df7e6cf091
FFFFFFFC BD System.Runtime.Extensions
FFFFFFFB BD c76c753b-e945-4770-9bfa-7270a844b1bf
FFFFFFFC BE System.Runtime.Handles
FFFFFFFB BE d9ccad6f-ee5d-4a95-be25-a0e474dfc99a
FFFFFFFC BF System.Runtime.InteropServices
FFFFFFFB BF 9a777c1d-1cfa-4aaf-8404-76ff13481179
FFFFFFFC C0 System.Runtime.InteropServices.RuntimeInformation
FFFFFFFB C0 0a9dc793-d9f4-49a2-aa19-5e09c4a4b593
FFFFFFFC C1 System.Runtime.Intrinsics
FFFFFFFB C1 01931eb8-d72d-405f-b109-cabaaee81bb5
FFFFFFFC C2 System.Runtime.Loader
FFFFFFFB C2 b57b2f41-cc62-4148-89c7-b99ce169fed6
FFFFFFFC C3 System.Runtime.Numerics
FFFFFFFB C3 188bf85f-9093-44ef-a3da-85de04a01902
FFFFFFFC C4 System.Runtime.Serialization
FFFFFFFB C4 ead5b067-f66e-466e-b0a6-f34925af9bfd
FFFFFFFC C5 System.Runtime.Serialization.Formatters
FFFFFFFB C5 490ac5a4-d7c8-4505-8c6e-bf81d4d36197
FFFFFFFC C6 System.Runtime.Serialization.Json
FFFFFFFB C6 b82799a0-09ec-4c7a-9c46-ad6a551d1314
FFFFFFFC C7 System.Runtime.Serialization.Primitives
FFFFFFFB C7 cda3dffd-2de6-4ce4-b8d9-1345d741bb78
FFFFFFFC C8 System.Runtime.Serialization.Xml
FFFFFFFB C8 6771bbec-1e56-4b44-b156-28d12e837c20
FFFFFFFC C9 System.Security
FFFFFFFB C9 19dbaa6c-4d7d-4924-81fd-23772e96e44e
FFFFFFFC CA System.Security.AccessControl
FFFFFFFB CA 72461ce4-454f-450c-a42f-3c8f9ca5d5d0
FFFFFFFC CB System.Security.Claims
FFFFFFFB CB 47c9d7cd-b6aa-4702-a225-6a4e6b840c9e
FFFFFFFC CC System.Security.Cryptography.Algorithms
FFFFFFFB CC 3d699d6b-5d8a-4892-87b4-0f7d63dc7da3
FFFFFFFC CD System.Security.Cryptography.Cng
FFFFFFFB CD ec9b3572-5628-4253-854f-815debbc4c36
FFFFFFFC CE System.Security.Cryptography.Csp
FFFFFFFB CE 829f40f4-d610-49f5-812d-06ef1b5a3b0f
FFFFFFFC CF System.Security.Cryptography.Encoding
FFFFFFFB CF 9efa11b8-ce95-4bc1-ae68-4c9ee6c0cdde
FFFFFFFC D0 System.Security.Cryptography.OpenSsl
FFFFFFFB D0 960d9023-77f1-4d4b-85b8-5a5e3fb94273
FFFFFFFC D1 System.Security.Cryptography.Pkcs
FFFFFFFB D1 8aec6eb7-7257-4282-9265-39485645e1f5
FFFFFFFC D2 System.Security.Cryptography.Primitives
FFFFFFFB D2 f3f51959-03f3-4cb0-8a67-ddda1fb3e890
FFFFFFFC D3 System.Security.Cryptography.ProtectedData
FFFFFFFB D3 7b5f8987-a272-4f52-a051-d2c02d6bf453
FFFFFFFC D4 System.Security.Cryptography.X509Certificates
FFFFFFFB D4 2f675c6a-052b-43ad-abd0-52ff14aaf785
FFFFFFFC D5 System.Security.Cryptography.Xml
FFFFFFFB D5 d98a8b9e-9442-483b-abc2-6dc2545b396c
FFFFFFFC D6 System.Security.Permissions
FFFFFFFB D6 fbb5f333-b4f3-4798-9c9b-f16fa9bdc5b4
FFFFFFFC D7 System.Security.Principal
FFFFFFFB D7 18311cd9-6a72-4459-b4e8-a77590da6a75
FFFFFFFC D8 System.Security.Principal.Windows
FFFFFFFB D8 7267abb5-35fc-404c-97b3-731cdd71b3ea
FFFFFFFC D9 System.Security.SecureString
FFFFFFFB D9 94e08146-f6ba-4a7b-8ca4-b074746fd7d3
FFFFFFFC DA System.ServiceModel.Syndication
FFFFFFFB DA c753f6dc-a92c-4d87-9c3d-8a66d0645e04
FFFFFFFC DB System.ServiceModel.Web
FFFFFFFB DB 6270c497-92ea-4dae-b806-20c856985438
FFFFFFFC DC System.ServiceProcess
FFFFFFFB DC bb7aafb9-bcc3-4293-8c89-29a3d36b664c
FFFFFFFC DD System.ServiceProcess.ServiceController
FFFFFFFB DD 1487d132-9265-4eee-92ed-40696e9491cb
FFFFFFFC DE System.Speech
FFFFFFFB DE c0d37897-17c4-444e-ac95-dacaf035ce5f
FFFFFFFC DF System.Text.Encoding
FFFFFFFB DF 0b51cf7a-7675-42f7-802f-067f66e3f76b
FFFFFFFC E0 System.Text.Encoding.CodePages
FFFFFFFB E0 40a2285b-880d-4f30-a4b0-4ccaf344cb3b
FFFFFFFC E1 System.Text.Encoding.Extensions
FFFFFFFB E1 43f87b4c-45d4-48fc-b2b2-2c204b0e4215
FFFFFFFC E2 System.Text.Encodings.Web
FFFFFFFB E2 79adf650-8fd2-4bcf-9baa-665054afad12
FFFFFFFC E3 System.Text.Json
FFFFFFFB E3 818bba67-7483-43bb-8373-cc067d07dafb
FFFFFFFC E4 System.Text.RegularExpressions
FFFFFFFB E4 d1d5ce47-35ff-4a77-acf5-ae3f8ae86632
FFFFFFFC E5 System.Threading
FFFFFFFB E5 d896037a-c8c7-434f-ac86-278e63f74320
FFFFFFFC E6 System.Threading.AccessControl
FFFFFFFB E6 1c3da4d6-5004-4912-b309-ca924ed2604d
FFFFFFFC E7 System.Threading.Channels
FFFFFFFB E7 d0c26d31-320c-497b-a68e-e97ffe7acbb6
FFFFFFFC E8 System.Threading.Overlapped
FFFFFFFB E8 ff5536c3-4d17-437f-b8be-f7d76e51e40a
FFFFFFFC E9 System.Threading.Tasks
FFFFFFFB E9 b6999a53-3cf2-4483-97e5-4f3c010ad660
FFFFFFFC EA System.Threading.Tasks.Dataflow
FFFFFFFB EA 795c128e-97bc-4999-a7dc-c490fccc6b76
FFFFFFFC EB System.Threading.Tasks.Extensions
FFFFFFFB EB 5492e2c6-fb13-418f-8454-48332947499e
FFFFFFFC EC System.Threading.Tasks.Parallel
FFFFFFFB EC b48b063f-f4b8-40a7-ae68-bc66cba26578
FFFFFFFC ED System.Threading.Thread
FFFFFFFB ED fb8c5239-c080-468d-8a3c-65d1b6657dea
FFFFFFFC EE System.Threading.ThreadPool
FFFFFFFB EE 8815b845-5d38-4fe9-b74a-74793838627a
FFFFFFFC EF System.Threading.Timer
FFFFFFFB EF 0eb6e7b8-c139-40a9-8f97-3e385d42d140
FFFFFFFC F0 System.Transactions
FFFFFFFB F0 4aeda08e-81e3-483a-8f0b-e83de746b7a9
FFFFFFFC F1 System.Transactions.Local
FFFFFFFB F1 8f9c6190-1f65-4ac0-963a-c113a2d8d588
FFFFFFFC F2 System.ValueTuple
FFFFFFFB F2 9e49247e-8b7f-431c-8998-f38323fce636
FFFFFFFC F3 System.Web
FFFFFFFB F3 d00d5b6e-8481-4d05-b046-609622fbb160
FFFFFFFC F4 System.Web.HttpUtility
FFFFFFFB F4 ca8aeafc-d88a-4e95-a503-4e02e26b574e
FFFFFFFC F5 System.Windows
FFFFFFFB F5 1e77a2f8-2641-4b2d-b66e-96aaa25639ea
FFFFFFFC F6 System.Windows.Extensions
FFFFFFFB F6 ce4171ed-557f-446f-bbc0-ae8d378b2408
FFFFFFFC F7 System.Xml
FFFFFFFB F7 fc6d67a6-5bf2-4952-a137-592c2228e98a
FFFFFFFC F8 System.Xml.Linq
FFFFFFFB F8 af64a95d-87cf-4e13-8d91-7fb7434860cf
FFFFFFFC F9 System.Xml.ReaderWriter
FFFFFFFB F9 8f155018-3d66-4010-9eeb-09ce54748f61
FFFFFFFC FA System.Xml.Serialization
FFFFFFFB FA dd22809d-3ae0-49aa-9945-72ec249e5d45
FFFFFFFC FB System.Xml.XDocument
FFFFFFFB FB 4a709068-323a-4d6b-a068-d139041a3162
FFFFFFFC FC System.Xml.XmlDocument
FFFFFFFB FC 913f2596-bbf0-4302-a5ca-699cecd3fb8f
FFFFFFFC FD System.Xml.XmlSerializer
FFFFFFFB FD 63c129bd-e8bc-4d05-8fe6-ca13a4fa7c4e
FFFFFFFC FE System.Xml.XPath
FFFFFFFB FE 46ba364b-3ce3-4b3e-b848-2b5162ab3404
FFFFFFFC FF System.Xml.XPath.XDocument
FFFFFFFB FF 085ddf2b-4eb8-4915-be8c-c40159c2428f
FFFFFFFC 100 TraceReloggerLib
FFFFFFFB 100 0252cd3d-c5cd-4c52-98ac-b9c4425ea4c9
FFFFFFFC 101 WindowsBase
FFFFFFFB 101 6547bf98-e00e-4035-8df9-a09354761da3

@trylek trylek requested a review from AntonLapounov June 6, 2021 21:45
@trylek
Copy link
Member Author

trylek commented Jun 6, 2021

Apparently the change is missing some dependencies. I'm seeing a couple of places constructing the perfmap path with the GUID inside in SDK, that will likely need fixing even though I'm not yet fully clear on whether it's sufficient to fix the failures hitting the current PR. Considering the latency in bumping up SDK versions in the runtime repo we should try to figure out what to do here ASAP.

@brianrob
Copy link
Member

brianrob commented Jun 7, 2021

@trylek, thanks for implementing this! To make sure I understand correctly:

FFFFFFFF 00 28abf608-79eb-36ba-0a52-ef7047051f3c
FFFFFFFE 00 Windows
FFFFFFFD 00 X64
FFFFFFFC 00 Dia2Lib
FFFFFFFB 00 0c6b30bb-2722-455d-b594-478ac4b81b14

The first GUID is a hash of all of the MVIDs. In order to ensure we have the right set of symbols, we need to compare records FFFFFFFF, FFFFFFFE, and FFFFFFFD to the input assembly, and all must match. The rest of the information is essentially diagnostic information that will allow us to work back to the set of input assemblies at crossgen time if needed.

Do I have that all right?

Also, as part of this change, can we also rename the output file to be <assemblyName>.r2rmap? This ensures that readers can differentiate between this type of file and a true perf-$pid.map.

@trylek
Copy link
Member Author

trylek commented Jun 14, 2021

@brianrob - yes, your understanding matches my assumptions. Please let me know if you need additional info and / or if you find the input assembly list or MVIDs superfluous. I also need to figure out how to harmonize this change with the SDK repo as the {MVID} paths are hard-coded in the various scripts and C# source code dealing with Crossgen / Crossgen2 compilation, I suspect we should temporarily honor both, after all the {MVID} variant will need to stay in the SDK for compilation targeting .NET Core 5 AFAIK.

@trylek
Copy link
Member Author

trylek commented Jun 30, 2021

I have spent some time thinking about the sequencing problem. I think that the safest sequence looks like this:

  1. The breaking aspect of this change changing the perfmap naming format is put under a command-line switch. We can for instance call it perfmap-format-version based on Juan's suggestion and set the default to 0 (implying the legacy naming including the {MVID} section), where 1 would override it to the new naming style. This will make this change mergeable without changes to other repos.

  2. SDK code dealing with R2R compilation that needs to know the naming style will be updated to expect the old-style naming unless when building for .NET 6 using a "new perfmap format" option (property). This should be a non-breaking (opt-in) change.

  3. Arcade code needs updating for the new style of perfmap files without the MVID and with the r2rmap extension.

  4. Once the SDK and Arcade code propagates to runtime, we can modify Crossgen2 to use perfmap-format-version=1 as the default and update the installer scripts to instruct SDK to behave accordingly.

Thanks

Tomas

P.S. For now I'm working on (1) that I hope to finish before going on vacation on Friday or during next week. Please let me know if you have any concerns with the overall plan and / or whether you see any opportunities for its simplification.

@brianrob
Copy link
Member

brianrob commented Jul 1, 2021

Sounds great. Thanks @trylek!

I have expanded the PerfMap format produced by Crossgen2 and
R2RDump to produce metadata in form of pseudo-symbol records with
high addresses. In this version I have implemented five metadata
entries - output GUID, target OS, target architecture, input
assembly names and input assembly MVIDs. I have verified for
System.Private.CoreLib and for the composite framework that
Crossgen2 and R2RDump produce identical metadata.

Thanks

Tomas
1) Remove the detailed input assembly / MVID list as superfluous
and potentially regressing average perfmap size. This information
can be extracted from the composite R2R executable if needed.

2) Rename perfmap extension to "ni.r2rmap" per Brian's PR feedback.

I haven't yet addressed the counterpart Arcade / SDK changes, I'll
look into them next.

Thanks

Tomas
Today, two PerfMap formats exist:

(0) Legacy format produced by Crossgen1 with {MVID} in the file name.
(1) New format produced by Crossgen2 / R2RDump without the {MVID}
and with r2rmap extension.

I haven't conditioned production of the new metadata, it gets
produced even for format version 0 (legacy). I believe this is more
useful for starting work on adapting perfmap consumers to use the
new metadata.

As next step I'll work on SDK and Arcade fixes for support of the
new PerfMap format. Once all these changes land in the runtime
repo, we can bump up the default format produced by Crossgen2 to 1.

Thanks

Tomas
@trylek
Copy link
Member Author

trylek commented Jul 1, 2021

I have modified the change based on my yesterday proposal. I expect the tests to start passing now, please review the change when you have a chance.

@trylek trylek merged commit e3dd985 into dotnet:main Jul 1, 2021
@trylek trylek deleted the PerfMapGuid branch July 1, 2021 23:18
thaystg added a commit to thaystg/runtime that referenced this pull request Jul 2, 2021
* origin/main: (27 commits)
  [mono][llvm] Only emit 'LLVM failed' messages on verbosity > 0. (dotnet#55060)
  Http2Stream throws a wrapped Http2ConnectionException on GO_AWAY (dotnet#54625)
  [main] Update dependencies from dnceng/internal/dotnet-optimization dotnet/arcade dotnet/xharness dotnet/hotreload-utils (dotnet#55007)
  disable a failing test. (dotnet#55063)
  [mono][wasm] Disable some tests which crash on AOT. (dotnet#55054)
  Fix fix_allocation_context for regions (dotnet#54931)
  Delete stale references to System.IO.FileSystem.Primitives (dotnet#55041)
  Add binplaced analyzers to ASP.NET transport package (dotnet#55042)
  [mono] Enable many HardwareIntrinsic tests on wasm
  Delete `compQuirkForPPP`. (dotnet#55050)
  [Mono] Condition Workload AOT import to be osx only (dotnet#55040)
  package native quic library (dotnet#54992)
  Make GlobalizationMode code consistent (dotnet#55039)
  Expand PerfMap format to support metadata for symbol indexation (dotnet#53792)
  [debugger]Componentize debugger (dotnet#54887)
  [Mono] Include loaded interpreter methods as EventPipe session rundown method events. (dotnet#54953)
  Delete stale ActiveIssue from HttpHeadersTest (dotnet#55027)
  Poison address-exposed user variables in debug (dotnet#54685)
  Recategorize emsdk dependency (dotnet#55028)
  Remove the the wasm AOT specific test project exclusions (dotnet#54988)
  ...
@ghost ghost locked as resolved and limited conversation to collaborators Aug 1, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants