//===- Header.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_DEBUGINFO_GSYM_HEADER_H #define LLVM_DEBUGINFO_GSYM_HEADER_H #include "llvm/Support/Error.h" #include <cstddef> #include <cstdint> namespace llvm { class raw_ostream; class DataExtractor; namespace gsym { class FileWriter; constexpr uint32_t GSYM_MAGIC = …; // 'GSYM' constexpr uint32_t GSYM_CIGAM = …; // 'MYSG' constexpr uint32_t GSYM_VERSION = …; constexpr size_t GSYM_MAX_UUID_SIZE = …; /// The GSYM header. /// /// The GSYM header is found at the start of a stand alone GSYM file, or as /// the first bytes in a section when GSYM is contained in a section of an /// executable file (ELF, mach-o, COFF). /// /// The structure is encoded exactly as it appears in the structure definition /// with no gaps between members. Alignment should not change from system to /// system as the members were laid out so that they shouldn't align /// differently on different architectures. /// /// When endianness of the system loading a GSYM file matches, the file can /// be mmap'ed in and a pointer to the header can be cast to the first bytes /// of the file (stand alone GSYM file) or section data (GSYM in a section). /// When endianness is swapped, the Header::decode() function should be used to /// decode the header. struct Header { … }; bool operator==(const Header &LHS, const Header &RHS); raw_ostream &operator<<(raw_ostream &OS, const llvm::gsym::Header &H); } // namespace gsym } // namespace llvm #endif // LLVM_DEBUGINFO_GSYM_HEADER_H