LLVM 22.0.0git
|
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/ADT/bit.h"
#include "llvm/BinaryFormat/MachO.h"
#include "llvm/BinaryFormat/Swift.h"
#include "llvm/Object/Error.h"
#include "llvm/Object/MachO.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Object/SymbolicFile.h"
#include "llvm/Support/DataExtractor.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/MemoryBufferRef.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/SwapByteOrder.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/Triple.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <limits>
#include <list>
#include <memory>
#include <system_error>
#include "llvm/BinaryFormat/Swift.def"
Go to the source code of this file.
Classes | |
struct | MachOElement |
Macros | |
#define | HANDLE_SWIFT_SECTION(KIND, MACHO, ELF, COFF) |
#define HANDLE_SWIFT_SECTION | ( | KIND, | |
MACHO, | |||
ELF, | |||
COFF ) |
|
static |
Definition at line 787 of file MachOObjectFile.cpp.
References D(), getStructOrErr(), malformedError(), P, and llvm::Error::success().
|
static |
Definition at line 639 of file MachOObjectFile.cpp.
References llvm::MachO::dyld_info_command::bind_off, llvm::MachO::dyld_info_command::bind_size, checkOverlappingElement(), llvm::MachO::dyld_info_command::cmdsize, llvm::MachO::dyld_info_command::export_off, llvm::MachO::dyld_info_command::export_size, llvm::object::Binary::getData(), getStructOrErr(), llvm::MachO::dyld_info_command::lazy_bind_off, llvm::MachO::dyld_info_command::lazy_bind_size, malformedError(), llvm::MachO::dyld_info_command::rebase_off, llvm::MachO::dyld_info_command::rebase_size, llvm::StringRef::size(), llvm::Error::success(), llvm::MachO::dyld_info_command::weak_bind_off, and llvm::MachO::dyld_info_command::weak_bind_size.
|
static |
Definition at line 738 of file MachOObjectFile.cpp.
References D(), getStructOrErr(), malformedError(), P, and llvm::Error::success().
Referenced by checkDylibIdCommand().
|
static |
Definition at line 770 of file MachOObjectFile.cpp.
References checkDylibCommand(), llvm::MachO::mach_header::filetype, llvm::object::MachOObjectFile::getHeader(), malformedError(), llvm::MachO::MH_DYLIB, llvm::MachO::MH_DYLIB_STUB, and llvm::Error::success().
|
static |
Definition at line 468 of file MachOObjectFile.cpp.
References checkOverlappingElement(), llvm::MachO::dysymtab_command::cmdsize, llvm::MachO::dysymtab_command::extrefsymoff, llvm::MachO::dysymtab_command::extreloff, llvm::object::Binary::getData(), getStructOrErr(), llvm::MachO::dysymtab_command::indirectsymoff, llvm::object::MachOObjectFile::is64Bit(), llvm::MachO::dysymtab_command::locreloff, malformedError(), llvm::MachO::dysymtab_command::modtaboff, llvm::MachO::dysymtab_command::nextrefsyms, llvm::MachO::dysymtab_command::nextrel, llvm::MachO::dysymtab_command::nindirectsyms, llvm::MachO::dysymtab_command::nlocrel, llvm::MachO::dysymtab_command::nmodtab, llvm::MachO::dysymtab_command::ntoc, llvm::StringRef::size(), llvm::Error::success(), and llvm::MachO::dysymtab_command::tocoff.
|
static |
Definition at line 918 of file MachOObjectFile.cpp.
References llvm::object::Binary::getData(), malformedError(), llvm::StringRef::size(), and llvm::Error::success().
|
static |
Definition at line 601 of file MachOObjectFile.cpp.
References checkOverlappingElement(), llvm::MachO::linkedit_data_command::cmdsize, llvm::MachO::linkedit_data_command::dataoff, llvm::MachO::linkedit_data_command::datasize, llvm::object::Binary::getData(), getStructOrErr(), malformedError(), llvm::StringRef::size(), and llvm::Error::success().
|
static |
Definition at line 942 of file MachOObjectFile.cpp.
References llvm::StringRef::find(), getStructOrErr(), malformedError(), malformedError(), and llvm::Error::success().
|
static |
Definition at line 834 of file MachOObjectFile.cpp.
References checkOverlappingElement(), llvm::object::Binary::getData(), getStructOrErr(), malformedError(), llvm::MachO::note_command::offset, llvm::MachO::note_command::size, llvm::StringRef::size(), and llvm::Error::success().
|
static |
Definition at line 253 of file MachOObjectFile.cpp.
References E(), malformedError(), N, llvm::Offset, Size, and llvm::Error::success().
Referenced by checkDyldInfoCommand(), checkDysymtabCommand(), checkLinkeditDataCommand(), checkNoteCommand(), checkSymtabCommand(), checkTwoLevelHintsCommand(), and parseSegmentLoadCommand().
|
static |
Definition at line 886 of file MachOObjectFile.cpp.
References getStructOrErr(), malformedError(), P, and llvm::Error::success().
|
static |
Definition at line 982 of file MachOObjectFile.cpp.
References malformedError(), P, and llvm::Error::success().
|
static |
Definition at line 410 of file MachOObjectFile.cpp.
References checkOverlappingElement(), llvm::MachO::symtab_command::cmdsize, llvm::object::Binary::getData(), getStructOrErr(), llvm::object::MachOObjectFile::is64Bit(), malformedError(), llvm::MachO::symtab_command::nsyms, llvm::StringRef::size(), llvm::MachO::symtab_command::stroff, llvm::MachO::symtab_command::strsize, llvm::Error::success(), and llvm::MachO::symtab_command::symoff.
|
static |
Definition at line 1009 of file MachOObjectFile.cpp.
References llvm::MachO::ARM_THREAD_STATE, llvm::MachO::ARM_THREAD_STATE64, llvm::MachO::ARM_THREAD_STATE64_COUNT, llvm::MachO::ARM_THREAD_STATE_COUNT, llvm::count(), llvm::MachO::CPU_TYPE_ARM, llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_TYPE_ARM64_32, llvm::MachO::CPU_TYPE_I386, llvm::MachO::CPU_TYPE_POWERPC, llvm::MachO::CPU_TYPE_X86_64, getCPUType(), getStructOrErr(), llvm::object::Binary::isLittleEndian(), llvm::sys::IsLittleEndianHost, malformedError(), llvm::MachO::PPC_THREAD_STATE, llvm::MachO::PPC_THREAD_STATE_COUNT, llvm::Error::success(), llvm::sys::swapByteOrder(), T, llvm::MachO::x86_EXCEPTION_STATE, llvm::MachO::x86_EXCEPTION_STATE64, llvm::MachO::x86_EXCEPTION_STATE64_COUNT, llvm::MachO::x86_EXCEPTION_STATE_COUNT, llvm::MachO::x86_FLOAT_STATE, llvm::MachO::x86_FLOAT_STATE_COUNT, llvm::MachO::x86_THREAD_STATE, llvm::MachO::x86_THREAD_STATE32, llvm::MachO::x86_THREAD_STATE32_COUNT, llvm::MachO::x86_THREAD_STATE64, llvm::MachO::x86_THREAD_STATE64_COUNT, and llvm::MachO::x86_THREAD_STATE_COUNT.
|
static |
Definition at line 1200 of file MachOObjectFile.cpp.
References checkOverlappingElement(), llvm::object::Binary::getData(), getStructOrErr(), malformedError(), llvm::MachO::twolevel_hints_command::nhints, llvm::MachO::twolevel_hints_command::offset, llvm::StringRef::size(), and llvm::Error::success().
|
static |
Definition at line 819 of file MachOObjectFile.cpp.
References malformedError(), and llvm::Error::success().
|
static |
Definition at line 5148 of file MachOObjectFile.cpp.
References llvm::sys::IsLittleEndianHost, N, Ptr, llvm::sys::swapByteOrder(), and T.
Referenced by llvm::object::MachOObjectFile::getDyldChainedFixupTargets().
|
static |
|
static |
Definition at line 132 of file MachOObjectFile.cpp.
Referenced by checkThreadCommand(), llvm::object::MachOObjectFile::getArch(), llvm::object::MachOUniversalBinary::ObjectForArch::getArchFlagName(), llvm::object::MachOObjectFile::getFileFormatName(), llvm::object::MachOUniversalBinary::ObjectForArch::getTriple(), and llvm::object::MachOObjectFile::isRelocationScattered().
Definition at line 5139 of file MachOObjectFile.cpp.
References llvm::MachO::BIND_SPECIAL_DYLIB_FLAT_LOOKUP, llvm::MachO::BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE, llvm::MachO::BIND_SPECIAL_DYLIB_WEAK_LOOKUP, llvm::SignExtend32(), and T.
Referenced by llvm::object::MachOObjectFile::getDyldChainedFixupTargets().
|
static |
Definition at line 208 of file MachOObjectFile.cpp.
References llvm::object::MachOObjectFile::getHeader(), getLoadCommandInfo(), llvm::object::MachOObjectFile::getMachOFilesetEntryOffset(), getPtr(), llvm::object::MachOObjectFile::is64Bit(), malformedError(), and llvm::MachO::mach_header::sizeofcmds.
|
static |
Definition at line 192 of file MachOObjectFile.cpp.
References assert(), llvm::StringRef::end(), llvm::object::Binary::getData(), getStructOrErr(), malformedError(), Ptr, and llvm::Expected< T >::takeError().
Referenced by getFirstLoadCommandInfo(), and getNextLoadCommandInfo().
|
static |
Definition at line 219 of file MachOObjectFile.cpp.
References llvm::StringRef::data(), llvm::object::Binary::getData(), llvm::object::MachOObjectFile::getHeader(), getLoadCommandInfo(), llvm::object::MachOObjectFile::getMachOFilesetEntryOffset(), llvm::object::MachOObjectFile::is64Bit(), malformedError(), and llvm::MachO::mach_header::sizeofcmds.
|
static |
Definition at line 141 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word0.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationAddress(), and llvm::object::MachOObjectFile::isRelocationScattered().
|
static |
Definition at line 162 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word1.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationLength().
|
static |
Definition at line 150 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word1.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationPCRel().
|
static |
Definition at line 174 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word1.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationType().
|
static |
Definition at line 111 of file MachOObjectFile.cpp.
References assert(), and llvm::Offset.
Referenced by llvm::object::MachOObjectFile::begin_dices(), llvm::Error::dynamicClassID(), llvm::object::MachOObjectFile::end_dices(), llvm::object::MachOObjectFile::getChainedFixupsHeader(), llvm::object::MachOObjectFile::getChainedFixupsSegments(), llvm::object::MachOObjectFile::getDataInCodeTableEntry(), llvm::object::MachOObjectFile::getDyldChainedFixupTargets(), llvm::object::MachOObjectFile::getDyldExportsTrie(), llvm::object::MachOObjectFile::getDyldInfoBindOpcodes(), llvm::object::MachOObjectFile::getDyldInfoExportsTrie(), llvm::object::MachOObjectFile::getDyldInfoLazyBindOpcodes(), llvm::object::MachOObjectFile::getDyldInfoRebaseOpcodes(), llvm::object::MachOObjectFile::getDyldInfoWeakBindOpcodes(), getFirstLoadCommandInfo(), llvm::object::MachOObjectFile::getIndirectSymbolTableEntry(), llvm::object::MachOObjectFile::getRelocation(), llvm::object::MachOObjectFile::getRelocationSymbol(), llvm::object::MachOObjectFile::getSymbolByIndex(), llvm::object::MachOObjectFile::getSymbolIndex(), llvm::Error::isA(), llvm::Error::operator bool(), parseHeader(), llvm::object::MachOObjectFile::symbol_end(), and llvm::Error::~Error().
|
static |
Definition at line 146 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word0.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationAddress().
|
static |
Definition at line 170 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word0.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationLength().
|
static |
Definition at line 158 of file MachOObjectFile.cpp.
References llvm::MachO::any_relocation_info::r_word0.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationPCRel().
|
static |
Definition at line 181 of file MachOObjectFile.cpp.
References llvm::MachO::section::flags, and llvm::MachO::section_64::flags.
Referenced by llvm::object::MachOObjectFile::getSectionType(), llvm::object::MachOObjectFile::isSectionBSS(), llvm::object::MachOObjectFile::isSectionData(), llvm::object::MachOObjectFile::isSectionText(), and llvm::object::MachOObjectFile::isSectionVirtual().
|
static |
Definition at line 97 of file MachOObjectFile.cpp.
Referenced by llvm::object::MachOObjectFile::getSection(), llvm::object::MachOObjectFile::getSection64(), and parseSegmentLoadCommand().
Definition at line 71 of file MachOObjectFile.cpp.
References llvm::sys::IsLittleEndianHost, P, llvm::report_fatal_error(), llvm::MachO::swapStruct(), and T.
Referenced by llvm::object::MachOObjectFile::getBuildToolVersion(), llvm::object::MachOObjectFile::getBuildVersionLoadCommand(), llvm::object::MachOObjectFile::getDataInCodeLoadCommand(), llvm::object::MachOObjectFile::getDataInCodeTableEntry(), llvm::object::MachOObjectFile::getDice(), llvm::object::MachOObjectFile::getDyldInfoLoadCommand(), llvm::object::MachOObjectFile::getDylibIDLoadCommand(), llvm::object::MachOObjectFile::getDylinkerCommand(), llvm::object::MachOObjectFile::getDysymtabLoadCommand(), llvm::object::MachOObjectFile::getEncryptionInfoCommand(), llvm::object::MachOObjectFile::getEncryptionInfoCommand64(), llvm::object::MachOObjectFile::getEntryPointCommand(), llvm::object::MachOObjectFile::getFilesetEntryLoadCommand(), llvm::object::MachOObjectFile::getIndirectSymbolTableEntry(), llvm::object::MachOObjectFile::getLinkeditDataLoadCommand(), llvm::object::MachOObjectFile::getLinkerOptionLoadCommand(), llvm::object::MachOObjectFile::getLinkOptHintsLoadCommand(), llvm::object::MachOObjectFile::getNoteLoadCommand(), llvm::object::MachOObjectFile::getRelocation(), llvm::object::MachOObjectFile::getRoutinesCommand(), llvm::object::MachOObjectFile::getRoutinesCommand64(), llvm::object::MachOObjectFile::getRpathCommand(), llvm::object::MachOObjectFile::getSection(), llvm::object::MachOObjectFile::getSection(), llvm::object::MachOObjectFile::getSection64(), llvm::object::MachOObjectFile::getSection64(), llvm::object::MachOObjectFile::getSegment64LoadCommand(), llvm::object::MachOObjectFile::getSegmentLoadCommand(), llvm::object::MachOObjectFile::getSourceVersionCommand(), llvm::object::MachOObjectFile::getSubClientCommand(), llvm::object::MachOObjectFile::getSubFrameworkCommand(), llvm::object::MachOObjectFile::getSubLibraryCommand(), llvm::object::MachOObjectFile::getSubUmbrellaCommand(), llvm::object::MachOObjectFile::getSymbol64TableEntry(), llvm::object::MachOObjectFile::getSymbolTableEntry(), getSymbolTableEntryBase(), llvm::object::MachOObjectFile::getSymtabLoadCommand(), llvm::object::MachOObjectFile::getThreadCommand(), llvm::object::MachOObjectFile::getUuidCommand(), and llvm::object::MachOObjectFile::getVersionMinLoadCommand().
|
static |
Definition at line 84 of file MachOObjectFile.cpp.
References llvm::sys::IsLittleEndianHost, malformedError(), P, llvm::MachO::swapStruct(), and T.
Referenced by checkDyldCommand(), checkDyldInfoCommand(), checkDylibCommand(), checkDysymtabCommand(), checkLinkeditDataCommand(), checkLinkerOptCommand(), checkNoteCommand(), checkRpathCommand(), checkSymtabCommand(), checkThreadCommand(), checkTwoLevelHintsCommand(), llvm::object::MachOObjectFile::getChainedFixupsHeader(), llvm::object::MachOObjectFile::getChainedFixupsLoadCommand(), llvm::object::MachOObjectFile::getChainedFixupsSegments(), llvm::object::MachOObjectFile::getDyldExportsTrie(), llvm::object::MachOObjectFile::getDyldInfoBindOpcodes(), llvm::object::MachOObjectFile::getDyldInfoExportsTrie(), llvm::object::MachOObjectFile::getDyldInfoLazyBindOpcodes(), llvm::object::MachOObjectFile::getDyldInfoRebaseOpcodes(), llvm::object::MachOObjectFile::getDyldInfoWeakBindOpcodes(), llvm::object::MachOObjectFile::getFunctionStarts(), llvm::object::MachOObjectFile::getLibraryShortNameByIndex(), getLoadCommandInfo(), parseBuildVersionCommand(), parseHeader(), and parseSegmentLoadCommand().
|
static |
Definition at line 119 of file MachOObjectFile.cpp.
References getStruct(), P, and llvm::object::DataRefImpl::p.
Referenced by llvm::object::MachOObjectFile::getIndirectName(), llvm::object::MachOObjectFile::getSymbolAlignment(), llvm::object::MachOObjectFile::getSymbolFlags(), llvm::object::MachOObjectFile::getSymbolName(), llvm::object::MachOObjectFile::getSymbolSection(), llvm::object::MachOObjectFile::getSymbolSectionID(), and llvm::object::MachOObjectFile::getSymbolType().
Definition at line 1239 of file MachOObjectFile.cpp.
References llvm::MachO::linker_option_command::cmd.
Definition at line 63 of file MachOObjectFile.cpp.
References llvm::make_error().
Referenced by checkDyldCommand(), checkDyldInfoCommand(), checkDylibCommand(), checkDylibIdCommand(), checkDysymtabCommand(), checkEncryptCommand(), checkLinkeditDataCommand(), checkLinkerOptCommand(), checkNoteCommand(), checkOverlappingElement(), checkRpathCommand(), checkSubCommand(), checkSymtabCommand(), checkThreadCommand(), checkTwoLevelHintsCommand(), checkVersCommand(), getFirstLoadCommandInfo(), getLoadCommandInfo(), getNextLoadCommandInfo(), getStructOrErr(), parseBuildVersionCommand(), parseHeader(), and parseSegmentLoadCommand().
|
static |
Definition at line 863 of file MachOObjectFile.cpp.
References getStructOrErr(), malformedError(), llvm::MachO::build_version_command::ntools, llvm::SmallVectorImpl< T >::resize(), and llvm::Error::success().
|
static |
Definition at line 232 of file MachOObjectFile.cpp.
References llvm::object::Binary::getData(), llvm::object::MachOObjectFile::getMachOFilesetEntryOffset(), getPtr(), getStructOrErr(), malformedError(), llvm::StringRef::size(), and T.
|
static |
Definition at line 286 of file MachOObjectFile.cpp.
References checkOverlappingElement(), llvm::MachO::mach_header::filetype, llvm::object::Binary::getData(), llvm::object::MachOObjectFile::getHeader(), getSectionPtr(), getStructOrErr(), malformedError(), llvm::MachO::MH_DSYM, llvm::MachO::MH_DYLIB_STUB, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MachO::S_THREAD_LOCAL_ZEROFILL, llvm::MachO::S_ZEROFILL, llvm::StringRef::size(), and llvm::Error::success().
Definition at line 124 of file MachOObjectFile.cpp.
References P.
Referenced by llvm::object::MachOObjectFile::getSectionFinalSegmentName(), and llvm::object::MachOObjectFile::getSectionName().