{"action":"created","issue":{"url":"https://api.github.com/repos/Microsoft/microsoft-pdb/issues/17","repository_url":"https://api.github.com/repos/Microsoft/microsoft-pdb","labels_url":"https://api.github.com/repos/Microsoft/microsoft-pdb/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/microsoft-pdb/issues/17/comments","events_url":"https://api.github.com/repos/Microsoft/microsoft-pdb/issues/17/events","html_url":"https://github.com/Microsoft/microsoft-pdb/issues/17","id":165926982,"number":17,"title":"Publish stuff for undecorating C++ symbols","user":{"login":"jonwil","id":4471249,"avatar_url":"https://avatars.githubusercontent.com/u/4471249?v=3","gravatar_id":"","url":"https://api.github.com/users/jonwil","html_url":"https://github.com/jonwil","followers_url":"https://api.github.com/users/jonwil/followers","following_url":"https://api.github.com/users/jonwil/following{/other_user}","gists_url":"https://api.github.com/users/jonwil/gists{/gist_id}","starred_url":"https://api.github.com/users/jonwil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonwil/subscriptions","organizations_url":"https://api.github.com/users/jonwil/orgs","repos_url":"https://api.github.com/users/jonwil/repos","events_url":"https://api.github.com/users/jonwil/events{/privacy}","received_events_url":"https://api.github.com/users/jonwil/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-07-16T12:18:46Z","updated_at":"2016-07-16T12:49:58Z","closed_at":null,"body":"I would like to see code (or docs) for undecorating C++ symbols made available.\r\n\r\nThe Visual C++ runtime library contains a function called unDName (or something like that, its referenced all over the CRT source code) but that function is undocumented and no official header for it is available (3rd party headers exist for it but they may not have the correct definitions). Also not everyone working with PDB files can link to the Visual C++ runtime library (even if undname was usable). The Visual Studio 2015 CRT source code includes an undname.cxx file but it is missing required header files (and cant be used anyway because of the license)\r\n\r\nThere is also a function UnDecorateSymbolName in dbghelp.dll but it doesn't support the full set of decorated names and not everyone working with pdb files is in a position to use dbghelp.dll or the UnDecorateSymbolName function.\r\n\r\nThere is a tool called undname.exe in the Windows SDK but that cant be redistributed and its a tool, not a library you can call so that isn't an option.\r\n\r\nThere are 3rd party implementations for undecorating symbols but those may not be complete or accurate.\r\n\r\nThere is also code claiming to be from Microsoft at this URL https://github.com/sundayliu/windbg/tree/master/langapi/undname but that doesn't have any license attached so we cant use it. Also we dont know how old that is or if it was even legitimately released by Microsoft (its quite possible this code came from one of the various source code thefts Microsoft has experienced in the past (e.g. Windows NT4 source or Windows 2000 source).\r\n\r\nI would like to see usable complete source code for undecorating names published (under the same MIT license as the PDB code ideally) or if that is not possible, complete official header files required for using the undname function in Visual C++ libraries.\r\n"},"comment":{"url":"https://api.github.com/repos/Microsoft/microsoft-pdb/issues/comments/233128886","html_url":"https://github.com/Microsoft/microsoft-pdb/issues/17#issuecomment-233128886","issue_url":"https://api.github.com/repos/Microsoft/microsoft-pdb/issues/17","id":233128886,"user":{"login":"jonwil","id":4471249,"avatar_url":"https://avatars.githubusercontent.com/u/4471249?v=3","gravatar_id":"","url":"https://api.github.com/users/jonwil","html_url":"https://github.com/jonwil","followers_url":"https://api.github.com/users/jonwil/followers","following_url":"https://api.github.com/users/jonwil/following{/other_user}","gists_url":"https://api.github.com/users/jonwil/gists{/gist_id}","starred_url":"https://api.github.com/users/jonwil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonwil/subscriptions","organizations_url":"https://api.github.com/users/jonwil/orgs","repos_url":"https://api.github.com/users/jonwil/repos","events_url":"https://api.github.com/users/jonwil/events{/privacy}","received_events_url":"https://api.github.com/users/jonwil/received_events","type":"User","site_admin":false},"created_at":"2016-07-16T12:49:58Z","updated_at":"2016-07-16T12:49:58Z","body":"I already mentioned \"3rd party implementations\" above. My point is that no-one can be sure if the WINE implementation is 100% complete/accurate (including all the weird corner cases) and 100% up to date with the latest compiler bits Microsoft is shipping. (don't get me wrong, the WINE guys do some good work but just because someone else has already reverse engineered this stuff doesn't mean its not worthwhile for Microsoft to at least see how fesable it is to publish the official implementation)\r\n\r\n"}}
{"actor":{"display_login":"jonwil"}}