7101562b2eac4d84b026d6710d215a62c3c82ba3vboxsync/** @file
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * IPRT - Microsoft CodeView Debug Information.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/*
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Copyright (C) 2009-2013 Oracle Corporation
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync *
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * available from http://www.virtualbox.org. This file is free software;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * General Public License (GPL) as published by the Free Software
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync *
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * The contents of this file may alternatively be used under the terms
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * of the Common Development and Distribution License Version 1.0
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * VirtualBox OSE distribution, in which case the provisions of the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * CDDL are applicable instead of those of the GPL.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync *
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * You may elect to license modified versions of this file under the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * terms and conditions of either the GPL or the CDDL or both.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#ifndef ___iprt_formats_codeview_h
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#define ___iprt_formats_codeview_h
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#include <iprt/types.h>
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#include <iprt/assert.h>
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** @defgroup grp_rt_fmt_codeview Microsoft CodeView Debug Information
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * @{
7e4c97927a8d2ebb048bd46be404165c0e7a0485vboxsync */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/**
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * PDB v2.0 in image debug info.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * The URL is constructed from the timestamp and age?
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsynctypedef struct CVPDB20INFO
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync{
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint32_t u32Magic; /**< CVPDB20INFO_SIGNATURE. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync int32_t offDbgInfo; /**< Always 0. Used to be the offset to the real debug info. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint32_t uTimestamp;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint32_t uAge;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint8_t szPdbFilename[4];
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync} CVPDB20INFO;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** Pointer to in executable image PDB v2.0 info. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsynctypedef CVPDB20INFO *PCVPDB20INFO;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** Pointer to read only in executable image PDB v2.0 info. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsynctypedef CVPDB20INFO const *PCCVPDB20INFO;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** The CVPDB20INFO magic value. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#define CVPDB20INFO_MAGIC RT_MAKE_U32_FROM_U8('N','B','1','0')
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/**
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * PDB v7.0 in image debug info.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * The URL is constructed from the signature and the age.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#pragma pack(4)
daa94352f51be2329ac8660f70396e03a7cb983bvboxsynctypedef struct CVPDB70INFO
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync{
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint32_t u32Magic; /**< CVPDB70INFO_SIGNATURE. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync RTUUID PdbUuid;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint32_t uAge;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync uint8_t szPdbFilename[4];
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync} CVPDB70INFO;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#pragma pack()
daa94352f51be2329ac8660f70396e03a7cb983bvboxsyncAssertCompileMemberOffset(CVPDB70INFO, PdbUuid, 4);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsyncAssertCompileMemberOffset(CVPDB70INFO, uAge, 4 + 16);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** Pointer to in executable image PDB v7.0 info. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsynctypedef CVPDB70INFO *PCVPDB70INFO;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** Pointer to read only in executable image PDB v7.0 info. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsynctypedef CVPDB70INFO const *PCCVPDB70INFO;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** The CVPDB70INFO magic value. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#define CVPDB70INFO_MAGIC RT_MAKE_U32_FROM_U8('R','S','D','S')
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** @} */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#endif
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync