Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===--- COFFModuleDefinition.h ---------------------------------*- C++ -*-===//
  2. //
  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
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // Windows-specific.
  10. // A parser for the module-definition file (.def file).
  11. // Parsed results are directly written to Config global variable.
  12. //
  13. // The format of module-definition files are described in this document:
  14. // https://msdn.microsoft.com/en-us/library/28d6s79h.aspx
  15. //
  16. //===----------------------------------------------------------------------===//
  17.  
  18. #ifndef LLVM_OBJECT_COFFMODULEDEFINITION_H
  19. #define LLVM_OBJECT_COFFMODULEDEFINITION_H
  20.  
  21. #include "llvm/BinaryFormat/COFF.h"
  22. #include "llvm/Object/COFFImportFile.h"
  23.  
  24. namespace llvm {
  25. namespace object {
  26.  
  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;
  40. };
  41.  
  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);
  48.  
  49. } // End namespace object.
  50. } // End namespace llvm.
  51.  
  52. #endif
  53.