summaryrefslogtreecommitdiff
path: root/lld/ELF/SyntheticSections.h
diff options
context:
space:
mode:
Diffstat (limited to 'lld/ELF/SyntheticSections.h')
-rw-r--r--lld/ELF/SyntheticSections.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/lld/ELF/SyntheticSections.h b/lld/ELF/SyntheticSections.h
index f0a598dda51d..8ed82ba64a6e 100644
--- a/lld/ELF/SyntheticSections.h
+++ b/lld/ELF/SyntheticSections.h
@@ -364,7 +364,7 @@ private:
// Try to merge two GOTs. In case of success the `Dst` contains
// result of merging and the function returns true. In case of
- // ovwerflow the `Dst` is unchanged and the function returns false.
+ // overflow the `Dst` is unchanged and the function returns false.
bool tryMergeGots(FileGot & dst, FileGot & src, bool isPrimary);
};
@@ -683,9 +683,8 @@ public:
void addEntry(Symbol &sym);
size_t getNumEntries() const { return entries.size(); }
- size_t headerSize = 0;
+ size_t headerSize;
-private:
std::vector<const Symbol *> entries;
};
@@ -705,6 +704,16 @@ public:
void addEntry(Symbol &sym);
};
+class PPC32GlinkSection : public PltSection {
+public:
+ PPC32GlinkSection();
+ void writeTo(uint8_t *buf) override;
+ size_t getSize() const override;
+
+ std::vector<const Symbol *> canonical_plts;
+ static constexpr size_t footerSize = 64;
+};
+
// This is x86-only.
class IBTPltSection : public SyntheticSection {
public:
@@ -1037,7 +1046,7 @@ public:
std::vector<InputSection *> exidxSections;
private:
- size_t size;
+ size_t size = 0;
// Instead of storing pointers to the .ARM.exidx InputSections from
// InputObjects, we store pointers to the executable sections that need
@@ -1069,6 +1078,10 @@ public:
InputSection *getTargetInputSection() const;
bool assignOffsets();
+ // When true, round up reported size of section to 4 KiB. See comment
+ // in addThunkSection() for more details.
+ bool roundUpSizeForErrata = false;
+
private:
std::vector<Thunk *> thunks;
size_t size = 0;