diff options
Diffstat (limited to 'src/zap/zapheaders.h')
-rw-r--r-- | src/zap/zapheaders.h | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/zap/zapheaders.h b/src/zap/zapheaders.h index 12b0a18a3d..0755c0ed2d 100644 --- a/src/zap/zapheaders.h +++ b/src/zap/zapheaders.h @@ -234,23 +234,22 @@ public: class ZapDebugDirectory : public ZapNode { ZapNode * m_pNGenPdbDebugData; - IMAGE_DEBUG_DIRECTORY m_debugDirectory; - ZapNode * m_pDebugData; + DWORD m_nDebugDirectory; + IMAGE_DEBUG_DIRECTORY * m_pDebugDirectory; + ZapNode ** m_ppDebugData; public: - ZapDebugDirectory(ZapNode *pNGenPdbDebugData, PIMAGE_DEBUG_DIRECTORY pDebugDirectory, ZapNode * pDebugData) + ZapDebugDirectory(ZapNode *pNGenPdbDebugData, DWORD nDebugDirectory, PIMAGE_DEBUG_DIRECTORY pDebugDirectory, ZapNode ** ppDebugData) : m_pNGenPdbDebugData(pNGenPdbDebugData), - m_pDebugData(pDebugData) + m_nDebugDirectory(nDebugDirectory), + m_pDebugDirectory(pDebugDirectory), + m_ppDebugData(ppDebugData) { - if (pDebugDirectory == NULL) - memset(&m_debugDirectory, 0, sizeof(IMAGE_DEBUG_DIRECTORY)); - else - memcpy(&m_debugDirectory, pDebugDirectory, sizeof(IMAGE_DEBUG_DIRECTORY)); } virtual DWORD GetSize() { - return m_pDebugData ? sizeof(IMAGE_DEBUG_DIRECTORY) * 2 : sizeof(IMAGE_DEBUG_DIRECTORY); + return sizeof(IMAGE_DEBUG_DIRECTORY) * (m_nDebugDirectory + 1); } virtual UINT GetAlignment() @@ -269,6 +268,23 @@ public: }; // +// PE Style exports. Currently can only save an empty list of exports +// but this is useful because it avoids the DLL being seen as Resource Only +// (which then causes SymServer to avoid copying its PDB to the cloud). +// + +class ZapPEExports : public ZapNode +{ + LPCWSTR m_dllFileName; // Just he DLL name without the path. + +public: + ZapPEExports(LPCWSTR dllPath); + virtual DWORD GetSize(); + virtual UINT GetAlignment() { return sizeof(DWORD); } + virtual void Save(ZapWriter * pZapWriter); +}; + +// // List of all sections for diagnostic purposes class ZapVirtualSectionsTable : public ZapNode |