reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

tools/lld/ELF/SyntheticSections.h
   38 class SyntheticSection : public InputSection {

Declarations

tools/lld/ELF/AArch64ErrataFix.h
   20 class InputSection;
tools/lld/ELF/ARMErrataFix.h
   21 class InputSection;
tools/lld/ELF/DWARF.h
   20 class InputSection;
tools/lld/ELF/LinkerScript.h
   32 class InputSection;
tools/lld/ELF/OutputSections.h
   25 class InputSection;
tools/lld/ELF/Relocations.h
   20 class InputSection;

References

include/llvm/ADT/ArrayRef.h
  108         const ArrayRef<U *> &A,
  110            std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
  127     ArrayRef(const std::vector<U *, A> &Vec,
  129                  std::is_convertible<U *const *, T const *>::value>::type* = 0)
include/llvm/ADT/DenseMapInfo.h
   39   static inline T* getEmptyKey() {
   41     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   45   static inline T* getTombstoneKey() {
   47     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   51   static unsigned getHashValue(const T *PtrVal) {
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/Support/Alignment.h
  103     return Constant<std::alignment_of<T>::value>();
include/llvm/Support/Allocator.h
   81   template <typename T> T *Allocate(size_t Num = 1) {
   82     return static_cast<T *>(Allocate(Num * sizeof(T), alignof(T)));
   82     return static_cast<T *>(Allocate(Num * sizeof(T), alignof(T)));
  470       for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  470       for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  478       char *Begin = (char *)alignAddr(*I, Align::Of<T>());
  488       DestroyElements((char *)alignAddr(Ptr, Align::Of<T>()),
  496   T *Allocate(size_t num = 1) { return Allocator.Allocate<T>(num); }
  496   T *Allocate(size_t num = 1) { return Allocator.Allocate<T>(num); }
include/llvm/Support/Casting.h
   57   static inline bool doit(const From &Val) {
   58     return To::classof(&Val);
   77     return isa_impl<To, From>::doit(Val);
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
  106     return isa_impl<To, From>::doit(*Val);
  122     return isa_impl_wrap<To, SimpleFrom,
  132     return isa_impl_cl<To,FromTy>::doit(Val);
  142   return isa_impl_wrap<X, const Y,
  165   using ret_type = To &;       // Normal case, return Ty&
  168   using ret_type = const To &; // Normal case, return Ty&
  172   using ret_type = To *;       // Pointer arg case, return Ty*
  176   using ret_type = const To *; // Constant pointer arg case, return const Ty*
  198   using ret_type = typename cast_retty<To, SimpleFrom>::ret_type;
  204   using ret_type = typename cast_retty_impl<To,FromTy>::ret_type;
  210       To, From, typename simplify_type<From>::SimpleType>::ret_type;
  227   static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  228     typename cast_retty<To, FromTy>::ret_type Res2
  256 inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  258   return cast_convert_val<X, Y,
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  265   return cast_convert_val<X, Y*,
  266                           typename simplify_type<Y*>::SimpleType>::doit(Val);
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  309   return cast<X>(Val);
  337 LLVM_NODISCARD inline typename cast_retty<X, Y>::ret_type dyn_cast(Y &Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
tools/lld/ELF/AArch64ErrataFix.cpp
  338 static uint64_t scanCortexA53Errata843419(InputSection *isec, uint64_t &off,
  376   Patch843419Section(InputSection *p, uint64_t off);
  385   const InputSection *patchee;
  392 Patch843419Section::Patch843419Section(InputSection *p, uint64_t off)
  450       if (auto *sec = dyn_cast_or_null<InputSection>(def->section))
  450       if (auto *sec = dyn_cast_or_null<InputSection>(def->section))
  494   for (const InputSection *isec : isd.sections) {
  515   std::vector<InputSection *> tmp;
  532                            InputSection *isec,
  580   for (InputSection *isec : isd.sections) {
tools/lld/ELF/AArch64ErrataFix.h
   42   std::map<InputSection *, std::vector<const Defined *>> sectionMap;
tools/lld/ELF/ARMErrataFix.cpp
   76   Patch657417Section(InputSection *p, uint64_t off, uint32_t instr, bool isARM);
   86   const InputSection *patchee;
  135 Patch657417Section::Patch657417Section(InputSection *p, uint64_t off,
  194 static bool branchDestInFirstRegion(const InputSection *isec, uint64_t off,
  217 static bool patchInRange(const InputSection *isec, uint64_t off,
  243 static ScanResult scanCortexA8Errata657417(InputSection *isec, uint64_t &off,
  327       if (auto *sec = dyn_cast_or_null<InputSection>(def->section))
  327       if (auto *sec = dyn_cast_or_null<InputSection>(def->section))
  366   for (const InputSection *isec : isd.sections) {
  385   std::vector<InputSection *> tmp;
  402 static void implementPatch(ScanResult sr, InputSection *isec,
  475   for (InputSection *isec : isd.sections) {
tools/lld/ELF/ARMErrataFix.h
   43   llvm::DenseMap<InputSection *, std::vector<const Defined *>> sectionMap;
tools/lld/ELF/Arch/ARM.cpp
   39   void addPltSymbols(InputSection &isec, uint64_t off) const override;
   40   void addPltHeaderSymbols(InputSection &isd) const override;
  210 void ARM::addPltHeaderSymbols(InputSection &isec) const {
  259 void ARM::addPltSymbols(InputSection &isec, uint64_t off) const {
tools/lld/ELF/DWARF.cpp
  108       val += cast<InputSection>(dr->section)->getOffsetInFile();
tools/lld/ELF/Driver.cpp
 1856       if (s && s != &InputSection::discarded)
 1860       inputSections.push_back(cast<InputSection>(s));
tools/lld/ELF/ICF.cpp
  106   bool constantEq(const InputSection *a, ArrayRef<RelTy> relsA,
  107                   const InputSection *b, ArrayRef<RelTy> relsB);
  110   bool variableEq(const InputSection *a, ArrayRef<RelTy> relsA,
  111                   const InputSection *b, ArrayRef<RelTy> relsB);
  113   bool equalsConstant(const InputSection *a, const InputSection *b);
  113   bool equalsConstant(const InputSection *a, const InputSection *b);
  114   bool equalsVariable(const InputSection *a, const InputSection *b);
  114   bool equalsVariable(const InputSection *a, const InputSection *b);
  123   std::vector<InputSection *> sections;
  161 static bool isEligible(InputSection *s) {
  236 bool ICF<ELFT>::constantEq(const InputSection *secA, ArrayRef<RelTy> ra,
  237                            const InputSection *secB, ArrayRef<RelTy> rb) {
  274     if (isa<InputSection>(da->section)) {
  303 bool ICF<ELFT>::equalsConstant(const InputSection *a, const InputSection *b) {
  303 bool ICF<ELFT>::equalsConstant(const InputSection *a, const InputSection *b) {
  323 bool ICF<ELFT>::variableEq(const InputSection *secA, ArrayRef<RelTy> ra,
  324                            const InputSection *secB, ArrayRef<RelTy> rb) {
  342     auto *x = dyn_cast<InputSection>(da->section);
  342     auto *x = dyn_cast<InputSection>(da->section);
  345     auto *y = cast<InputSection>(db->section);
  345     auto *y = cast<InputSection>(db->section);
  360 bool ICF<ELFT>::equalsVariable(const InputSection *a, const InputSection *b) {
  360 bool ICF<ELFT>::equalsVariable(const InputSection *a, const InputSection *b) {
  428 static void combineRelocHashes(unsigned cnt, InputSection *isec,
  434       if (auto *relSec = dyn_cast_or_null<InputSection>(d->section))
  434       if (auto *relSec = dyn_cast_or_null<InputSection>(d->section))
  450     auto *s = cast<InputSection>(sec);
  450     auto *s = cast<InputSection>(sec);
  499       for (InputSection *isec : sections[i]->dependentSections)
tools/lld/ELF/InputFiles.cpp
  510     if (this->sections[i] == &InputSection::discarded)
  533       this->sections[i] = &InputSection::discarded;
  541       this->sections[i] = &InputSection::discarded;
  574         this->sections[secIndex] = &InputSection::discarded;
  591     if (this->sections[i] == &InputSection::discarded)
  605     InputSection *isec = cast<InputSection>(this->sections[i]);
  605     InputSection *isec = cast<InputSection>(this->sections[i]);
  607     if (!isa<InputSection>(linkSec))
  774   if (target == &InputSection::discarded)
  784 static InputSection *toRegularSection(MergeInputSection *sec) {
  785   return make<InputSection>(sec->file, sec->flags, sec->type, sec->alignment,
  807       in.armAttributes = make<InputSection>(*this, sec, name);
  810     return &InputSection::discarded;
  821       return &InputSection::discarded;
  828     return &InputSection::discarded;
  855       InputSection *relocSec = make<InputSection>(*this, sec, name);
  855       InputSection *relocSec = make<InputSection>(*this, sec, name);
  887       InputSection *relocSec = make<InputSection>(*this, sec, name);
  887       InputSection *relocSec = make<InputSection>(*this, sec, name);
  910     return &InputSection::discarded;
  923     return &InputSection::discarded;
  933       return &InputSection::discarded;
  936     return &InputSection::discarded;
  944     return &InputSection::discarded;
  954     return &InputSection::discarded;
  962     return &InputSection::discarded;
  972   return make<InputSection>(*this, sec, name);
 1022       else if (sec == &InputSection::discarded)
 1053     if (sec == &InputSection::discarded) {
 1445   auto *section = make<InputSection>(this, SHF_ALLOC | SHF_WRITE, SHT_PROGBITS,
 1445   auto *section = make<InputSection>(this, SHF_ALLOC | SHF_WRITE, SHT_PROGBITS,
tools/lld/ELF/InputSection.cpp
  175     return cast<InputSection>(this)->getOffset(offset);
  183     if (InputSection *isec = ms->getParent())
  196   InputSection *sec;
  197   if (auto *isec = dyn_cast<InputSection>(this))
  197   if (auto *isec = dyn_cast<InputSection>(this))
  276 InputSection *InputSectionBase::getLinkOrderDep() const {
  279   return cast<InputSection>(file->getSections()[link]);
  358 InputSection InputSection::discarded(nullptr, 0, 0, 0, ArrayRef<uint8_t>(), "");
  577   InputSection *isec = cast<InputSection>(d->section);
  577   InputSection *isec = cast<InputSection>(d->section);
  890 static void relocateNonAllocForRelocatable(InputSection *sec, uint8_t *buf) {
  912   auto *sec = cast<InputSection>(this);
  912   auto *sec = cast<InputSection>(this);
  927     if (auto *sec = dyn_cast<InputSection>(this))
  927     if (auto *sec = dyn_cast<InputSection>(this))
 1071       if (InputSection *isec = cast_or_null<InputSection>(d->section))
 1071       if (InputSection *isec = cast_or_null<InputSection>(d->section))
 1140 void InputSection::replace(InputSection *other) {
 1149     for (InputSection *isec : dependentSections)
tools/lld/ELF/InputSection.h
  160   llvm::TinyPtrVector<InputSection *> dependentSections;
  165   InputSection *getLinkOrderDep() const;
  345   void replace(InputSection *other);
  347   static InputSection discarded;
tools/lld/ELF/LinkerScript.cpp
  425       if (isa<InputSection>(sec) &&
  426           cast<InputSection>(sec)->getRelocatedSection())
  458   for (InputSection *ds : s->dependentSections)
  590     auto *sec = cast<InputSection>(isec);
  590     auto *sec = cast<InputSection>(isec);
  713     if (auto *sec = dyn_cast<InputSection>(isec))
  713     if (auto *sec = dyn_cast<InputSection>(isec))
  744 void LinkerScript::output(InputSection *s) {
  870     for (InputSection *sec : cast<InputSectionDescription>(base)->sections)
tools/lld/ELF/LinkerScript.h
  177   std::vector<InputSection *> sections;
  246   void output(InputSection *sec);
tools/lld/ELF/MapFile.cpp
  181         for (InputSection *isec : isd->sections) {
tools/lld/ELF/MarkLive.cpp
   68   SmallVector<InputSection *, 256> queue;
  185   if (sec == &InputSection::discarded)
  202   if (InputSection *s = dyn_cast<InputSection>(sec))
  202   if (InputSection *s = dyn_cast<InputSection>(sec))
tools/lld/ELF/OutputSections.cpp
  107 void OutputSection::commitSection(InputSection *isec) {
  172         cmd->sections.push_back(cast<InputSection>(s));
  211     for (InputSection *s : cmd->sections)
  218 static void sortByOrder(MutableArrayRef<InputSection *> in,
  220   std::vector<std::pair<int, InputSection *>> v;
  221   for (InputSection *s : in)
  311   std::vector<InputSection *> sections = getInputSections(this);
  318     InputSection *isec = sections[i];
  341                              InputSection *section) {
  355   std::vector<InputSection *> v = getInputSections(this);
  356   InputSection *first = v.empty() ? nullptr : v[0];
  365     else if (auto *d = first->getLinkOrderDep())
  424 static bool compCtors(const InputSection *a, const InputSection *b) {
  424 static bool compCtors(const InputSection *a, const InputSection *b) {
  464 std::vector<InputSection *> getInputSections(OutputSection *os) {
  465   std::vector<InputSection *> ret;
tools/lld/ELF/OutputSections.h
   75   void commitSection(InputSection *isec);
  121 std::vector<InputSection *> getInputSections(OutputSection* os);
tools/lld/ELF/Relocations.cpp
  655       file->getSections()[sym.discardedSecIdx] != &InputSection::discarded)
 1414 static bool mergeCmp(const InputSection *a, const InputSection *b) {
 1414 static bool mergeCmp(const InputSection *a, const InputSection *b) {
 1567         std::vector<InputSection *> tmp;
 1581 ThunkSection *ThunkCreator::getISDThunkSec(OutputSection *os, InputSection *isec,
 1609 ThunkSection *ThunkCreator::getISThunkSec(InputSection *isec) {
 1622     InputSection *first = isd->sections.front();
 1623     InputSection *last = isd->sections.back();
 1672         for (const InputSection *isec : isd->sections) {
 1695 static bool isThunkSectionCompatible(InputSection *source,
 1704 std::pair<Thunk *, bool> ThunkCreator::getThunk(InputSection *isec,
 1782         for (InputSection *isec : isd->sections)
 1803               if (auto *tis = t->getTargetInputSection())
tools/lld/ELF/Relocations.h
  137   ThunkSection *getISDThunkSec(OutputSection *os, InputSection *isec,
  141   ThunkSection *getISThunkSec(InputSection *isec);
  145   std::pair<Thunk *, bool> getThunk(InputSection *isec, Relocation &rel,
  166   llvm::DenseMap<InputSection *, ThunkSection *> thunkedSections;
tools/lld/ELF/SyntheticSections.cpp
  254 InputSection *createInterpSection() {
  259   return make<InputSection>(nullptr, SHF_ALLOC, SHT_PROGBITS, 1, contents,
  444   for (auto *ds : sec->dependentSections)
  861           for (InputSection *isec : isd->sections) {
 1217 void DynamicSection<ELFT>::addInSec(int32_t tag, InputSection *sec) {
 1222 void DynamicSection<ELFT>::addInSecRelative(int32_t tag, InputSection *sec) {
 2543 static std::vector<InputSection *> getDebugInfoSections() {
 2544   std::vector<InputSection *> ret;
 2546     if (InputSection *isec = dyn_cast<InputSection>(s))
 2546     if (InputSection *isec = dyn_cast<InputSection>(s))
 2560 readAddressAreas(DWARFContext &dwarf, InputSection *sec) {
 2580       if (!s || s == &InputSection::discarded || !s->isLive())
 2585       auto *isec = cast<InputSection>(s);
 2585       auto *isec = cast<InputSection>(s);
 2705   std::vector<InputSection *> sections = getDebugInfoSections();
 3153 static InputSection *findExidxSection(InputSection *isec) {
 3153 static InputSection *findExidxSection(InputSection *isec) {
 3154   for (InputSection *d : isec->dependentSections)
 3160 static bool isValidExidxSectionDep(InputSection *isec) {
 3165 bool ARMExidxSyntheticSection::addSection(InputSection *isec) {
 3167     if (InputSection* dep = isec->getLinkOrderDep())
 3187       if (isa<InputSection>(ex) && ex->type == SHT_ARM_EXIDX)
 3204 static bool isDuplicateArmExidxSec(InputSection *prev, InputSection *cur) {
 3204 static bool isDuplicateArmExidxSec(InputSection *prev, InputSection *cur) {
 3271     std::vector<InputSection *> selectedSections;
 3276       InputSection *ex1 = findExidxSection(executableSections[prev]);
 3277       InputSection *ex2 = findExidxSection(executableSections[i]);
 3288   for (InputSection *isec : executableSections) {
 3289     if (InputSection *d = findExidxSection(isec)) {
 3301 InputSection *ARMExidxSyntheticSection::getLinkOrderDep() const {
 3320   for (InputSection *isec : executableSections) {
 3322     if (InputSection *d = findExidxSection(isec)) {
 3370 InputSection *ThunkSection::getTargetInputSection() const {
 3399       for (InputSection *isec : isd->sections)
 3413       for (InputSection *isec : isd->sections) {
tools/lld/ELF/SyntheticSections.h
   38 class SyntheticSection : public InputSection {
  477   void addInSec(int32_t tag, InputSection *sec);
  478   void addInSecRelative(int32_t tag, InputSection *sec);
  688     InputSection *section;
  705     InputSection *sec;
  993   bool addSection(InputSection *isec);
 1000   InputSection *getLinkOrderDep() const;
 1006   std::vector<InputSection *> exidxSections;
 1015   std::vector<InputSection *> executableSections;
 1021   InputSection *sentinel = nullptr;
 1038   InputSection *getTargetInputSection() const;
 1100 InputSection *createInterpSection();
 1151   InputSection *armAttributes;
tools/lld/ELF/Target.cpp
   98     auto *isec = cast<InputSection>(d);
   98     auto *isec = cast<InputSection>(d);
tools/lld/ELF/Target.h
   47   virtual void addPltHeaderSymbols(InputSection &isec) const {}
   48   virtual void addPltSymbols(InputSection &isec, uint64_t off) const {}
tools/lld/ELF/Thunks.cpp
   81   bool isCompatibleWith(const InputSection &isec,
  111   bool isCompatibleWith(const InputSection &isec,
  175   bool isCompatibleWith(const InputSection &isec,
  186   bool isCompatibleWith(const InputSection &isec,
  217   InputSection *getTargetInputSection() const override;
  228   InputSection *getTargetInputSection() const override;
  239   InputSection *getTargetInputSection() const override;
  244   PPC32PltCallStub(const InputSection &isec, const Relocation &rel, Symbol &dest)
  250   bool isCompatibleWith(const InputSection &isec, const Relocation &rel) const override;
  422 bool ARMThunk::isCompatibleWith(const InputSection &isec,
  460 bool ThumbThunk::isCompatibleWith(const InputSection &isec,
  560 bool ARMV5ABSLongThunk::isCompatibleWith(const InputSection &isec,
  586 bool ARMV5PILongThunk::isCompatibleWith(const InputSection &isec,
  658 InputSection *MipsThunk::getTargetInputSection() const {
  660   return dyn_cast<InputSection>(dr.section);
  682 InputSection *MicroMipsThunk::getTargetInputSection() const {
  684   return dyn_cast<InputSection>(dr.section);
  706 InputSection *MicroMipsR6Thunk::getTargetInputSection() const {
  708   return dyn_cast<InputSection>(dr.section);
  760 bool PPC32PltCallStub::isCompatibleWith(const InputSection &isec,
  898 static Thunk *addThunkPPC32(const InputSection &isec, const Relocation &rel, Symbol &s) {
  915 Thunk *addThunk(const InputSection &isec, Relocation &rel) {
tools/lld/ELF/Thunks.h
   47   virtual InputSection *getTargetInputSection() const { return nullptr; }
   51   virtual bool isCompatibleWith(const InputSection &,
   68 Thunk *addThunk(const InputSection &isec, Relocation &rel);
tools/lld/ELF/Writer.cpp
  101   if (auto *isec = dyn_cast<InputSection>(s)) {
  163         copy = make<InputSection>(cast<InputSection>(*s));
  163         copy = make<InputSection>(cast<InputSection>(*s));
  189                part.armExidx->addSection(cast<InputSection>(s))) {
  321       InputSection *sec = createInterpSection();
 1021     if (isec->isLive() && isa<InputSection>(isec) && (isec->flags & SHF_ALLOC))
 1027       for (InputSection *ex : part.armExidx->exidxSections)
 1041     InputSection *gotSection = in.gotPlt;
 1043       gotSection = in.mipsGot ? cast<InputSection>(in.mipsGot)
 1044                               : cast<InputSection>(in.got);
 1263   std::vector<InputSection *> unorderedSections;
 1264   std::vector<std::pair<InputSection *, int>> orderedSections;
 1267   for (InputSection *isec : isd->sections) {
 1316   for (InputSection *isec : makeArrayRef(unorderedSections).slice(0, insPt))
 1318   for (std::pair<InputSection *, int> p : orderedSections)
 1320   for (InputSection *isec : makeArrayRef(unorderedSections).slice(insPt))
 1403     for (InputSection *sec : getInputSections(os))
 1495 static bool compareByFilePosition(InputSection *a, InputSection *b) {
 1495 static bool compareByFilePosition(InputSection *a, InputSection *b) {
 1496   InputSection *la = a->getLinkOrderDep();
 1497   InputSection *lb = b->getLinkOrderDep();
 1519     std::vector<InputSection **> scriptSections;
 1520     std::vector<InputSection *> sections;
 1523         for (InputSection *&isec : isd->sections) {
 1527           InputSection *link = isec->getLinkOrderDep();
 1959       for (InputSection *isec : getInputSections(os))
tools/lld/include/lld/Common/Memory.h
   47   llvm::SpecificBumpPtrAllocator<T> alloc;
   52 template <typename T, typename... U> T *make(U &&... args) {
   52 template <typename T, typename... U> T *make(U &&... args) {
   53   static SpecificAlloc<T> alloc;
   54   return new (alloc.alloc.Allocate()) T(std::forward<U>(args)...);
usr/include/c++/7.4.0/bits/move.h
   72     constexpr _Tp&&
   83     constexpr _Tp&&
usr/include/c++/7.4.0/type_traits
 1633     { typedef _Tp   type; };
 1983     { typedef _Up     type; };