<div dir="ltr">Hello Eric!<div><br></div><div>I'm looking at it now, but I can't figure out how is the commit related to Linux build... I've added some new sources, but they are very similar (by dependencies) to already existing. I'll revert it, I think it needs more investigation, thanks!</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 22, 2018 at 6:21 PM Eric Fiselier <<a href="mailto:eric@efcs.ca">eric@efcs.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">Hi Aleksandr,<br><div><br></div><div>This commit broke the LLVM build with modules enabled on Linux. Could you please take a look?</div><div><br></div><div><a href="http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/19912/steps/compile.llvm.stage2/logs/stdio" target="_blank">http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/19912/steps/compile.llvm.stage2/logs/stdio</a><br></div><div><br></div><div>/Eric</div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 22, 2018 at 3:20 AM Aleksandr Urakov via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: aleksandr.urakov<br>
Date: Mon Oct 22 00:18:08 2018<br>
New Revision: 344886<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=344886&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=344886&view=rev</a><br>
Log:<br>
[PDB] Extend IPDBSession's interface to retrieve frame data<br>
<br>
Summary:<br>
This patch just extends the `IPDBSession` interface to allow retrieving<br>
of frame data through it, and adds an implementation over DIA. It is needed<br>
for an implementation (for now with DIA) of the conversion from FPO programs<br>
to DWARF expressions mentioned in D53086.<br>
<br>
Reviewers: zturner, asmith, rnk<br>
<br>
Reviewed By: asmith<br>
<br>
Subscribers: mgorny, aprantl, JDevlieghere, llvm-commits<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D53324" rel="noreferrer" target="_blank">https://reviews.llvm.org/D53324</a><br>
<br>
Added:<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/IPDBFrameData.h<br>
    llvm/trunk/lib/DebugInfo/PDB/DIA/DIAEnumFrameData.cpp<br>
    llvm/trunk/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp<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/include/llvm/DebugInfo/PDB/PDBTypes.h<br>
    llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt<br>
    llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp<br>
    llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp<br>
    llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp<br>
    llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp<br>
<br>
Added: llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h?rev=344886&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h?rev=344886&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h (added)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h Mon Oct 22 00:18:08 2018<br>
@@ -0,0 +1,40 @@<br>
+//==- DIAEnumFrameData.h --------------------------------------- -*- C++ -*-==//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLVM_DEBUGINFO_PDB_DIA_DIAENUMFRAMEDATA_H<br>
+#define LLVM_DEBUGINFO_PDB_DIA_DIAENUMFRAMEDATA_H<br>
+<br>
+#include "DIASupport.h"<br>
+#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"<br>
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"<br>
+<br>
+namespace llvm {<br>
+namespace pdb {<br>
+<br>
+class DIASession;<br>
+<br>
+class DIAEnumFrameData : public IPDBEnumChildren<IPDBFrameData> {<br>
+public:<br>
+  explicit DIAEnumFrameData(const DIASession &PDBSession,<br>
+                            CComPtr<IDiaEnumFrameData> DiaEnumerator);<br>
+<br>
+  uint32_t getChildCount() const override;<br>
+  ChildTypePtr getChildAtIndex(uint32_t Index) const override;<br>
+  ChildTypePtr getNext() override;<br>
+  void reset() override;<br>
+<br>
+private:<br>
+  const DIASession &Session;<br>
+  CComPtr<IDiaEnumFrameData> Enumerator;<br>
+};<br>
+<br>
+} // namespace pdb<br>
+} // namespace llvm<br>
+<br>
+#endif<br>
<br>
Added: llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h?rev=344886&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h?rev=344886&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h (added)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIAFrameData.h Mon Oct 22 00:18:08 2018<br>
@@ -0,0 +1,41 @@<br>
+//===- DIAFrameData.h - DIA Impl. of IPDBFrameData ---------------- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLVM_DEBUGINFO_PDB_DIA_DIAFRAMEDATA_H<br>
+#define LLVM_DEBUGINFO_PDB_DIA_DIAFRAMEDATA_H<br>
+<br>
+#include "DIASupport.h"<br>
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"<br>
+<br>
+namespace llvm {<br>
+namespace pdb {<br>
+<br>
+class DIASession;<br>
+<br>
+class DIAFrameData : public IPDBFrameData {<br>
+public:<br>
+  explicit DIAFrameData(const DIASession &PDBSession,<br>
+                        CComPtr<IDiaFrameData> DiaFrameData);<br>
+<br>
+  uint32_t getAddressOffset() const override;<br>
+  uint32_t getAddressSection() const override;<br>
+  uint32_t getLengthBlock() const override;<br>
+  std::string getProgram() const override;<br>
+  uint32_t getRelativeVirtualAddress() const override;<br>
+  uint64_t getVirtualAddress() const override;<br>
+<br>
+private:<br>
+  const DIASession &Session;<br>
+  CComPtr<IDiaFrameData> FrameData;<br>
+};<br>
+<br>
+} // namespace pdb<br>
+} // namespace llvm<br>
+<br>
+#endif<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/DIA/DIASession.h Mon Oct 22 00:18:08 2018<br>
@@ -85,6 +85,7 @@ public:<br>
<br>
   std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override;<br>
<br>
+  std::unique_ptr<IPDBEnumFrameData> getFrameData() const override;<br>
 private:<br>
   CComPtr<IDiaSession> Session;<br>
 };<br>
<br>
Added: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBFrameData.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBFrameData.h?rev=344886&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBFrameData.h?rev=344886&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBFrameData.h (added)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBFrameData.h Mon Oct 22 00:18:08 2018<br>
@@ -0,0 +1,36 @@<br>
+//===- IPDBFrameData.h - base interface for frame data ----------*- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLVM_DEBUGINFO_PDB_IPDBFRAMEDATA_H<br>
+#define LLVM_DEBUGINFO_PDB_IPDBFRAMEDATA_H<br>
+<br>
+#include <cstdint><br>
+#include <string><br>
+<br>
+namespace llvm {<br>
+namespace pdb {<br>
+<br>
+/// IPDBFrameData defines an interface used to represent a frame data of some<br>
+/// code block.<br>
+class IPDBFrameData {<br>
+public:<br>
+  virtual ~IPDBFrameData();<br>
+<br>
+  virtual uint32_t getAddressOffset() const = 0;<br>
+  virtual uint32_t getAddressSection() const = 0;<br>
+  virtual uint32_t getLengthBlock() const = 0;<br>
+  virtual std::string getProgram() const = 0;<br>
+  virtual uint32_t getRelativeVirtualAddress() const = 0;<br>
+  virtual uint64_t getVirtualAddress() const = 0;<br>
+};<br>
+<br>
+} // namespace pdb<br>
+} // namespace llvm<br>
+<br>
+#endif<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/IPDBSession.h Mon Oct 22 00:18:08 2018<br>
@@ -91,6 +91,9 @@ public:<br>
<br>
   virtual std::unique_ptr<IPDBEnumSectionContribs><br>
   getSectionContribs() const = 0;<br>
+<br>
+  virtual std::unique_ptr<IPDBEnumFrameData><br>
+  getFrameData() const = 0;<br>
 };<br>
 } // namespace pdb<br>
 } // namespace llvm<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Native/NativeSession.h Mon Oct 22 00:18:08 2018<br>
@@ -93,6 +93,8 @@ public:<br>
<br>
   std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override;<br>
<br>
+  std::unique_ptr<IPDBEnumFrameData> getFrameData() const override;<br>
+<br>
   PDBFile &getPDBFile() { return *Pdb; }<br>
   const PDBFile &getPDBFile() const { return *Pdb; }<br>
<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/PDBTypes.h Mon Oct 22 00:18:08 2018<br>
@@ -12,6 +12,7 @@<br>
<br>
 #include "llvm/DebugInfo/CodeView/CodeView.h"<br>
 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"<br>
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"<br>
 #include "llvm/DebugInfo/PDB/Native/RawTypes.h"<br>
 #include <cctype><br>
 #include <cstddef><br>
@@ -71,6 +72,7 @@ using IPDBEnumLineNumbers = IPDBEnumChil<br>
 using IPDBEnumTables = IPDBEnumChildren<IPDBTable>;<br>
 using IPDBEnumInjectedSources = IPDBEnumChildren<IPDBInjectedSource>;<br>
 using IPDBEnumSectionContribs = IPDBEnumChildren<IPDBSectionContrib>;<br>
+using IPDBEnumFrameData = IPDBEnumChildren<IPDBFrameData>;<br>
<br>
 /// Specifies which PDB reader implementation is to be used.  Only a value<br>
 /// of PDB_ReaderType::DIA is currently supported, but Native is in the works.<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/CMakeLists.txt Mon Oct 22 00:18:08 2018<br>
@@ -14,6 +14,7 @@ if(LLVM_ENABLE_DIA_SDK)<br>
   add_pdb_impl_folder(DIA<br>
     DIA/DIADataStream.cpp<br>
     DIA/DIAEnumDebugStreams.cpp<br>
+    DIA/DIAEnumFrameData.cpp<br>
     DIA/DIAEnumInjectedSources.cpp<br>
     DIA/DIAEnumLineNumbers.cpp<br>
     DIA/DIAEnumSectionContribs.cpp<br>
@@ -21,6 +22,7 @@ if(LLVM_ENABLE_DIA_SDK)<br>
     DIA/DIAEnumSymbols.cpp<br>
     DIA/DIAEnumTables.cpp<br>
     DIA/DIAError.cpp<br>
+    DIA/DIAFrameData.cpp<br>
     DIA/DIAInjectedSource.cpp<br>
     DIA/DIALineNumber.cpp<br>
     DIA/DIARawSymbol.cpp<br>
<br>
Added: llvm/trunk/lib/DebugInfo/PDB/DIA/DIAEnumFrameData.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIAEnumFrameData.cpp?rev=344886&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIAEnumFrameData.cpp?rev=344886&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/DIA/DIAEnumFrameData.cpp (added)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/DIA/DIAEnumFrameData.cpp Mon Oct 22 00:18:08 2018<br>
@@ -0,0 +1,43 @@<br>
+//==- DIAEnumFrameData.cpp ---------------------------------------*- C++ -*-==//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#include "llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h"<br>
+#include "llvm/DebugInfo/PDB/DIA/DIAFrameData.h"<br>
+#include "llvm/DebugInfo/PDB/DIA/DIASession.h"<br>
+<br>
+using namespace llvm::pdb;<br>
+<br>
+DIAEnumFrameData::DIAEnumFrameData(const DIASession &PDBSession,<br>
+                                   CComPtr<IDiaEnumFrameData> DiaEnumerator)<br>
+    : Session(PDBSession), Enumerator(DiaEnumerator) {}<br>
+<br>
+uint32_t DIAEnumFrameData::getChildCount() const {<br>
+  LONG Count = 0;<br>
+  return (S_OK == Enumerator->get_Count(&Count)) ? Count : 0;<br>
+}<br>
+<br>
+std::unique_ptr<IPDBFrameData><br>
+DIAEnumFrameData::getChildAtIndex(uint32_t Index) const {<br>
+  CComPtr<IDiaFrameData> Item;<br>
+  if (S_OK != Enumerator->Item(Index, &Item))<br>
+    return nullptr;<br>
+<br>
+  return std::unique_ptr<IPDBFrameData>(new DIAFrameData(Session, Item));<br>
+}<br>
+<br>
+std::unique_ptr<IPDBFrameData> DIAEnumFrameData::getNext() {<br>
+  CComPtr<IDiaFrameData> Item;<br>
+  ULONG NumFetched = 0;<br>
+  if (S_OK != Enumerator->Next(1, &Item, &NumFetched))<br>
+    return nullptr;<br>
+<br>
+  return std::unique_ptr<IPDBFrameData>(new DIAFrameData(Session, Item));<br>
+}<br>
+<br>
+void DIAEnumFrameData::reset() { Enumerator->Reset(); }<br>
<br>
Added: llvm/trunk/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp?rev=344886&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp?rev=344886&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp (added)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/DIA/DIAFrameData.cpp Mon Oct 22 00:18:08 2018<br>
@@ -0,0 +1,54 @@<br>
+//===- DIAFrameData.cpp - DIA impl. of IPDBFrameData -------------- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#include "llvm/DebugInfo/PDB/DIA/DIAFrameData.h"<br>
+#include "llvm/DebugInfo/PDB/DIA/DIASession.h"<br>
+#include "llvm/DebugInfo/PDB/DIA/DIAUtils.h"<br>
+<br>
+using namespace llvm::pdb;<br>
+<br>
+DIAFrameData::DIAFrameData(const DIASession &PDBSession,<br>
+                           CComPtr<IDiaFrameData> DiaFrameData)<br>
+    : Session(PDBSession), FrameData(DiaFrameData) {}<br>
+<br>
+template <typename ArgType><br>
+ArgType<br>
+PrivateGetDIAValue(IDiaFrameData *FrameData,<br>
+                   HRESULT (__stdcall IDiaFrameData::*Method)(ArgType *)) {<br>
+  ArgType Value;<br>
+  if (S_OK == (FrameData->*Method)(&Value))<br>
+    return static_cast<ArgType>(Value);<br>
+<br>
+  return ArgType();<br>
+}<br>
+<br>
+uint32_t DIAFrameData::getAddressOffset() const {<br>
+  return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_addressOffset);<br>
+}<br>
+<br>
+uint32_t DIAFrameData::getAddressSection() const {<br>
+  return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_addressSection);<br>
+}<br>
+<br>
+uint32_t DIAFrameData::getLengthBlock() const {<br>
+  return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_lengthBlock);<br>
+}<br>
+<br>
+std::string DIAFrameData::getProgram() const {<br>
+  return invokeBstrMethod(*FrameData, &IDiaFrameData::get_program);<br>
+}<br>
+<br>
+uint32_t DIAFrameData::getRelativeVirtualAddress() const {<br>
+  return PrivateGetDIAValue(FrameData,<br>
+                            &IDiaFrameData::get_relativeVirtualAddress);<br>
+}<br>
+<br>
+uint64_t DIAFrameData::getVirtualAddress() const {<br>
+  return PrivateGetDIAValue(FrameData, &IDiaFrameData::get_virtualAddress);<br>
+}<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/DIA/DIASession.cpp Mon Oct 22 00:18:08 2018<br>
@@ -9,6 +9,7 @@<br>
 #include "llvm/DebugInfo/PDB/DIA/DIASession.h"<br>
 #include "llvm/ADT/STLExtras.h"<br>
 #include "llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h"<br>
+#include "llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h"<br>
 #include "llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h"<br>
 #include "llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h"<br>
 #include "llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h"<br>
@@ -419,3 +420,13 @@ DIASession::getSectionContribs() const {<br>
<br>
   return llvm::make_unique<DIAEnumSectionContribs>(*this, Sections);<br>
 }<br>
+<br>
+std::unique_ptr<IPDBEnumFrameData><br>
+DIASession::getFrameData() const {<br>
+  CComPtr<IDiaEnumFrameData> FD =<br>
+      getTableEnumerator<IDiaEnumFrameData>(*Session);<br>
+  if (!FD)<br>
+    return nullptr;<br>
+<br>
+  return llvm::make_unique<DIAEnumFrameData>(*this, FD);<br>
+}<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/Native/NativeSession.cpp Mon Oct 22 00:18:08 2018<br>
@@ -200,6 +200,11 @@ NativeSession::getSectionContribs() cons<br>
   return nullptr;<br>
 }<br>
<br>
+std::unique_ptr<IPDBEnumFrameData><br>
+NativeSession::getFrameData() const {<br>
+  return nullptr;<br>
+}<br>
+<br>
 void NativeSession::initializeExeSymbol() {<br>
   if (ExeSymbol == 0)<br>
     ExeSymbol = Cache.createSymbol<NativeExeSymbol>();<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp Mon Oct 22 00:18:08 2018<br>
@@ -12,6 +12,7 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "llvm/DebugInfo/PDB/IPDBDataStream.h"<br>
+#include "llvm/DebugInfo/PDB/IPDBFrameData.h"<br>
 #include "llvm/DebugInfo/PDB/IPDBInjectedSource.h"<br>
 #include "llvm/DebugInfo/PDB/IPDBLineNumber.h"<br>
 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"<br>
@@ -35,3 +36,5 @@ IPDBTable::~IPDBTable() = default;<br>
 IPDBInjectedSource::~IPDBInjectedSource() = default;<br>
<br>
 IPDBSectionContrib::~IPDBSectionContrib() = default;<br>
+<br>
+IPDBFrameData::~IPDBFrameData() = default;<br>
<br>
Modified: llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp?rev=344886&r1=344885&r2=344886&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp?rev=344886&r1=344885&r2=344886&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp (original)<br>
+++ llvm/trunk/unittests/DebugInfo/PDB/PDBApiTest.cpp Mon Oct 22 00:18:08 2018<br>
@@ -159,6 +159,10 @@ class MockSession : public IPDBSession {<br>
   std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override {<br>
     return nullptr;<br>
   }<br>
+<br>
+  std::unique_ptr<IPDBEnumFrameData> getFrameData() const override {<br>
+    return nullptr;<br>
+  }<br>
 };<br>
<br>
 class MockRawSymbol : public IPDBRawSymbol {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Aleksandr Urakov</div><div><span>Software Developer</span></div><div><span>JetBrains</span></div><div><span><a href="http://www.jetbrains.com" target="_blank">http://www.jetbrains.com</a></span></div><div><span>The Drive to Develop</span></div></div></div>