|
reference, declaration → definition
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; };