1*81ad6265SDimitry Andric //===- XCOFFObject.h --------------------------------------------*- C++ -*-===// 2*81ad6265SDimitry Andric // 3*81ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*81ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*81ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*81ad6265SDimitry Andric // 7*81ad6265SDimitry Andric //===----------------------------------------------------------------------===// 8*81ad6265SDimitry Andric 9*81ad6265SDimitry Andric #ifndef LLVM_LIB_OBJCOPY_XCOFF_XCOFFOBJECT_H 10*81ad6265SDimitry Andric #define LLVM_LIB_OBJCOPY_XCOFF_XCOFFOBJECT_H 11*81ad6265SDimitry Andric 12*81ad6265SDimitry Andric #include "llvm/ADT/ArrayRef.h" 13*81ad6265SDimitry Andric #include "llvm/ADT/StringRef.h" 14*81ad6265SDimitry Andric #include "llvm/Object/XCOFFObjectFile.h" 15*81ad6265SDimitry Andric #include <vector> 16*81ad6265SDimitry Andric 17*81ad6265SDimitry Andric namespace llvm { 18*81ad6265SDimitry Andric namespace objcopy { 19*81ad6265SDimitry Andric namespace xcoff { 20*81ad6265SDimitry Andric 21*81ad6265SDimitry Andric using namespace object; 22*81ad6265SDimitry Andric 23*81ad6265SDimitry Andric struct Section { 24*81ad6265SDimitry Andric XCOFFSectionHeader32 SectionHeader; 25*81ad6265SDimitry Andric ArrayRef<uint8_t> Contents; 26*81ad6265SDimitry Andric std::vector<XCOFFRelocation32> Relocations; 27*81ad6265SDimitry Andric }; 28*81ad6265SDimitry Andric 29*81ad6265SDimitry Andric struct Symbol { 30*81ad6265SDimitry Andric XCOFFSymbolEntry32 Sym; 31*81ad6265SDimitry Andric // For now, each auxiliary symbol is only an opaque binary blob with no 32*81ad6265SDimitry Andric // distinction. 33*81ad6265SDimitry Andric StringRef AuxSymbolEntries; 34*81ad6265SDimitry Andric }; 35*81ad6265SDimitry Andric 36*81ad6265SDimitry Andric struct Object { 37*81ad6265SDimitry Andric XCOFFFileHeader32 FileHeader; 38*81ad6265SDimitry Andric XCOFFAuxiliaryHeader32 OptionalFileHeader; 39*81ad6265SDimitry Andric std::vector<Section> Sections; 40*81ad6265SDimitry Andric std::vector<Symbol> Symbols; 41*81ad6265SDimitry Andric StringRef StringTable; 42*81ad6265SDimitry Andric }; 43*81ad6265SDimitry Andric 44*81ad6265SDimitry Andric } // end namespace xcoff 45*81ad6265SDimitry Andric } // end namespace objcopy 46*81ad6265SDimitry Andric } // end namespace llvm 47*81ad6265SDimitry Andric 48*81ad6265SDimitry Andric #endif // LLVM_LIB_OBJCOPY_XCOFF_XCOFFOBJECT_H 49