1 //===--- COFFModuleDefinition.h ---------------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 // A parser for the module-definition file (.def file).
11 // Parsed results are directly written to Config global variable.
13 // The format of module-definition files are described in this document:
14 // https://msdn.microsoft.com/en-us/library/28d6s79h.aspx
16 //===----------------------------------------------------------------------===//
18 #ifndef LLVM_OBJECT_COFF_MODULE_DEFINITION_H
19 #define LLVM_OBJECT_COFF_MODULE_DEFINITION_H
21 #include "llvm/Object/COFF.h"
22 #include "llvm/Object/COFFImportFile.h"
27 struct COFFModuleDefinition
{
28 std::vector
<COFFShortExport
> Exports
;
29 std::string OutputFile
;
30 std::string ImportName
;
31 uint64_t ImageBase
= 0;
32 uint64_t StackReserve
= 0;
33 uint64_t StackCommit
= 0;
34 uint64_t HeapReserve
= 0;
35 uint64_t HeapCommit
= 0;
36 uint32_t MajorImageVersion
= 0;
37 uint32_t MinorImageVersion
= 0;
38 uint32_t MajorOSVersion
= 0;
39 uint32_t MinorOSVersion
= 0;
42 // mingw and wine def files do not mangle _ for x86 which
43 // is a consequence of legacy binutils' dlltool functionality.
44 // This MingwDef flag should be removed once mingw stops this pratice.
45 Expected
<COFFModuleDefinition
>
46 parseCOFFModuleDefinition(MemoryBufferRef MB
, COFF::MachineTypes Machine
,
47 bool MingwDef
= false);
49 } // End namespace object.
50 } // End namespace llvm.