[lld] r321238 - Convert a few more InputFiles to references.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 20 18:03:39 PST 2017
Author: rafael
Date: Wed Dec 20 18:03:39 2017
New Revision: 321238
URL: http://llvm.org/viewvc/llvm-project?rev=321238&view=rev
Log:
Convert a few more InputFiles to references.
We use null files in sections to represent linker created sections,
so ObjFile<ELFT> is never null.
Modified:
lld/trunk/ELF/InputFiles.cpp
lld/trunk/ELF/InputSection.cpp
lld/trunk/ELF/InputSection.h
Modified: lld/trunk/ELF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.cpp?rev=321238&r1=321237&r2=321238&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.cpp (original)
+++ lld/trunk/ELF/InputFiles.cpp Wed Dec 20 18:03:39 2017
@@ -477,7 +477,7 @@ InputSectionBase *ObjFile<ELFT>::createI
// dynamic loaders require the presence of an attribute section for dlopen
// to work. In a full implementation we would merge all attribute sections.
if (InX::ARMAttributes == nullptr) {
- InX::ARMAttributes = make<InputSection>(this, &Sec, Name);
+ InX::ARMAttributes = make<InputSection>(*this, Sec, Name);
return InX::ARMAttributes;
}
return &InputSection::Discarded;
@@ -496,7 +496,7 @@ InputSectionBase *ObjFile<ELFT>::createI
// If -r is given, we do not interpret or apply relocation
// but just copy relocation sections to output.
if (Config->Relocatable)
- return make<InputSection>(this, &Sec, Name);
+ return make<InputSection>(*this, Sec, Name);
if (Target->FirstRelocation)
fatal(toString(this) +
@@ -534,7 +534,7 @@ InputSectionBase *ObjFile<ELFT>::createI
// However, if -emit-relocs is given, we need to leave them in the output.
// (Some post link analysis tools need this information.)
if (Config->EmitRelocs) {
- InputSection *RelocSec = make<InputSection>(this, &Sec, Name);
+ InputSection *RelocSec = make<InputSection>(*this, Sec, Name);
// We will not emit relocation section if target was discarded.
Target->DependentSections.push_back(RelocSec);
return RelocSec;
@@ -581,11 +581,11 @@ InputSectionBase *ObjFile<ELFT>::createI
// .eh_frame_hdr section for runtime. So we handle them with a special
// class. For relocatable outputs, they are just passed through.
if (Name == ".eh_frame" && !Config->Relocatable)
- return make<EhInputSection>(this, &Sec, Name);
+ return make<EhInputSection>(*this, Sec, Name);
if (shouldMerge(Sec))
- return make<MergeInputSection>(this, &Sec, Name);
- return make<InputSection>(this, &Sec, Name);
+ return make<MergeInputSection>(*this, Sec, Name);
+ return make<InputSection>(*this, Sec, Name);
}
template <class ELFT>
Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=321238&r1=321237&r2=321238&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Wed Dec 20 18:03:39 2017
@@ -73,11 +73,11 @@ DenseMap<SectionBase *, int> elf::buildS
}
template <class ELFT>
-static ArrayRef<uint8_t> getSectionContents(ObjFile<ELFT> *File,
- const typename ELFT::Shdr *Hdr) {
- if (!File || Hdr->sh_type == SHT_NOBITS)
- return makeArrayRef<uint8_t>(nullptr, Hdr->sh_size);
- return check(File->getObj().getSectionContents(Hdr));
+static ArrayRef<uint8_t> getSectionContents(ObjFile<ELFT> &File,
+ const typename ELFT::Shdr &Hdr) {
+ if (Hdr.sh_type == SHT_NOBITS)
+ return makeArrayRef<uint8_t>(nullptr, Hdr.sh_size);
+ return check(File.getObj().getSectionContents(&Hdr));
}
InputSectionBase::InputSectionBase(InputFile *File, uint64_t Flags,
@@ -134,18 +134,18 @@ static uint64_t getType(uint64_t Type, S
}
template <class ELFT>
-InputSectionBase::InputSectionBase(ObjFile<ELFT> *File,
- const typename ELFT::Shdr *Hdr,
+InputSectionBase::InputSectionBase(ObjFile<ELFT> &File,
+ const typename ELFT::Shdr &Hdr,
StringRef Name, Kind SectionKind)
- : InputSectionBase(File, getFlags(Hdr->sh_flags),
- getType(Hdr->sh_type, Name), Hdr->sh_entsize,
- Hdr->sh_link, Hdr->sh_info, Hdr->sh_addralign,
+ : InputSectionBase(&File, getFlags(Hdr.sh_flags),
+ getType(Hdr.sh_type, Name), Hdr.sh_entsize, Hdr.sh_link,
+ Hdr.sh_info, Hdr.sh_addralign,
getSectionContents(File, Hdr), Name, SectionKind) {
// We reject object files having insanely large alignments even though
// they are allowed by the spec. I think 4GB is a reasonable limitation.
// We might want to relax this in the future.
- if (Hdr->sh_addralign > UINT32_MAX)
- fatal(toString(File) + ": section sh_addralign is too large");
+ if (Hdr.sh_addralign > UINT32_MAX)
+ fatal(toString(&File) + ": section sh_addralign is too large");
}
size_t InputSectionBase::getSize() const {
@@ -338,7 +338,7 @@ InputSection::InputSection(uint64_t Flag
Name, K) {}
template <class ELFT>
-InputSection::InputSection(ObjFile<ELFT> *F, const typename ELFT::Shdr *Header,
+InputSection::InputSection(ObjFile<ELFT> &F, const typename ELFT::Shdr &Header,
StringRef Name)
: InputSectionBase(F, Header, Name, InputSectionBase::Regular) {}
@@ -810,8 +810,8 @@ void InputSection::replace(InputSection
}
template <class ELFT>
-EhInputSection::EhInputSection(ObjFile<ELFT> *F,
- const typename ELFT::Shdr *Header,
+EhInputSection::EhInputSection(ObjFile<ELFT> &F,
+ const typename ELFT::Shdr &Header,
StringRef Name)
: InputSectionBase(F, Header, Name, InputSectionBase::EHFrame) {}
@@ -914,8 +914,8 @@ void MergeInputSection::splitNonStrings(
}
template <class ELFT>
-MergeInputSection::MergeInputSection(ObjFile<ELFT> *F,
- const typename ELFT::Shdr *Header,
+MergeInputSection::MergeInputSection(ObjFile<ELFT> &F,
+ const typename ELFT::Shdr &Header,
StringRef Name)
: InputSectionBase(F, Header, Name, InputSectionBase::Merge) {}
@@ -1004,13 +1004,13 @@ uint64_t MergeInputSection::getOffset(ui
return Piece.OutputOff + Addend;
}
-template InputSection::InputSection(ObjFile<ELF32LE> *, const ELF32LE::Shdr *,
+template InputSection::InputSection(ObjFile<ELF32LE> &, const ELF32LE::Shdr &,
StringRef);
-template InputSection::InputSection(ObjFile<ELF32BE> *, const ELF32BE::Shdr *,
+template InputSection::InputSection(ObjFile<ELF32BE> &, const ELF32BE::Shdr &,
StringRef);
-template InputSection::InputSection(ObjFile<ELF64LE> *, const ELF64LE::Shdr *,
+template InputSection::InputSection(ObjFile<ELF64LE> &, const ELF64LE::Shdr &,
StringRef);
-template InputSection::InputSection(ObjFile<ELF64BE> *, const ELF64BE::Shdr *,
+template InputSection::InputSection(ObjFile<ELF64BE> &, const ELF64BE::Shdr &,
StringRef);
template std::string InputSectionBase::getLocation<ELF32LE>(uint64_t);
@@ -1032,23 +1032,23 @@ template void InputSection::writeTo<ELF3
template void InputSection::writeTo<ELF64LE>(uint8_t *);
template void InputSection::writeTo<ELF64BE>(uint8_t *);
-template MergeInputSection::MergeInputSection(ObjFile<ELF32LE> *,
- const ELF32LE::Shdr *, StringRef);
-template MergeInputSection::MergeInputSection(ObjFile<ELF32BE> *,
- const ELF32BE::Shdr *, StringRef);
-template MergeInputSection::MergeInputSection(ObjFile<ELF64LE> *,
- const ELF64LE::Shdr *, StringRef);
-template MergeInputSection::MergeInputSection(ObjFile<ELF64BE> *,
- const ELF64BE::Shdr *, StringRef);
-
-template EhInputSection::EhInputSection(ObjFile<ELF32LE> *,
- const ELF32LE::Shdr *, StringRef);
-template EhInputSection::EhInputSection(ObjFile<ELF32BE> *,
- const ELF32BE::Shdr *, StringRef);
-template EhInputSection::EhInputSection(ObjFile<ELF64LE> *,
- const ELF64LE::Shdr *, StringRef);
-template EhInputSection::EhInputSection(ObjFile<ELF64BE> *,
- const ELF64BE::Shdr *, StringRef);
+template MergeInputSection::MergeInputSection(ObjFile<ELF32LE> &,
+ const ELF32LE::Shdr &, StringRef);
+template MergeInputSection::MergeInputSection(ObjFile<ELF32BE> &,
+ const ELF32BE::Shdr &, StringRef);
+template MergeInputSection::MergeInputSection(ObjFile<ELF64LE> &,
+ const ELF64LE::Shdr &, StringRef);
+template MergeInputSection::MergeInputSection(ObjFile<ELF64BE> &,
+ const ELF64BE::Shdr &, StringRef);
+
+template EhInputSection::EhInputSection(ObjFile<ELF32LE> &,
+ const ELF32LE::Shdr &, StringRef);
+template EhInputSection::EhInputSection(ObjFile<ELF32BE> &,
+ const ELF32BE::Shdr &, StringRef);
+template EhInputSection::EhInputSection(ObjFile<ELF64LE> &,
+ const ELF64LE::Shdr &, StringRef);
+template EhInputSection::EhInputSection(ObjFile<ELF64BE> &,
+ const ELF64BE::Shdr &, StringRef);
template void EhInputSection::split<ELF32LE>();
template void EhInputSection::split<ELF32BE>();
Modified: lld/trunk/ELF/InputSection.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.h?rev=321238&r1=321237&r2=321238&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.h (original)
+++ lld/trunk/ELF/InputSection.h Wed Dec 20 18:03:39 2017
@@ -93,7 +93,7 @@ protected:
class InputSectionBase : public SectionBase {
public:
template <class ELFT>
- InputSectionBase(ObjFile<ELFT> *File, const typename ELFT::Shdr *Header,
+ InputSectionBase(ObjFile<ELFT> &File, const typename ELFT::Shdr &Header,
StringRef Name, Kind SectionKind);
InputSectionBase(InputFile *File, uint64_t Flags, uint32_t Type,
@@ -216,7 +216,7 @@ static_assert(sizeof(SectionPiece) == 16
class MergeInputSection : public InputSectionBase {
public:
template <class ELFT>
- MergeInputSection(ObjFile<ELFT> *F, const typename ELFT::Shdr *Header,
+ MergeInputSection(ObjFile<ELFT> &F, const typename ELFT::Shdr &Header,
StringRef Name);
MergeInputSection(uint64_t Flags, uint32_t Type, uint64_t Entsize,
ArrayRef<uint8_t> Data, StringRef Name);
@@ -282,7 +282,7 @@ struct EhSectionPiece {
class EhInputSection : public InputSectionBase {
public:
template <class ELFT>
- EhInputSection(ObjFile<ELFT> *F, const typename ELFT::Shdr *Header,
+ EhInputSection(ObjFile<ELFT> &F, const typename ELFT::Shdr &Header,
StringRef Name);
static bool classof(const SectionBase *S) { return S->kind() == EHFrame; }
template <class ELFT> void split();
@@ -304,7 +304,7 @@ public:
InputSection(uint64_t Flags, uint32_t Type, uint32_t Alignment,
ArrayRef<uint8_t> Data, StringRef Name, Kind K = Regular);
template <class ELFT>
- InputSection(ObjFile<ELFT> *F, const typename ELFT::Shdr *Header,
+ InputSection(ObjFile<ELFT> &F, const typename ELFT::Shdr &Header,
StringRef Name);
// Write this section to a mmap'ed file, assuming Buf is pointing to
More information about the llvm-commits
mailing list