![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/thread-self/root/usr/include/llvm-10/llvm/TextAPI/ELF/ |
Upload File : |
//===- ELFStub.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 // //===-----------------------------------------------------------------------===/ /// /// \file /// This file defines an internal representation of an ELF stub. /// //===-----------------------------------------------------------------------===/ #ifndef LLVM_TEXTAPI_ELF_ELFSTUB_H #define LLVM_TEXTAPI_ELF_ELFSTUB_H #include "llvm/BinaryFormat/ELF.h" #include "llvm/Support/VersionTuple.h" #include <vector> #include <set> namespace llvm { namespace elfabi { typedef uint16_t ELFArch; enum class ELFSymbolType { NoType = ELF::STT_NOTYPE, Object = ELF::STT_OBJECT, Func = ELF::STT_FUNC, TLS = ELF::STT_TLS, // Type information is 4 bits, so 16 is safely out of range. Unknown = 16, }; struct ELFSymbol { ELFSymbol(std::string SymbolName) : Name(SymbolName) {} std::string Name; uint64_t Size; ELFSymbolType Type; bool Undefined; bool Weak; Optional<std::string> Warning; bool operator<(const ELFSymbol &RHS) const { return Name < RHS.Name; } }; // A cumulative representation of ELF stubs. // Both textual and binary stubs will read into and write from this object. class ELFStub { // TODO: Add support for symbol versioning. public: VersionTuple TbeVersion; Optional<std::string> SoName; ELFArch Arch; std::vector<std::string> NeededLibs; std::set<ELFSymbol> Symbols; ELFStub() {} ELFStub(const ELFStub &Stub); ELFStub(ELFStub &&Stub); }; } // end namespace elfabi } // end namespace llvm #endif // LLVM_TEXTAPI_ELF_ELFSTUB_H