Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(165)

Unified Diff: src/common/pecoff/pecoff.h

Issue 1144002: Add dump_syms for DWARF symbols in a PECOFF image, as used by cygwin and mingw Base URL: http://google-breakpad.googlecode.com/svn/trunk/
Patch Set: Add dump_syms for DWARF symbols in a PECOFF image, as used by cygwin and mingw Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/common/pecoff/dump_symbols.h ('k') | src/common/pecoff/pecoff_file_id.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/common/pecoff/pecoff.h
===================================================================
--- src/common/pecoff/pecoff.h (revision 0)
+++ src/common/pecoff/pecoff.h (working copy)
@@ -0,0 +1,262 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// pecoff.h: PECOFF file format
+//
+
+#ifndef COMMON_PECOFF_PECOFF_H__
+#define COMMON_PECOFF_PECOFF_H__
+
+#include <stdint.h>
+
+#define IMAGE_FILE_HEADER_OFFSET 0x3c
+
+#define IMAGE_FILE_MAGIC 0x00004550 // "PE\0\0"
+
+#define IMAGE_FILE_MACHINE_UNKNOWN 0x0000
+#define IMAGE_FILE_MACHINE_ALPHA 0x0184
+#define IMAGE_FILE_MACHINE_ALPHA64 0x0284
+#define IMAGE_FILE_MACHINE_AM33 0x01d3
+#define IMAGE_FILE_MACHINE_AMD64 0x8664
+#define IMAGE_FILE_MACHINE_ARM 0x01c0
+#define IMAGE_FILE_MACHINE_ARMV7 0x01c4
+#define IMAGE_FILE_MACHINE_CEE 0xc0ee
+#define IMAGE_FILE_MACHINE_CEF 0x0cef
+#define IMAGE_FILE_MACHINE_EBC 0x0ebc
+#define IMAGE_FILE_MACHINE_I386 0x014c
+#define IMAGE_FILE_MACHINE_IA64 0x0200
+#define IMAGE_FILE_MACHINE_M32R 0x9041
+#define IMAGE_FILE_MACHINE_M68K 0x0268
+#define IMAGE_FILE_MACHINE_MIPS16 0x0266
+#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
+#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
+#define IMAGE_FILE_MACHINE_POWERPC 0x01f0
+#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
+#define IMAGE_FILE_MACHINE_R10000 0x0168
+#define IMAGE_FILE_MACHINE_R3000 0x0162
+#define IMAGE_FILE_MACHINE_R4000 0x0166
+#define IMAGE_FILE_MACHINE_SH3 0x01a2
+#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
+#define IMAGE_FILE_MACHINE_SH3E 0x01a4
+#define IMAGE_FILE_MACHINE_SH4 0x01a6
+#define IMAGE_FILE_MACHINE_SH5 0x01a8
+#define IMAGE_FILE_MACHINE_THUMB 0x01c2
+#define IMAGE_FILE_MACHINE_TRICORE 0x0520
+#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
+#define IMAGE_FILE_MACHINE_AMD64 0x8664
+
+struct PeHeader {
+ uint32_t mMagic; // IMAGE_FILE_MAGIC
+ uint16_t mMachine; // IMAGE_FILE_MACHINE_* values
+ uint16_t mNumberOfSections;
+ uint32_t mTimeDateStamp;
+ uint32_t mPointerToSymbolTable;
+ uint32_t mNumberOfSymbols;
+ uint16_t mSizeOfOptionalHeader;
+ uint16_t mCharacteristics;
+};
+
+enum PeMagic {
+ PE32 = 0x010b, // 32 bit
+ PE32PLUS = 0x020b, // 64 bit address space, 2GB image size limit
+};
+
+struct PeDataDirectory {
+ uint32_t mVirtualAddress;
+ uint32_t mSize;
+};
+
+struct Pe32OptionalHeader {
+ uint16_t mMagic; // PeMagic
+ uint8_t mMajorLinkerVersion;
+ uint8_t mMinorLinkerVersion;
+ uint32_t mSizeOfCode;
+ uint32_t mSizeOfInitializedData;
+ uint32_t mSizeOfUninitializedData;
+ uint32_t mAddressOfEntryPoint;
+ uint32_t mBaseOfCode;
+ uint32_t mBaseOfData;
+ uint32_t mImageBase;
+ uint32_t mSectionAlignment;
+ uint32_t mFileAlignment;
+ uint16_t mMajorOperatingSystemVersion;
+ uint16_t mMinorOperatingSystemVersion;
+ uint16_t mMajorImageVersion;
+ uint16_t mMinorImageVersion;
+ uint16_t mMajorSubsystemVersion;
+ uint16_t mMinorSubsystemVersion;
+ uint32_t mWin32VersionValue;
+ uint32_t mSizeOfImage;
+ uint32_t mSizeOfHeaders;
+ uint32_t mCheckSum;
+ uint16_t mSubsystem;
+ uint16_t mDllCharacteristics;
+ uint32_t mSizeOfStackReserve;
+ uint32_t mSizeOfStackCommit;
+ uint32_t mSizeOfHeapReserve;
+ uint32_t mSizeOfHeapCommit;
+ uint32_t mLoaderFlags;
+ uint32_t mNumberOfRvaAndSizes;
+ PeDataDirectory mDataDirectory[0];
+};
+
+struct Pe32PlusOptionalHeader {
+ uint16_t mMagic; // PeMagic
+ uint8_t mMajorLinkerVersion;
+ uint8_t mMinorLinkerVersion;
+ uint32_t mSizeOfCode;
+ uint32_t mSizeOfInitializedData;
+ uint32_t mSizeOfUninitializedData;
+ uint32_t mAddressOfEntryPoint;
+ uint32_t mBaseOfCode;
+ uint64_t mImageBase;
+ uint32_t mSectionAlignment;
+ uint32_t mFileAlignment;
+ uint16_t mMajorOperatingSystemVersion;
+ uint16_t mMinorOperatingSystemVersion;
+ uint16_t mMajorImageVersion;
+ uint16_t mMinorImageVersion;
+ uint16_t mMajorSubsystemVersion;
+ uint16_t mMinorSubsystemVersion;
+ uint32_t mWin32VersionValue;
+ uint32_t mSizeOfImage;
+ uint32_t mSizeOfHeaders;
+ uint32_t mCheckSum;
+ uint16_t mSubsystem;
+ uint16_t mDllCharacteristics;
+ uint64_t mSizeOfStackReserve;
+ uint64_t mSizeOfStackCommit;
+ uint64_t mSizeOfHeapReserve;
+ uint64_t mSizeOfHeapCommit;
+ uint32_t mLoaderFlags;
+ uint32_t mNumberOfRvaAndSizes;
+ PeDataDirectory mDataDirectory[0];
+};
+
+#define PE_EXPORT_TABLE 0
+#define PE_IMPORT_TABLE 1
+#define PE_RESOURCE_TABLE 2
+#define PE_EXCEPTION_TABLE 3
+#define PE_CERTIFICATE_TABLE 4
+#define PE_BASE_RELOCATION_TABLE 5
+#define PE_DEBUG_DATA 6
+#define PE_ARCHITECTURE 7
+#define PE_GLOBAL_PTR 8
+#define PE_TLS_TABLE 9
+#define PE_LOAD_CONFIG_TABLE 10
+#define PE_BOUND_IMPORT_TABLE 11
+#define PE_IMPORT_ADDRESS_TABLE 12
+#define PE_DELAY_IMPORT_DESCRIPTOR 13
+#define PE_CLR_RUNTIME_HEADER 14
+
+struct PeDebugDirectory {
+ uint32_t mCharacteristics;
+ uint32_t mTimeDateStamp;
+ uint16_t mMajorVersion;
+ uint16_t mMinorVersion;
+ uint32_t mType;
+ uint32_t mSizeOfData;
+ uint32_t mAddressOfRawData;
+ uint32_t mPointerToRawData;
+};
+
+#define IMAGE_DEBUG_TYPE_UNKNOWN 0
+#define IMAGE_DEBUG_TYPE_COFF 1
+#define IMAGE_DEBUG_TYPE_CODEVIEW 2
+#define IMAGE_DEBUG_TYPE_FPO 3
+#define IMAGE_DEBUG_TYPE_MISC 4
+#define IMAGE_DEBUG_TYPE_EXCEPTION 5
+#define IMAGE_DEBUG_TYPE_FIXUP 6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
+#define IMAGE_DEBUG_TYPE_BORLAND 9
+#define IMAGE_DEBUG_TYPE_RESERVED10 10
+#define IMAGE_DEBUG_TYPE_CLSID 11
+
+struct CvInfoPbd70
+{
+ uint32_t mCvSignature;
+ uint8_t mSignature[16];
+ uint32_t mAge;
+ uint8_t mPdbFileName[];
+};
+
+#define CODEVIEW_PDB70_CVSIGNATURE 0x53445352 // "RSDS"
+#define CODEVIEW_PDB20_CVSIGNATURE 0x3031424e // "NB10"
+#define CODEVIEW_CV50_CVSIGNATURE 0x3131424e // "NB11"
+#define CODEVIEW_CV41_CVSIGNATURE 0x3930424e // “NB09"
+
+struct PeSectionHeader {
+ char mName[8];
+ union {
+ uint32_t mPhysicalAddress;
+ uint32_t mVirtualSize;
+ } ;
+ uint32_t mVirtualAddress;
+ uint32_t mSizeOfRawData;
+ uint32_t mPointerToRawData;
+ uint32_t mPointerToRelocations;
+ uint32_t mPointerToLinenumbers;
+ uint16_t mNumberOfRelocations;
+ uint16_t mNumberOfLinenumbers;
+ uint32_t mCharacteristics;
+};
+
+struct __attribute__ ((__packed__)) PeSymbol
+{
+ union {
+ char mName[8]; // Symbol Name
+ struct {
+ uint32_t mFirst4Bytes;
+ uint32_t mSecond4Bytes;
+ };
+ };
+
+ uint32_t mValue; // Value of Symbol
+ uint16_t mScNum; // Section Number
+ uint16_t mType; // Symbol Type
+ uint8_t mSClass; // Storage Class
+ uint8_t mNumAux; // Auxiliary Count
+};
+
+struct PeExportTable {
+ uint32_t mFlags;
+ uint32_t mTimeDateStamp;
+ uint16_t mMajorVersion;
+ uint16_t mMinorVErsion;
+ uint32_t mNameRVA;
+ uint32_t mOrdinalBase;
+ uint32_t mAddressTableEntries;
+ uint32_t mNumberofNamePointers;
+ uint32_t mExportAddressTableRVA;
+ uint32_t mNamePointerRVA;
+ uint32_t mOrdinalTableRVA;
+};
+
+#endif// COMMON_PECOFF_PECOFF_H__
« no previous file with comments | « src/common/pecoff/dump_symbols.h ('k') | src/common/pecoff/pecoff_file_id.cc » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 1004:630ec63f810e-tainted