<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Fixed now. The updated test was missing from the patch.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Craig Topper <craig.topper@gmail.com><br>
<b>Date: </b>Tuesday, April 10, 2018 at 7:04 PM<br>
<b>To: </b>Aaron Smith <aaron.smith@microsoft.com><br>
<b>Cc: </b>llvm-commits <llvm-commits@lists.llvm.org><br>
<b>Subject: </b>Re: [llvm] r329724 - [DebugInfoPDB] Add DIA implementations of findSymbolByRVA and findSymbolByAddr<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a name="_MailOriginalBody">I think this broke the build of one of the unit tests.
<o:p></o:p></a></p>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">unittests/DebugInfo/PDB/PDBApiTest.cpp:398:23: error: allocating an object of abstract class type '(anonymous namespace)::MockSession'<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">                      ^<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">include/llvm/DebugInfo/PDB/IPDBSession.h:48:3: note: unimplemented pure virtual method 'findSymbolByRVA' in 'MockSession'<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">  findSymbolByRVA(uint32_t RVA, PDB_SymType Type) const = 0;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">  ^<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">include/llvm/DebugInfo/PDB/IPDBSession.h:50:3: note: unimplemented pure virtual method 'findSymbolBySectOffset' in 'MockSession'<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">  findSymbolBySectOffset(uint32_t Sect, uint32_t Offset,<o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody"><br clear="all">
<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">~Craig<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">On Tue, Apr 10, 2018 at 10:33 AM, Aaron Smith via llvm-commits <</span><a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="mso-bookmark:_MailOriginalBody">llvm-commits@lists.llvm.org</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody">>
 wrote:<o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody">Author: asmith<br>
Date: Tue Apr 10 10:33:18 2018<br>
New Revision: 329724<br>
<br>
URL: </span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%3Frev%3D329724%26view%3Drev&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584503259&sdata=nezSqjAScTRjFRwJkFq1xhKLEkKehUB1yuzy1UC9cls%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://llvm.org/viewvc/llvm-project?rev=329724&view=rev</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
Log:<br>
[DebugInfoPDB] Add DIA implementations of findSymbolByRVA and findSymbolByAddr<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h<br>
    llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp<br>
    llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h<br>
URL: </span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Finclude%2Fllvm%2FDebugInfo%2FPDB%2FDIA%2FDIASession.h%3Frev%3D329724%26r1%3D329723%26r2%3D329724%26view%3Ddiff&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584513263&sdata=40ayte3BdWPojuqyZ4%2FWeKXkRHsluOiHzMH3lKQ24UA%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h?rev=329724&r1=329723&r2=329724&view=diff</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h Tue Apr 10 10:33:18 2018<br>
@@ -41,6 +41,11 @@ public:<br>
<br>
   std::unique_ptr<PDBSymbol><br>
   findSymbolByAddress(uint64_t Address, PDB_SymType Type) const override;<br>
+  std::unique_ptr<PDBSymbol> findSymbolByRVA(uint32_t RVA,<br>
+                                             PDB_SymType Type) const override;<br>
+  std::unique_ptr<PDBSymbol><br>
+  findSymbolBySectOffset(uint32_t Section, uint32_t Offset,<br>
+                         PDB_SymType Type) const override;<br>
<br>
   std::unique_ptr<IPDBEnumLineNumbers><br>
   findLineNumbers(const PDBSymbolCompiland &Compiland,<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h<br>
URL: </span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Finclude%2Fllvm%2FDebugInfo%2FPDB%2FIPDBSession.h%3Frev%3D329724%26r1%3D329723%26r2%3D329724%26view%3Ddiff&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584513263&sdata=LQf0pJZVtKW6LMJ4i789RPdzxcxsDGND5bN%2FmsujIyI%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h?rev=329724&r1=329723&r2=329724&view=diff</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h Tue Apr 10 10:33:18 2018<br>
@@ -44,6 +44,11 @@ public:<br>
<br>
   virtual std::unique_ptr<PDBSymbol><br>
   findSymbolByAddress(uint64_t Address, PDB_SymType Type) const = 0;<br>
+  virtual std::unique_ptr<PDBSymbol><br>
+  findSymbolByRVA(uint32_t RVA, PDB_SymType Type) const = 0;<br>
+  virtual std::unique_ptr<PDBSymbol><br>
+  findSymbolBySectOffset(uint32_t Sect, uint32_t Offset,<br>
+                         PDB_SymType Type) const = 0;<br>
<br>
   virtual std::unique_ptr<IPDBEnumLineNumbers><br>
   findLineNumbers(const PDBSymbolCompiland &Compiland,<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h<br>
URL: </span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Finclude%2Fllvm%2FDebugInfo%2FPDB%2FNative%2FNativeSession.h%3Frev%3D329724%26r1%3D329723%26r2%3D329724%26view%3Ddiff&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584523280&sdata=bCCHbcxGBekJ8D15q742mAMHXR%2BI8RY3hYYHo1%2B%2FhXE%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h?rev=329724&r1=329723&r2=329724&view=diff</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h Tue Apr 10 10:33:18 2018<br>
@@ -60,6 +60,11 @@ public:<br>
<br>
   std::unique_ptr<PDBSymbol><br>
   findSymbolByAddress(uint64_t Address, PDB_SymType Type) const override;<br>
+  std::unique_ptr<PDBSymbol> findSymbolByRVA(uint32_t RVA,<br>
+                                             PDB_SymType Type) const override;<br>
+  std::unique_ptr<PDBSymbol><br>
+  findSymbolBySectOffset(uint32_t Sect, uint32_t Offset,<br>
+                         PDB_SymType Type) const override;<br>
<br>
   std::unique_ptr<IPDBEnumLineNumbers><br>
   findLineNumbers(const PDBSymbolCompiland &Compiland,<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp<br>
URL: </span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Flib%2FDebugInfo%2FPDB%2FDIA%2FDIASession.cpp%3Frev%3D329724%26r1%3D329723%26r2%3D329724%26view%3Ddiff&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584523280&sdata=bW%2F%2F6G9dBXKK2DpPrRgZTxjExV5GNOABHjjTxIbjVpo%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp?rev=329724&r1=329723&r2=329724&view=diff</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp Tue Apr 10 10:33:18 2018<br>
@@ -106,7 +106,7 @@ Error DIASession::createFromPdb(StringRe<br>
   if (!llvm::convertUTF8ToUTF16String(Path, Path16))<br>
     return make_error<GenericError>(generic_error_code::invalid_path);<br>
<br>
-  const wchar_t *Path16Str = reinterpret_cast<const wchar_t*>(Path16.data());<br>
+  const wchar_t *Path16Str = reinterpret_cast<const wchar_t *>(Path16.data());<br>
   HRESULT HR;<br>
   if (FAILED(HR = DiaDataSource->loadDataFromPdb(Path16Str))) {<br>
     return ErrorFromHResult(HR, "Calling loadDataFromPdb {0}", Path);<br>
@@ -214,6 +214,31 @@ DIASession::findSymbolByAddress(uint64_t<br>
   return PDBSymbol::create(*this, std::move(RawSymbol));<br>
 }<br>
<br>
+std::unique_ptr<PDBSymbol> DIASession::findSymbolByRVA(uint32_t RVA,<br>
+                                                       PDB_SymType Type) const {<br>
+  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);<br>
+<br>
+  CComPtr<IDiaSymbol> Symbol;<br>
+  if (S_OK != Session->findSymbolByRVA(RVA, EnumVal, &Symbol))<br>
+    return nullptr;<br>
+<br>
+  auto RawSymbol = llvm::make_unique<DIARawSymbol>(*this, Symbol);<br>
+  return PDBSymbol::create(*this, std::move(RawSymbol));<br>
+}<br>
+<br>
+std::unique_ptr<PDBSymbol><br>
+DIASession::findSymbolBySectOffset(uint32_t Sect, uint32_t Offset,<br>
+                                   PDB_SymType Type) const {<br>
+  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);<br>
+<br>
+  CComPtr<IDiaSymbol> Symbol;<br>
+  if (S_OK != Session->findSymbolByAddr(Sect, Offset, EnumVal, &Symbol))<br>
+    return nullptr;<br>
+<br>
+  auto RawSymbol = llvm::make_unique<DIARawSymbol>(*this, Symbol);<br>
+  return PDBSymbol::create(*this, std::move(RawSymbol));<br>
+}<br>
+<br>
 std::unique_ptr<IPDBEnumLineNumbers><br>
 DIASession::findLineNumbers(const PDBSymbolCompiland &Compiland,<br>
                             const IPDBSourceFile &File) const {<br>
@@ -222,9 +247,8 @@ DIASession::findLineNumbers(const PDBSym<br>
   const DIASourceFile &RawFile = static_cast<const DIASourceFile &>(File);<br>
<br>
   CComPtr<IDiaEnumLineNumbers> LineNumbers;<br>
-  if (S_OK !=<br>
-      Session->findLines(RawCompiland.getDiaSymbol(), RawFile.getDiaFile(),<br>
-                         &LineNumbers))<br>
+  if (S_OK != Session->findLines(RawCompiland.getDiaSymbol(),<br>
+                                 RawFile.getDiaFile(), &LineNumbers))<br>
     return nullptr;<br>
<br>
   return llvm::make_unique<DIAEnumLineNumbers>(LineNumbers);<br>
@@ -359,9 +383,7 @@ std::unique_ptr<IPDBEnumTables> DIASessi<br>
   return llvm::make_unique<DIAEnumTables>(DiaEnumerator);<br>
 }<br>
<br>
-template <class T><br>
-static CComPtr<T><br>
-getTableEnumerator(IDiaSession &Session) {<br>
+template <class T> static CComPtr<T> getTableEnumerator(IDiaSession &Session) {<br>
   CComPtr<T> Enumerator;<br>
   CComPtr<IDiaEnumTables> ET;<br>
   CComPtr<IDiaTable> Table;<br>
@@ -372,8 +394,7 @@ getTableEnumerator(IDiaSession &Session)<br>
<br>
   while (ET->Next(1, &Table, &Count) == S_OK && Count == 1) {<br>
     // There is only one table that matches the given iid<br>
-    if (S_OK ==<br>
-        Table->QueryInterface(__uuidof(T), (void **)&Enumerator))<br>
+    if (S_OK == Table->QueryInterface(__uuidof(T), (void **)&Enumerator))<br>
       break;<br>
     Table.Release();<br>
   }<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp<br>
URL: </span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Flib%2FDebugInfo%2FPDB%2FNative%2FNativeSession.cpp%3Frev%3D329724%26r1%3D329723%26r2%3D329724%26view%3Ddiff&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584533284&sdata=5vQthxMojqm2CX9Kz8D0LPQgunkyh3nFh8jX4qOgBEA%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp?rev=329724&r1=329723&r2=329724&view=diff</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp Tue Apr 10 10:33:18 2018<br>
@@ -200,6 +200,17 @@ NativeSession::findSymbolByAddress(uint6<br>
   return nullptr;<br>
 }<br>
<br>
+std::unique_ptr<PDBSymbol><br>
+NativeSession::findSymbolByRVA(uint32_t RVA, PDB_SymType Type) const {<br>
+  return nullptr;<br>
+}<br>
+<br>
+std::unique_ptr<PDBSymbol><br>
+NativeSession::findSymbolBySectOffset(uint32_t Sect, uint32_t Offset,<br>
+                                      PDB_SymType Type) const {<br>
+  return nullptr;<br>
+}<br>
+<br>
 std::unique_ptr<IPDBEnumLineNumbers><br>
 NativeSession::findLineNumbers(const PDBSymbolCompiland &Compiland,<br>
                                const IPDBSourceFile &File) const {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
</span><a href="mailto:llvm-commits@lists.llvm.org"><span style="mso-bookmark:_MailOriginalBody">llvm-commits@lists.llvm.org</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><br>
</span><a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-commits&data=02%7C01%7Caaron.smith%40microsoft.com%7C4e2e7c441180421c28b608d59f0d7943%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636589802584543288&sdata=xCJ32X5o4jW7Fr9F0Ggr8QyapStevobweR22F6Aumnc%3D&reserved=0" target="_blank"><span style="mso-bookmark:_MailOriginalBody">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</span><span style="mso-bookmark:_MailOriginalBody"></span></a><span style="mso-bookmark:_MailOriginalBody"><o:p></o:p></span></p>
</blockquote>
</div>
<p class="MsoNormal"><span style="mso-bookmark:_MailOriginalBody"><o:p> </o:p></span></p>
</div>
</div>
</body>
</html>