|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
Derived Classes
tools/lld/include/lld/Core/Simple.h 114 class SimpleReference : public Reference,
tools/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp 738 class NormalizedReference : public lld::Reference {
References
tools/lld/include/lld/Core/DefinedAtom.h 294 const Reference *operator*() const {
298 const Reference *operator->() const {
326 virtual void addReference(Reference::KindNamespace ns,
327 Reference::KindArch arch,
328 Reference::KindValue kindValue, uint64_t off,
329 const Atom *target, Reference::Addend a) {
365 virtual const Reference *derefIterator(const void *iter) const = 0;
tools/lld/include/lld/Core/Reader.h 92 bool referenceKindFromString(StringRef inputStr, Reference::KindNamespace &ns,
93 Reference::KindArch &a,
94 Reference::KindValue &value) const;
98 bool referenceKindToString(Reference::KindNamespace ns, Reference::KindArch a,
98 bool referenceKindToString(Reference::KindNamespace ns, Reference::KindArch a,
99 Reference::KindValue value, StringRef &) const;
118 Reference::KindValue value;
125 void addKindTable(Reference::KindNamespace ns, Reference::KindArch arch,
125 void addKindTable(Reference::KindNamespace ns, Reference::KindArch arch,
130 Reference::KindNamespace ns;
131 Reference::KindArch arch;
tools/lld/include/lld/Core/Simple.h 114 class SimpleReference : public Reference,
117 SimpleReference(Reference::KindNamespace ns, Reference::KindArch arch,
117 SimpleReference(Reference::KindNamespace ns, Reference::KindArch arch,
118 Reference::KindValue value, uint64_t off, const Atom *t,
119 Reference::Addend a)
123 : Reference(Reference::KindNamespace::all, Reference::KindArch::all, 0),
123 : Reference(Reference::KindNamespace::all, Reference::KindArch::all, 0),
189 const Reference *derefIterator(const void *it) const override {
200 void addReference(Reference::KindNamespace ns,
201 Reference::KindArch arch,
202 Reference::KindValue kindValue, uint64_t off,
203 const Atom *target, Reference::Addend a) override {
tools/lld/lib/Core/Reader.cpp 53 {Reference::kindLayoutAfter, "layout-after"},
54 {Reference::kindAssociate, "associate"},
58 addKindTable(Reference::KindNamespace::all, Reference::KindArch::all,
58 addKindTable(Reference::KindNamespace::all, Reference::KindArch::all,
70 void Registry::addKindTable(Reference::KindNamespace ns,
71 Reference::KindArch arch,
78 Reference::KindNamespace &ns,
79 Reference::KindArch &arch,
80 Reference::KindValue &value) const {
94 bool Registry::referenceKindToString(Reference::KindNamespace ns,
95 Reference::KindArch arch,
96 Reference::KindValue value,
tools/lld/lib/Core/Resolver.cpp 300 for (const Reference *ref : *defAtom) {
305 if (ref->kindNamespace() == lld::Reference::KindNamespace::all &&
306 ref->kindValue() == lld::Reference::kindAssociate) {
327 for (const Reference *ref : *defAtom)
336 static bool isBackref(const Reference *ref) {
337 if (ref->kindNamespace() != lld::Reference::KindNamespace::all)
339 return (ref->kindValue() == lld::Reference::kindLayoutAfter);
357 for (const Reference *ref : *defAtom)
tools/lld/lib/ReaderWriter/MachO/ArchHandler.cpp 50 bool ArchHandler::isLazyPointer(const Reference &ref) {
53 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
157 if (ref->kindNamespace() == Reference::KindNamespace::mach_o &&
tools/lld/lib/ReaderWriter/MachO/ArchHandler.h 41 virtual Reference::KindArch kindArch() = 0;
45 virtual bool isCallSite(const Reference &) = 0;
48 virtual bool isGOTAccess(const Reference &, bool &canBypassGOT) {
53 virtual bool isTLVAccess(const Reference &) const { return false; }
56 virtual void updateReferenceToTLV(const Reference *) {}
59 virtual bool isNonCallBranch(const Reference &) = 0;
62 virtual void updateReferenceToGOT(const Reference *, bool targetIsNowGOT) {}
70 virtual Reference::KindValue imageOffsetKind() = 0;
75 virtual Reference::KindValue imageOffsetKindIndirect() = 0;
84 virtual Reference::KindValue unwindRefToPersonalityFunctionKind() = 0;
87 virtual Reference::KindValue unwindRefToCIEKind() = 0;
92 virtual Reference::KindValue unwindRefToFunctionKind() = 0;
98 virtual Reference::KindValue unwindRefToEhFrameKind() = 0;
102 virtual Reference::KindValue pointerKind() = 0;
108 virtual bool isPointer(const Reference &) = 0;
112 virtual bool isLazyPointer(const Reference &);
116 virtual Reference::KindValue lazyImmediateLocationKind() = 0;
124 const lld::Atom **, Reference::Addend *)>
143 Reference::KindValue *kind,
145 Reference::Addend *addend) = 0;
159 Reference::KindValue *kind,
161 Reference::Addend *addend) = 0;
190 const Reference &ref,
205 virtual bool isDataInCodeTransition(Reference::KindValue refKind) {
211 virtual Reference::KindValue dataInCodeTransitionStart(
218 virtual Reference::KindValue dataInCodeTransitionEnd(
236 Reference::KindArch arch;
tools/lld/lib/ReaderWriter/MachO/ArchHandler_arm.cpp 35 Reference::KindArch kindArch() override { return Reference::KindArch::ARM; }
35 Reference::KindArch kindArch() override { return Reference::KindArch::ARM; }
38 bool isCallSite(const Reference &) override;
39 bool isPointer(const Reference &) override;
41 bool isNonCallBranch(const Reference &) override;
46 Reference::KindValue imageOffsetKind() override {
49 Reference::KindValue imageOffsetKindIndirect() override {
53 Reference::KindValue unwindRefToPersonalityFunctionKind() override {
57 Reference::KindValue unwindRefToCIEKind() override {
61 Reference::KindValue unwindRefToFunctionKind() override {
65 Reference::KindValue unwindRefToEhFrameKind() override {
69 Reference::KindValue lazyImmediateLocationKind() override {
73 Reference::KindValue pointerKind() override {
88 Reference::KindValue *kind,
90 Reference::Addend *addend) override;
99 Reference::KindValue *kind,
101 Reference::Addend *addend) override;
111 const Reference &ref,
119 bool isDataInCodeTransition(Reference::KindValue refKind) override {
131 Reference::KindValue dataInCodeTransitionStart(
136 Reference::KindValue dataInCodeTransitionEnd(
152 enum ArmKind : Reference::KindValue {
200 void applyFixupFinal(const Reference &ref, uint8_t *location,
205 void applyFixupRelocatable(const Reference &ref, uint8_t *location,
244 { Reference::KindArch::ARM, pointer32, 0, 0 },
245 { Reference::KindArch::ARM, lazyPointer, 0, 0 },
248 { Reference::KindArch::ARM, pointer32, 0, 0 },
259 { Reference::KindArch::ARM, delta32, 12, 0 },
267 { Reference::KindArch::ARM, lazyImmediateLocation, 8, 0 },
268 { Reference::KindArch::ARM, arm_b24, 4, 0 },
289 { Reference::KindArch::ARM, delta32, 28, 0xC },
291 { Reference::KindArch::ARM, delta32, 32, 0x04 },
300 bool ArchHandler_arm::isCallSite(const Reference &ref) {
312 bool ArchHandler_arm::isPointer(const Reference &ref) {
316 bool ArchHandler_arm::isNonCallBranch(const Reference &ref) {
341 for (const Reference *ref : stubAtom) {
345 for (const Reference *ref2 : *lp) {
528 FindAtomBySymbolIndex atomFromSymbolIndex, Reference::KindValue *kind,
529 const lld::Atom **target, Reference::Addend *addend) {
644 Reference::KindValue *kind,
646 Reference::Addend *addend) {
798 Reference::Addend offsetInTo;
799 Reference::Addend offsetInFrom;
904 void ArchHandler_arm::applyFixupFinal(const Reference &ref, uint8_t *loc,
909 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
1023 for (const Reference *ref : atom) {
1066 void ArchHandler_arm::applyFixupRelocatable(const Reference &ref, uint8_t *loc,
1072 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
1184 const Reference &ref,
1189 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
1396 atom.addReference(Reference::KindNamespace::mach_o,
1397 Reference::KindArch::ARM, modeThumbCode, 0, &atom, 0);
1402 for (const Reference *ref : atom) {
1405 if (ref->kindNamespace() != Reference::KindNamespace::mach_o)
1419 addReference(Reference::KindNamespace::mach_o, Reference::KindArch::ARM,
1419 addReference(Reference::KindNamespace::mach_o, Reference::KindArch::ARM,
1421 addReference(Reference::KindNamespace::mach_o, Reference::KindArch::ARM,
1421 addReference(Reference::KindNamespace::mach_o, Reference::KindArch::ARM,
1466 addReference(Reference::KindNamespace::mach_o, Reference::KindArch::ARM,
1466 addReference(Reference::KindNamespace::mach_o, Reference::KindArch::ARM,
tools/lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp 38 Reference::KindArch kindArch() override {
39 return Reference::KindArch::AArch64;
43 bool isGOTAccess(const Reference &ref, bool &canBypassGOT) override {
44 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
63 void updateReferenceToGOT(const Reference *ref, bool targetNowGOT) override {
91 bool isCallSite(const Reference &) override;
92 bool isNonCallBranch(const Reference &) override {
96 bool isPointer(const Reference &) override;
102 Reference::KindValue imageOffsetKind() override {
105 Reference::KindValue imageOffsetKindIndirect() override {
109 Reference::KindValue unwindRefToPersonalityFunctionKind() override {
113 Reference::KindValue unwindRefToCIEKind() override {
117 Reference::KindValue unwindRefToFunctionKind() override {
121 Reference::KindValue unwindRefToEhFrameKind() override {
125 Reference::KindValue pointerKind() override {
129 Reference::KindValue lazyImmediateLocationKind() override {
143 Reference::KindValue *kind,
145 Reference::Addend *addend) override;
154 Reference::KindValue *kind,
156 Reference::Addend *addend) override;
170 const Reference &ref,
180 enum Arm64Kind : Reference::KindValue {
219 void applyFixupFinal(const Reference &ref, uint8_t *location,
224 void applyFixupRelocatable(const Reference &ref, uint8_t *location,
271 { Reference::KindArch::AArch64, pointer64, 0, 0 },
272 { Reference::KindArch::AArch64, lazyPointer, 0, 0 },
275 { Reference::KindArch::AArch64, pointer64, 0, 0 },
285 { Reference::KindArch::AArch64, page21, 0, 0 },
293 { Reference::KindArch::AArch64, lazyImmediateLocation, 8, 0 },
294 { Reference::KindArch::AArch64, branch26, 4, 0 },
309 { Reference::KindArch::AArch64, page21, 0, 0 },
311 { Reference::KindArch::AArch64, page21, 12, 0 },
315 bool ArchHandler_arm64::isCallSite(const Reference &ref) {
316 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
322 bool ArchHandler_arm64::isPointer(const Reference &ref) {
323 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
326 Reference::KindValue kind = ref.kindValue();
381 FindAtomBySymbolIndex atomFromSymbolIndex, Reference::KindValue *kind,
382 const lld::Atom **target, Reference::Addend *addend) {
476 FindAtomBySymbolIndex atomFromSymbolIndex, Reference::KindValue *kind,
477 const lld::Atom **target, Reference::Addend *addend) {
563 for (const Reference *ref : atom) {
583 void ArchHandler_arm64::applyFixupFinal(const Reference &ref, uint8_t *loc,
589 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
689 void ArchHandler_arm64::applyFixupRelocatable(const Reference &ref,
695 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
775 const DefinedAtom &atom, uint64_t atomSectionOffset, const Reference &ref,
779 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
tools/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp 37 Reference::KindArch kindArch() override { return Reference::KindArch::x86; }
37 Reference::KindArch kindArch() override { return Reference::KindArch::x86; }
40 bool isCallSite(const Reference &) override;
41 bool isNonCallBranch(const Reference &) override {
45 bool isPointer(const Reference &) override;
52 Reference::KindValue imageOffsetKind() override {
56 Reference::KindValue imageOffsetKindIndirect() override {
60 Reference::KindValue unwindRefToPersonalityFunctionKind() override {
64 Reference::KindValue unwindRefToCIEKind() override {
68 Reference::KindValue unwindRefToFunctionKind() override{
72 Reference::KindValue lazyImmediateLocationKind() override {
76 Reference::KindValue unwindRefToEhFrameKind() override {
80 Reference::KindValue pointerKind() override {
94 Reference::KindValue *kind,
96 Reference::Addend *addend) override;
105 Reference::KindValue *kind,
107 Reference::Addend *addend) override;
117 const Reference &ref,
123 bool isDataInCodeTransition(Reference::KindValue refKind) override {
127 Reference::KindValue dataInCodeTransitionStart(
132 Reference::KindValue dataInCodeTransitionEnd(
141 enum X86Kind : Reference::KindValue {
163 void applyFixupFinal(const Reference &ref, uint8_t *location,
167 void applyFixupRelocatable(const Reference &ref, uint8_t *location,
197 { Reference::KindArch::x86, pointer32, 0, 0 },
198 { Reference::KindArch::x86, lazyPointer, 0, 0 },
201 { Reference::KindArch::x86, pointer32, 0, 0 },
209 { Reference::KindArch::x86, abs32, 2, 0 },
216 { Reference::KindArch::x86, lazyImmediateLocation, 1, 0 },
217 { Reference::KindArch::x86, branch32, 6, 0 },
229 { Reference::KindArch::x86, abs32, 1, 0 },
231 { Reference::KindArch::x86, abs32, 7, 0 },
235 bool ArchHandler_x86::isCallSite(const Reference &ref) {
239 bool ArchHandler_x86::isPointer(const Reference &ref) {
257 Reference::KindValue *kind,
259 Reference::Addend *addend) {
356 Reference::KindValue *kind,
358 Reference::Addend *addend) {
365 Reference::Addend offsetInTo;
366 Reference::Addend offsetInFrom;
419 for (const Reference *ref : atom) {
439 void ArchHandler_x86::applyFixupFinal(const Reference &ref, uint8_t *loc,
443 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
481 void ArchHandler_x86::applyFixupRelocatable(const Reference &ref,
486 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
554 const Reference &ref,
559 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
tools/lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp 37 Reference::KindArch kindArch() override {
38 return Reference::KindArch::x86_64;
42 bool isGOTAccess(const Reference &ref, bool &canBypassGOT) override {
43 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
61 bool isTLVAccess(const Reference &ref) const override {
67 void updateReferenceToTLV(const Reference *ref) override {
75 void updateReferenceToGOT(const Reference *ref, bool targetNowGOT) override {
99 Reference::KindValue imageOffsetKind() override {
103 Reference::KindValue imageOffsetKindIndirect() override {
107 Reference::KindValue unwindRefToPersonalityFunctionKind() override {
111 Reference::KindValue unwindRefToCIEKind() override {
115 Reference::KindValue unwindRefToFunctionKind() override{
119 Reference::KindValue lazyImmediateLocationKind() override {
123 Reference::KindValue unwindRefToEhFrameKind() override {
127 Reference::KindValue pointerKind() override {
137 bool isNonCallBranch(const Reference &) override {
141 bool isCallSite(const Reference &) override;
142 bool isPointer(const Reference &) override;
151 Reference::KindValue *kind,
153 Reference::Addend *addend) override;
162 Reference::KindValue *kind,
164 Reference::Addend *addend) override;
178 const Reference &ref,
184 bool isDataInCodeTransition(Reference::KindValue refKind) override {
188 Reference::KindValue dataInCodeTransitionStart(
193 Reference::KindValue dataInCodeTransitionEnd(
202 enum X86_64Kind: Reference::KindValue {
248 Reference::KindValue kindFromReloc(const normalized::Relocation &reloc);
250 void applyFixupFinal(const Reference &ref, uint8_t *location,
255 void applyFixupRelocatable(const Reference &ref, uint8_t *location,
300 { Reference::KindArch::x86_64, pointer64, 0, 0 },
301 { Reference::KindArch::x86_64, lazyPointer, 0, 0 },
304 { Reference::KindArch::x86_64, pointer64, 0, 0 },
312 { Reference::KindArch::x86_64, ripRel32, 2, 0 },
319 { Reference::KindArch::x86_64, lazyImmediateLocation, 1, 0 },
320 { Reference::KindArch::x86_64, branch32, 6, 0 },
333 { Reference::KindArch::x86_64, ripRel32, 3, 0 },
335 { Reference::KindArch::x86_64, ripRel32, 11, 0 },
340 bool ArchHandler_x86_64::isCallSite(const Reference &ref) {
341 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
347 bool ArchHandler_x86_64::isPointer(const Reference &ref) {
348 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
351 Reference::KindValue kind = ref.kindValue();
359 Reference::KindValue
402 Reference::KindValue *kind,
404 Reference::Addend *addend) {
481 Reference::KindValue *kind,
483 Reference::Addend *addend) {
553 for (const Reference *ref : atom) {
574 const Reference &ref, uint8_t *loc, uint64_t fixupAddress,
577 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
656 void ArchHandler_x86_64::applyFixupRelocatable(const Reference &ref,
661 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
767 const Reference &ref,
772 if (ref.kindNamespace() != Reference::KindNamespace::mach_o)
tools/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp 244 Reference::Addend addend = 0) {
245 addReference(Reference::KindNamespace::mach_o, _archHandler.kindArch(),
250 Reference::Addend addend = 0) {
251 addReference(Reference::KindNamespace::mach_o, _archHandler.kindArch(),
256 addReference(Reference::KindNamespace::mach_o, _archHandler.kindArch(),
399 for (const Reference *ref : *atom) {
507 for (const auto *ref : *cfiAtom) {
tools/lld/lib/ReaderWriter/MachO/GOTPass.cpp 103 for (const Reference *ref : *atom) {
164 gotEntry->addReference(Reference::KindNamespace::mach_o, nlInfo.arch,
tools/lld/lib/ReaderWriter/MachO/LayoutPass.cpp 79 for (const Reference *ref : *atom) {
341 for (const Reference *r : *ai) {
342 if (r->kindNamespace() != lld::Reference::KindNamespace::all ||
343 r->kindValue() != lld::Reference::kindLayoutAfter)
tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp 586 addKindTable(Reference::KindNamespace::mach_o, ctx.archHandler().kindArch(),
tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp 1149 for (const Reference *ref : *lpAtom) {
1158 for (const Reference *ref : *stubAtom) {
1177 for (const Reference *ref : *info.atom) {
1319 for (const Reference *ref : *atom) {
1390 for (const Reference *ref : *info.atom) {
1391 if (ref->kindNamespace() != Reference::KindNamespace::mach_o)
1434 for (const Reference *ref : *atom) {
1499 const Reference *helperRef = nullptr;
1500 for (const Reference *hr : *da) {
tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileToAtoms.cpp 370 prevAtom->addReference(Reference::KindNamespace::all,
371 Reference::KindArch::all,
372 Reference::kindLayoutAfter, 0, atom, 0);
505 uint64_t addr, Reference::Addend &addend) {
617 Reference::Addend addend = 0;
618 Reference::KindValue kind;
681 inAtom->addReference(Reference::KindNamespace::mach_o,
736 Reference::Addend addend;
1156 Reference::Addend addend;
1159 atom->addReference(Reference::KindNamespace::mach_o, handler.kindArch(),
1205 const Reference *Ref = *CurrentRef;
1239 Reference::Addend addend;
1242 atom->addReference(Reference::KindNamespace::mach_o, handler.kindArch(),
1520 atom->addReference(Reference::KindNamespace::mach_o, handler->kindArch(),
1536 atom->addReference(Reference::KindNamespace::mach_o, handler->kindArch(),
tools/lld/lib/ReaderWriter/MachO/ShimPass.cpp 52 for (const Reference *ref : *atom) {
91 const Reference *ref) {
tools/lld/lib/ReaderWriter/MachO/StubsPass.cpp 224 for (const Reference *ref : *atom) {
314 for (const Reference *ref : _targetToUses[target]) {
332 bool isCallSite(const Reference &ref) {
339 atom->addReference(Reference::KindNamespace::mach_o,
347 atom->addReference(Reference::KindNamespace::mach_o, refInfo.arch,
357 atom->addReference(Reference::KindNamespace::mach_o,
363 llvm::SmallVector<const Reference *, 8>> TargetToUses;
tools/lld/lib/ReaderWriter/MachO/TLVPass.cpp 78 for (const Reference *ref : *atom) {
123 tlvpEntry->addReference(Reference::KindNamespace::mach_o, nlInfo.arch,
tools/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp 84 for (const lld::Reference *ref : *atom) {
242 Reference::KindNamespace ns;
243 Reference::KindArch arch;
244 Reference::KindValue value;
738 class NormalizedReference : public lld::Reference {
741 : lld::Reference(lld::Reference::KindNamespace::all,
742 lld::Reference::KindArch::all, 0),
745 NormalizedReference(IO &io, const lld::Reference *ref)
756 const lld::Reference *denormalize(IO &io) {
775 static StringRef targetName(IO &io, const lld::Reference *ref);
791 static void mapping(IO &io, const lld::Reference *&ref) {
793 MappingNormalizationHeap<NormalizedReference, const lld::Reference *> keys(
825 for (const lld::Reference *r : *atom)
899 const lld::Reference *derefIterator(const void *it) const override {
910 void addReference(Reference::KindNamespace ns,
911 Reference::KindArch arch,
912 Reference::KindValue kindValue, uint64_t off,
913 const Atom *target, Reference::Addend a) override {
938 std::vector<const lld::Reference *> _references;
1264 typedef MappingTraits<const lld::Reference *>::NormalizedReference
1266 for (const lld::Reference *ref : _references) {
1279 IO &io, const lld::Reference *ref) {