42 lines · c
1//===- COFFReader.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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_OBJCOPY_COFF_COFFREADER_H10#define LLVM_LIB_OBJCOPY_COFF_COFFREADER_H11 12#include "llvm/BinaryFormat/COFF.h"13#include "llvm/Object/COFF.h"14#include "llvm/Support/Error.h"15 16namespace llvm {17namespace objcopy {18namespace coff {19 20struct Object;21 22using object::COFFObjectFile;23 24class COFFReader {25 const COFFObjectFile &COFFObj;26 27 Error readExecutableHeaders(Object &Obj) const;28 Error readSections(Object &Obj) const;29 Error readSymbols(Object &Obj, bool IsBigObj) const;30 Error setSymbolTargets(Object &Obj) const;31 32public:33 explicit COFFReader(const COFFObjectFile &O) : COFFObj(O) {}34 Expected<std::unique_ptr<Object>> create() const;35};36 37} // end namespace coff38} // end namespace objcopy39} // end namespace llvm40 41#endif // LLVM_LIB_OBJCOPY_COFF_COFFREADER_H42