LLVM: lib/ObjCopy/ELF/ELFObjcopy.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static bool isDebugSection (const SectionBase &Sec)
static bool isDWOSection (const SectionBase &Sec)
static bool onlyKeepDWOPred (const Object &Obj, const SectionBase &Sec)
static Expected< uint64_t > getNewShfFlags (SectionFlag AllFlags, uint16_t EMachine)
static uint64_t getSectionFlagsPreserveMask (uint64_t OldFlags, uint64_t NewFlags, uint16_t EMachine)
static void setSectionType (SectionBase &Sec, uint64_t Type)
static Error setSectionFlagsAndType (SectionBase &Sec, SectionFlag Flags, uint16_t EMachine)
static ElfType getOutputElfType (const Binary &Bin)
static ElfType getOutputElfType (const MachineInfo &MI)
static std::unique_ptr< Writer > createELFWriter (const CommonConfig &Config, Object &Obj, raw_ostream &Out, ElfType OutputElfType)
static std::unique_ptr< Writer > createWriter (const CommonConfig &Config, Object &Obj, raw_ostream &Out, ElfType OutputElfType)
static Error dumpSectionToFile (StringRef SecName, StringRef Filename, StringRef InputFilename, Object &Obj)
static bool isAArch64MappingSymbol (const Symbol &Sym)
static bool isArmMappingSymbol (const Symbol &Sym)
static bool isRequiredByABISymbol (const Object &Obj, const Symbol &Sym)
static bool isUnneededSymbol (const Symbol &Sym)
static Error updateAndRemoveSymbols (const CommonConfig &Config, const ELFConfig &ELFConfig, Object &Obj)
static Error replaceAndRemoveSections (const CommonConfig &Config, const ELFConfig &ELFConfig, Object &Obj)
static void addSymbol (Object &Obj, const NewSymbolInfo &SymInfo, uint8_t DefaultVisibility)
static Error removeNotes (Object &Obj, endianness Endianness, ArrayRef< RemoveNoteInfo > NotesToRemove, function_ref< Error(Error)> ErrorCallback)
static Error handleUserSection (const NewSectionInfo &NewSection, function_ref< Error(StringRef, ArrayRef< uint8_t >)> F)
static Error verifyNoteSection (StringRef Name, endianness Endianness, ArrayRef< uint8_t > Data)
static Error handleArgs (const CommonConfig &Config, const ELFConfig &ELFConfig, ElfType OutputElfType, Object &Obj)
static Error writeOutput (const CommonConfig &Config, Object &Obj, raw_ostream &Out, ElfType OutputElfType)

SectionPred

addSymbol()

Definition at line 559 of file ELFObjcopy.cpp.

References llvm::objcopy:🧝:SectionBase::Addr, llvm::objcopy::Default, llvm::objcopy::File, llvm::objcopy::Function, llvm::objcopy::Global, llvm::objcopy::Hidden, llvm::objcopy::IndirectFunction, llvm::objcopy::Local, llvm::objcopy::Object, llvm::objcopy::Protected, llvm::objcopy::Section, llvm::ELF::SHN_ABS, llvm::ELF::STB_GLOBAL, llvm::ELF::STB_LOCAL, llvm::ELF::STB_WEAK, llvm::ELF::STT_FILE, llvm::ELF::STT_FUNC, llvm::ELF::STT_GNU_IFUNC, llvm::ELF::STT_NOTYPE, llvm::ELF::STT_OBJECT, llvm::ELF::STT_SECTION, llvm::ELF::STV_DEFAULT, llvm::ELF::STV_HIDDEN, llvm::ELF::STV_PROTECTED, llvm::objcopy:🧝:SYMBOL_SIMPLE_INDEX, and llvm::objcopy::Weak.

Referenced by llvm::jitlink::SymbolAddressMap::addSymbols(), and handleArgs().

createELFWriter()

createWriter()

dumpSectionToFile()

getNewShfFlags()

Definition at line 66 of file ELFObjcopy.cpp.

References llvm::createStringError(), llvm::ELF::EM_X86_64, llvm::invalid_argument, llvm::objcopy::SecAlloc, llvm::objcopy::SecCode, llvm::objcopy::SecExclude, llvm::objcopy::SecLarge, llvm::objcopy::SecMerge, llvm::objcopy::SecReadonly, llvm::objcopy::SecStrings, llvm::ELF::SHF_ALLOC, llvm::ELF::SHF_EXCLUDE, llvm::ELF::SHF_EXECINSTR, llvm::ELF::SHF_MERGE, llvm::ELF::SHF_STRINGS, llvm::ELF::SHF_WRITE, and llvm::ELF::SHF_X86_64_LARGE.

Referenced by setSectionFlagsAndType().

getOutputElfType() [1/2]

getOutputElfType() [2/2]

getSectionFlagsPreserveMask()

handleArgs()

Definition at line 783 of file ELFObjcopy.cpp.

References llvm::objcopy::Add, llvm::objcopy::CommonConfig::AddGnuDebugLink, llvm::objcopy::CommonConfig::AddSection, addSymbol(), llvm::objcopy::CommonConfig::AllocSectionsPrefix, llvm::objcopy::ELFConfig::AllowBrokenLinks, llvm::big, llvm::objcopy::CommonConfig::ChangeSectionAddress, llvm::objcopy::CommonConfig::ChangeSectionLMAValAll, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), llvm::createFileError(), llvm::Data, llvm::objcopy::CommonConfig::DumpSection, dumpSectionToFile(), llvm::dyn_cast(), E(), llvm::objcopy:🧝:ELFT_ELF32LE, llvm::objcopy:🧝:ELFT_ELF64LE, llvm::StringMapImpl::empty(), llvm::StringRef::empty(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::end(), llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::objcopy::ELFConfig::EntryExpr, llvm::objcopy::CommonConfig::ErrorCallback, llvm::ELF::ET_REL, llvm::objcopy::CommonConfig::ExtractDWO, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::find(), llvm::StringMap< ValueTy, AllocatorTy >::find(), llvm::objcopy:🧝:SectionBase::Flags, llvm::objcopy::CommonConfig::GnuDebugLinkCRC32, handleUserSection(), I, llvm::objcopy::CommonConfig::InputFilename, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::invalid_argument, llvm::object::invalid_file_type, llvm::little, llvm::objcopy:🧝:SectionBase::Name, llvm::objcopy::SectionFlagsUpdate::NewFlags, llvm::objcopy::SectionRename::NewFlags, llvm::objcopy::SectionRename::NewName, llvm::objcopy::ELFConfig::NewSymbolVisibility, llvm::objcopy::ELFConfig::NotesToRemove, llvm::objcopy::CommonConfig::OnlyKeepDebug, llvm::objcopy::CommonConfig::OutputArch, removeNotes(), replaceAndRemoveSections(), llvm::reverse(), llvm::objcopy::CommonConfig::SectionsToRename, llvm::objcopy::Set, llvm::objcopy::CommonConfig::SetSectionAlignment, llvm::objcopy::CommonConfig::SetSectionFlags, setSectionFlagsAndType(), llvm::objcopy::CommonConfig::SetSectionType, setSectionType(), llvm::ELF::SHF_ALLOC, llvm::ELF::SHT_NOBITS, llvm::ELF::SHT_NOTE, llvm::objcopy::CommonConfig::SplitDWO, llvm::objcopy::Subtract, llvm::Error::success(), llvm::objcopy::CommonConfig::SymbolsToAdd, llvm::StringMap< ValueTy, AllocatorTy >::try_emplace(), llvm::objcopy:🧝:SectionBase::Type, updateAndRemoveSymbols(), llvm::objcopy::CommonConfig::UpdateSection, llvm::Twine::utohexstr(), verifyNoteSection(), and llvm::objcopy::ELFConfig::VerifyNoteSections.

Referenced by llvm::objcopy:🧝:executeObjcopyOnBinary(), llvm::objcopy:🧝:executeObjcopyOnIHex(), and llvm::objcopy:🧝:executeObjcopyOnRawBinary().

handleUserSection()

isAArch64MappingSymbol()

bool isAArch64MappingSymbol ( const Symbol & Sym) static

isArmMappingSymbol()

bool isArmMappingSymbol ( const Symbol & Sym) static

isDebugSection()

isDWOSection()

isRequiredByABISymbol()

isUnneededSymbol()

bool isUnneededSymbol ( const Symbol & Sym) static

onlyKeepDWOPred()

removeNotes()

replaceAndRemoveSections()

Definition at line 411 of file ELFObjcopy.cpp.

References llvm::objcopy::ELFConfig::AllowBrokenLinks, E(), llvm::objcopy::NameMatcher::empty(), llvm::objcopy::CommonConfig::ExtractDWO, llvm::objcopy::CommonConfig::ExtractMainPartition, llvm::objcopy::CommonConfig::ExtractPartition, isDebugSection(), isDWOSection(), llvm::objcopy::ELFConfig::KeepFileSymbols, llvm::objcopy::CommonConfig::KeepSection, llvm::objcopy::NameMatcher::matches(), onlyKeepDWOPred(), llvm::objcopy::CommonConfig::OnlySection, llvm::ELF::SHF_ALLOC, llvm::ELF::SHT_ARM_ATTRIBUTES, llvm::ELF::SHT_LLVM_PART_EHDR, llvm::ELF::SHT_LLVM_PART_PHDR, llvm::ELF::SHT_REL, llvm::ELF::SHT_RELA, llvm::ELF::SHT_STRTAB, llvm::ELF::SHT_SYMTAB, llvm::StringRef::starts_with(), llvm::objcopy::CommonConfig::StripAll, llvm::objcopy::CommonConfig::StripAllGNU, llvm::objcopy::CommonConfig::StripDebug, llvm::objcopy::CommonConfig::StripDWO, llvm::objcopy::CommonConfig::StripNonAlloc, llvm::objcopy::CommonConfig::StripSections, llvm::objcopy::CommonConfig::StripUnneeded, llvm::Error::success(), llvm::objcopy::CommonConfig::SymbolsToKeep, and llvm::objcopy::CommonConfig::ToRemove.

Referenced by handleArgs().

setSectionFlagsAndType()

Definition at line 113 of file ELFObjcopy.cpp.

References llvm::objcopy:🧝:SectionBase::Flags, getNewShfFlags(), getSectionFlagsPreserveMask(), llvm::objcopy::SecContents, llvm::objcopy::SecLoad, setSectionType(), llvm::ELF::SHF_ALLOC, llvm::ELF::SHT_NOBITS, llvm::ELF::SHT_PROGBITS, llvm::Error::success(), llvm::Expected< T >::takeError(), and llvm::objcopy:🧝:SectionBase::Type.

Referenced by handleArgs().

setSectionType()

updateAndRemoveSymbols()

Definition at line 299 of file ELFObjcopy.cpp.

References llvm::objcopy::All, llvm::objcopy::CommonConfig::DiscardMode, llvm::objcopy::NameMatcher::empty(), llvm::StringRef::empty(), I, isRequiredByABISymbol(), isUnneededSymbol(), llvm::objcopy::ELFConfig::KeepFileSymbols, llvm::objcopy::ELFConfig::LocalizeHidden, llvm::objcopy::Locals, llvm::objcopy::NameMatcher::matches(), llvm::objcopy::None, llvm::objcopy::CommonConfig::OnlySection, llvm::ELF::SHN_UNDEF, llvm::StringRef::size(), llvm::StringRef::starts_with(), llvm::ELF::STB_GLOBAL, llvm::ELF::STB_LOCAL, llvm::ELF::STB_WEAK, llvm::objcopy::CommonConfig::StripAll, llvm::objcopy::CommonConfig::StripAllGNU, llvm::objcopy::CommonConfig::StripDebug, llvm::objcopy::CommonConfig::StripUnneeded, llvm::ELF::STT_FILE, llvm::ELF::STT_SECTION, llvm::ELF::STV_HIDDEN, llvm::ELF::STV_INTERNAL, llvm::Error::success(), llvm::objcopy::CommonConfig::SymbolsPrefix, llvm::objcopy::CommonConfig::SymbolsPrefixRemove, llvm::objcopy::CommonConfig::SymbolsToGlobalize, llvm::objcopy::CommonConfig::SymbolsToKeep, llvm::objcopy::CommonConfig::SymbolsToKeepGlobal, llvm::objcopy::CommonConfig::SymbolsToLocalize, llvm::objcopy::CommonConfig::SymbolsToRemove, llvm::objcopy::CommonConfig::SymbolsToRename, llvm::objcopy::ELFConfig::SymbolsToSetVisibility, llvm::objcopy::CommonConfig::SymbolsToSkip, llvm::objcopy::CommonConfig::SymbolsToWeaken, llvm::objcopy::CommonConfig::UnneededSymbolsToRemove, and llvm::objcopy::CommonConfig::Weaken.

Referenced by handleArgs().

verifyNoteSection()

writeOutput()