//===- COFFObject.h ---------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_OBJCOPY_COFF_COFFOBJECT_H #define LLVM_LIB_OBJCOPY_COFF_COFFOBJECT_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/iterator_range.h" #include "llvm/BinaryFormat/COFF.h" #include "llvm/Object/COFF.h" #include <cstddef> #include <cstdint> #include <vector> namespace llvm { namespace objcopy { namespace coff { struct Relocation { … }; struct Section { … }; struct AuxSymbol { … }; struct Symbol { … }; struct Object { … }; // Copy between coff_symbol16 and coff_symbol32. // The source and destination files can use either coff_symbol16 or // coff_symbol32, while we always store them as coff_symbol32 in the // intermediate data structure. template <class Symbol1Ty, class Symbol2Ty> void copySymbol(Symbol1Ty &Dest, const Symbol2Ty &Src) { … } // Copy between pe32_header and pe32plus_header. // We store the intermediate state in a pe32plus_header. template <class PeHeader1Ty, class PeHeader2Ty> void copyPeHeader(PeHeader1Ty &Dest, const PeHeader2Ty &Src) { … } } // end namespace coff } // end namespace objcopy } // end namespace llvm #endif // LLVM_LIB_OBJCOPY_COFF_COFFOBJECT_H