summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2016-03-13 05:06:50 +0000
committerRui Ueyama <ruiu@google.com>2016-03-13 05:06:50 +0000
commitfc467e77b8c07b0cdef8b0193d4e99640c4eb84d (patch)
treec27a06de52eebb4476ab4b456648d172cccffb4c
parentcb1d96138586a033238496e6ec1fb06140a57dd7 (diff)
downloadbcm5719-llvm-fc467e77b8c07b0cdef8b0193d4e99640c4eb84d.tar.gz
bcm5719-llvm-fc467e77b8c07b0cdef8b0193d4e99640c4eb84d.zip
Use RelTy instead of Elf_Rel_Impl<ELFT, isRela> for readability.
llvm-svn: 263368
-rw-r--r--lld/ELF/InputSection.cpp31
-rw-r--r--lld/ELF/InputSection.h25
-rw-r--r--lld/ELF/OutputSections.cpp7
-rw-r--r--lld/ELF/OutputSections.h8
-rw-r--r--lld/ELF/Writer.cpp14
5 files changed, 34 insertions, 51 deletions
diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp
index d634e7ce44f..b529957c862 100644
--- a/lld/ELF/InputSection.cpp
+++ b/lld/ELF/InputSection.cpp
@@ -113,19 +113,18 @@ InputSectionBase<ELFT> *InputSection<ELFT>::getRelocatedSection() {
// to update symbol table offset and section index for each relocation. So we
// copy relocations one by one.
template <class ELFT>
-template <bool isRela>
+template <class RelTy>
void InputSection<ELFT>::copyRelocations(uint8_t *Buf,
- RelIteratorRange<isRela> Rels) {
- typedef Elf_Rel_Impl<ELFT, isRela> RelType;
+ iterator_range<const RelTy *> Rels) {
InputSectionBase<ELFT> *RelocatedSection = getRelocatedSection();
- for (const RelType &Rel : Rels) {
+ for (const RelTy &Rel : Rels) {
uint32_t SymIndex = Rel.getSymbol(Config->Mips64EL);
uint32_t Type = Rel.getType(Config->Mips64EL);
SymbolBody &Body = this->File->getSymbolBody(SymIndex).repl();
- RelType *P = reinterpret_cast<RelType *>(Buf);
- Buf += sizeof(RelType);
+ RelTy *P = reinterpret_cast<RelTy *>(Buf);
+ Buf += sizeof(RelTy);
P->r_offset = RelocatedSection->getOffset(Rel.r_offset);
P->setSymbolAndType(Body.DynsymIndex, Type, Config->Mips64EL);
@@ -149,11 +148,10 @@ static uint32_t getMipsPairType(const RelTy *Rel, const SymbolBody &Sym) {
}
template <class ELFT>
-template <bool isRela>
-uint8_t *InputSectionBase<ELFT>::findMipsPairedReloc(
- uint8_t *Buf,
- const Elf_Rel_Impl<ELFT, isRela> *Rel,
- const Elf_Rel_Impl<ELFT, isRela> *End) {
+template <class RelTy>
+uint8_t *InputSectionBase<ELFT>::findMipsPairedReloc(uint8_t *Buf,
+ const RelTy *Rel,
+ const RelTy *End) {
uint32_t SymIndex = Rel->getSymbol(Config->Mips64EL);
SymbolBody &Sym = File->getSymbolBody(SymIndex).repl();
uint32_t Type = getMipsPairType(Rel, Sym);
@@ -162,10 +160,10 @@ uint8_t *InputSectionBase<ELFT>::findMipsPairedReloc(
// itself and addend of paired relocation. ABI requires to compute such
// combined addend in case of REL relocation record format only.
// See p. 4-17 at ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
- if (isRela || Type == R_MIPS_NONE)
+ if (RelTy::IsRela || Type == R_MIPS_NONE)
return nullptr;
- for (const Elf_Rel_Impl<ELFT, isRela> *RI = Rel; RI != End; ++RI) {
+ for (const RelTy *RI = Rel; RI != End; ++RI) {
if (RI->getType(Config->Mips64EL) != Type)
continue;
if (RI->getSymbol(Config->Mips64EL) != SymIndex)
@@ -179,13 +177,12 @@ uint8_t *InputSectionBase<ELFT>::findMipsPairedReloc(
}
template <class ELFT>
-template <bool isRela>
+template <class RelTy>
void InputSectionBase<ELFT>::relocate(uint8_t *Buf, uint8_t *BufEnd,
- RelIteratorRange<isRela> Rels) {
- typedef Elf_Rel_Impl<ELFT, isRela> RelType;
+ iterator_range<const RelTy *> Rels) {
size_t Num = Rels.end() - Rels.begin();
for (size_t I = 0; I < Num; ++I) {
- const RelType &RI = *(Rels.begin() + I);
+ const RelTy &RI = *(Rels.begin() + I);
uintX_t Offset = getOffset(RI.r_offset);
if (Offset == (uintX_t)-1)
continue;
diff --git a/lld/ELF/InputSection.h b/lld/ELF/InputSection.h
index 71c7060a219..3549bd5de82 100644
--- a/lld/ELF/InputSection.h
+++ b/lld/ELF/InputSection.h
@@ -75,19 +75,14 @@ public:
InputSectionBase<ELFT> *getRelocTarget(const Elf_Rel &Rel) const;
InputSectionBase<ELFT> *getRelocTarget(const Elf_Rela &Rel) const;
- template <bool isRela>
- using RelIteratorRange =
- llvm::iterator_range<const llvm::object::Elf_Rel_Impl<ELFT, isRela> *>;
-
- template <bool isRela>
- void relocate(uint8_t *Buf, uint8_t *BufEnd, RelIteratorRange<isRela> Rels);
+ template <class RelTy>
+ void relocate(uint8_t *Buf, uint8_t *BufEnd,
+ llvm::iterator_range<const RelTy *> Rels);
private:
- template <bool isRela>
- uint8_t *
- findMipsPairedReloc(uint8_t *Buf,
- const llvm::object::Elf_Rel_Impl<ELFT, isRela> *Rel,
- const llvm::object::Elf_Rel_Impl<ELFT, isRela> *End);
+ template <class RelTy>
+ uint8_t *findMipsPairedReloc(uint8_t *Buf, const RelTy *Rel,
+ const RelTy *End);
};
template <class ELFT>
@@ -173,12 +168,8 @@ public:
InputSectionBase<ELFT> *getRelocatedSection();
private:
- template <bool isRela>
- using RelIteratorRange =
- llvm::iterator_range<const llvm::object::Elf_Rel_Impl<ELFT, isRela> *>;
-
- template <bool isRela>
- void copyRelocations(uint8_t *Buf, RelIteratorRange<isRela> Rels);
+ template <class RelTy>
+ void copyRelocations(uint8_t *Buf, llvm::iterator_range<const RelTy *> Rels);
// Called by ICF to merge two input sections.
void replace(InputSection<ELFT> *Other);
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp
index 5163fe23a73..1f72e123cd3 100644
--- a/lld/ELF/OutputSections.cpp
+++ b/lld/ELF/OutputSections.cpp
@@ -1089,10 +1089,9 @@ static typename ELFFile<ELFT>::uintX_t readEntryLength(ArrayRef<uint8_t> D) {
}
template <class ELFT>
-template <bool IsRela>
-void EHOutputSection<ELFT>::addSectionAux(
- EHInputSection<ELFT> *S,
- iterator_range<const Elf_Rel_Impl<ELFT, IsRela> *> Rels) {
+template <class RelTy>
+void EHOutputSection<ELFT>::addSectionAux(EHInputSection<ELFT> *S,
+ iterator_range<const RelTy *> Rels) {
const endianness E = ELFT::TargetEndianness;
S->OutSec = this;
diff --git a/lld/ELF/OutputSections.h b/lld/ELF/OutputSections.h
index 415762a6a7f..2cc339c718f 100644
--- a/lld/ELF/OutputSections.h
+++ b/lld/ELF/OutputSections.h
@@ -324,11 +324,9 @@ public:
EHOutputSection(StringRef Name, uint32_t Type, uintX_t Flags);
void writeTo(uint8_t *Buf) override;
- template <bool IsRela>
- void addSectionAux(
- EHInputSection<ELFT> *S,
- llvm::iterator_range<const llvm::object::Elf_Rel_Impl<ELFT, IsRela> *>
- Rels);
+ template <class RelTy>
+ void addSectionAux(EHInputSection<ELFT> *S,
+ llvm::iterator_range<const RelTy *> Rels);
void addSection(InputSectionBase<ELFT> *S) override;
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 9e063da6e87..ca6cc66d602 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -62,9 +62,9 @@ private:
void addPredefinedSections();
bool needsGot();
- template <bool isRela>
+ template <class RelTy>
void scanRelocs(InputSectionBase<ELFT> &C,
- iterator_range<const Elf_Rel_Impl<ELFT, isRela> *> Rels);
+ iterator_range<const RelTy *> Rels);
void scanRelocs(InputSection<ELFT> &C);
void scanRelocs(InputSectionBase<ELFT> &S, const Elf_Shdr &RelSec);
@@ -310,13 +310,11 @@ static bool handleTlsRelocation(uint32_t Type, SymbolBody &Body,
// complicates things for the dynamic linker and means we would have to reserve
// space for the extra PT_LOAD even if we end up not using it.
template <class ELFT>
-template <bool isRela>
-void Writer<ELFT>::scanRelocs(
- InputSectionBase<ELFT> &C,
- iterator_range<const Elf_Rel_Impl<ELFT, isRela> *> Rels) {
- typedef Elf_Rel_Impl<ELFT, isRela> RelType;
+template <class RelTy>
+void Writer<ELFT>::scanRelocs(InputSectionBase<ELFT> &C,
+ iterator_range<const RelTy *> Rels) {
const elf::ObjectFile<ELFT> &File = *C.getFile();
- for (const RelType &RI : Rels) {
+ for (const RelTy &RI : Rels) {
uint32_t SymIndex = RI.getSymbol(Config->Mips64EL);
SymbolBody &OrigBody = File.getSymbolBody(SymIndex);
SymbolBody &Body = OrigBody.repl();
OpenPOWER on IntegriCloud