summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ELF
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/ReaderWriter/ELF')
-rw-r--r--lld/lib/ReaderWriter/ELF/Atoms.h115
-rw-r--r--lld/lib/ReaderWriter/ELF/DefaultLayout.h16
-rw-r--r--lld/lib/ReaderWriter/ELF/DynamicFile.h5
-rw-r--r--lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp4
-rw-r--r--lld/lib/ReaderWriter/ELF/File.h56
-rw-r--r--lld/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp3
-rw-r--r--lld/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h4
-rw-r--r--lld/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp13
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp19
-rw-r--r--lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.cpp9
-rw-r--r--lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h6
-rw-r--r--lld/lib/ReaderWriter/ELF/Reader.cpp59
-rw-r--r--lld/lib/ReaderWriter/ELF/SectionChunks.h14
-rw-r--r--lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp5
-rw-r--r--lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.h7
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp6
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp4
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp6
18 files changed, 148 insertions, 203 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Atoms.h b/lld/lib/ReaderWriter/ELF/Atoms.h
index 8e2d1caf269..382e071335d 100644
--- a/lld/lib/ReaderWriter/ELF/Atoms.h
+++ b/lld/lib/ReaderWriter/ELF/Atoms.h
@@ -40,27 +40,22 @@ template <class ELFT> class ELFReference LLVM_FINAL : public Reference {
typedef llvm::object::Elf_Rel_Impl<ELFT, false> Elf_Rel;
typedef llvm::object::Elf_Rel_Impl<ELFT, true> Elf_Rela;
public:
-
- ELFReference(const Elf_Rela *rela, uint64_t off, Reference::KindArch arch,
- uint16_t relocType, uint32_t idx)
- : Reference(Reference::KindNamespace::ELF, arch, relocType),
- _target(nullptr), _targetSymbolIndex(idx),
- _offsetInAtom(off), _addend(rela->r_addend) {
- }
-
- ELFReference(const Elf_Rel *rel, uint64_t off, Reference::KindArch arch,
- uint16_t relocType, uint32_t idx)
- : Reference(Reference::KindNamespace::ELF, arch, relocType),
- _target(nullptr), _targetSymbolIndex(idx),
- _offsetInAtom(off), _addend(0) {
- }
+ ELFReference(const Elf_Rela *rela, uint64_t off, Reference::KindArch arch,
+ uint16_t relocType, uint32_t idx)
+ : Reference(Reference::KindNamespace::ELF, arch, relocType),
+ _target(nullptr), _targetSymbolIndex(idx), _offsetInAtom(off),
+ _addend(rela->r_addend) {}
+
+ ELFReference(const Elf_Rel *rel, uint64_t off, Reference::KindArch arch,
+ uint16_t relocType, uint32_t idx)
+ : Reference(Reference::KindNamespace::ELF, arch, relocType),
+ _target(nullptr), _targetSymbolIndex(idx), _offsetInAtom(off),
+ _addend(0) {}
ELFReference(uint32_t edgeKind)
- : Reference(Reference::KindNamespace::all,
- Reference::KindArch::all, edgeKind),
- _target(nullptr), _targetSymbolIndex(0),
- _offsetInAtom(0), _addend(0) {
- }
+ : Reference(Reference::KindNamespace::all, Reference::KindArch::all,
+ edgeKind),
+ _target(nullptr), _targetSymbolIndex(0), _offsetInAtom(0), _addend(0) {}
virtual uint64_t offsetInAtom() const { return _offsetInAtom; }
@@ -169,33 +164,19 @@ class ELFDefinedAtom LLVM_FINAL : public DefinedAtom {
typedef llvm::object::Elf_Shdr_Impl<ELFT> Elf_Shdr;
public:
- ELFDefinedAtom(const ELFFile<ELFT> &file,
- StringRef symbolName,
- StringRef sectionName,
- const Elf_Sym *symbol,
- const Elf_Shdr *section,
- ArrayRef<uint8_t> contentData,
- unsigned int referenceStart,
- unsigned int referenceEnd,
- std::vector<ELFReference<ELFT>*> &referenceList)
-
- : _owningFile(file)
- , _symbolName(symbolName)
- , _sectionName(sectionName)
- , _symbol(symbol)
- , _section(section)
- , _contentData(contentData)
- , _referenceStartIndex(referenceStart)
- , _referenceEndIndex(referenceEnd)
- , _referenceList(referenceList)
- , _targetAtomHandler(nullptr)
- , _contentType(typeUnknown)
- , _permissions(permUnknown) {
- }
+ ELFDefinedAtom(const ELFFile<ELFT> &file, StringRef symbolName,
+ StringRef sectionName, const Elf_Sym *symbol,
+ const Elf_Shdr *section, ArrayRef<uint8_t> contentData,
+ unsigned int referenceStart, unsigned int referenceEnd,
+ std::vector<ELFReference<ELFT> *> &referenceList)
+ : _owningFile(file), _symbolName(symbolName), _sectionName(sectionName),
+ _symbol(symbol), _section(section), _contentData(contentData),
+ _referenceStartIndex(referenceStart), _referenceEndIndex(referenceEnd),
+ _referenceList(referenceList), _targetAtomHandler(nullptr),
+ _contentType(typeUnknown), _permissions(permUnknown) {}
+
+ ~ELFDefinedAtom() {}
- ~ELFDefinedAtom() {
- }
-
virtual const ELFFile<ELFT> &file() const {
return _owningFile;
}
@@ -219,7 +200,7 @@ public:
// Treat target defined common symbols
if ((_symbol->st_shndx > llvm::ELF::SHN_LOPROC &&
_symbol->st_shndx < llvm::ELF::SHN_HIPROC)) {
- if (!_targetAtomHandler)
+ if (!_targetAtomHandler)
_targetAtomHandler = &_owningFile.targetHandler()->targetAtomHandler();
if (_targetAtomHandler->getType(_symbol) == llvm::ELF::STT_COMMON)
return (uint64_t) _symbol->st_size;
@@ -255,7 +236,7 @@ public:
// mergeTentative
if ((_symbol->st_shndx > llvm::ELF::SHN_LOPROC &&
_symbol->st_shndx < llvm::ELF::SHN_HIPROC)) {
- if (!_targetAtomHandler)
+ if (!_targetAtomHandler)
_targetAtomHandler = &_owningFile.targetHandler()->targetAtomHandler();
if (_targetAtomHandler->getType(_symbol) == llvm::ELF::STT_COMMON)
return mergeAsTentative;
@@ -664,8 +645,8 @@ public:
virtual ContentType contentType() const {
if (_symbol->st_shndx >= llvm::ELF::SHN_LORESERVE &&
_symbol->st_shndx <= llvm::ELF::SHN_HIOS)
- return _owningFile.targetHandler()->targetAtomHandler().
- contentType(nullptr, _symbol);
+ return _owningFile.targetHandler()->targetAtomHandler().contentType(
+ nullptr, _symbol);
return typeZeroFill;
}
@@ -788,41 +769,38 @@ private:
const Elf_Sym *_symbol;
};
-
class SimpleELFDefinedAtom : public SimpleDefinedAtom {
public:
- SimpleELFDefinedAtom(const File &f) : SimpleDefinedAtom(f) { }
+ SimpleELFDefinedAtom(const File &f) : SimpleDefinedAtom(f) {}
- void addReferenceELF(Reference::KindArch arch,
- uint16_t kindValue, uint64_t off, const Atom *target,
- Reference::Addend addend) {
- this->addReference(Reference::KindNamespace::ELF, arch, kindValue,
- off, target, addend);
+ void addReferenceELF(Reference::KindArch arch, uint16_t kindValue,
+ uint64_t off, const Atom *target,
+ Reference::Addend addend) {
+ this->addReference(Reference::KindNamespace::ELF, arch, kindValue, off,
+ target, addend);
}
-
+
void addReferenceELF_Hexagon(uint16_t relocType, uint64_t off, const Atom *t,
- Reference::Addend a) {
+ Reference::Addend a) {
this->addReferenceELF(Reference::KindArch::Hexagon, relocType, off, t, a);
}
-
+
void addReferenceELF_x86_64(uint16_t relocType, uint64_t off, const Atom *t,
Reference::Addend a) {
this->addReferenceELF(Reference::KindArch::x86_64, relocType, off, t, a);
}
-
+
void addReferenceELF_PowerPC(uint16_t relocType, uint64_t off, const Atom *t,
Reference::Addend a) {
this->addReferenceELF(Reference::KindArch::PowerPC, relocType, off, t, a);
}
-
+
void addReferenceELF_Mips(uint16_t relocType, uint64_t off, const Atom *t,
- Reference::Addend a) {
+ Reference::Addend a) {
this->addReferenceELF(Reference::KindArch::Mips, relocType, off, t, a);
}
};
-
-
/// \brief Atom which represents an object for which a COPY relocation will be
/// generated.
class ObjectAtom : public SimpleELFDefinedAtom {
@@ -861,8 +839,7 @@ class GOTAtom : public SimpleELFDefinedAtom {
public:
GOTAtom(const File &f, StringRef secName)
- : SimpleELFDefinedAtom(f), _section(secName) {
- }
+ : SimpleELFDefinedAtom(f), _section(secName) {}
virtual Scope scope() const { return scopeTranslationUnit; }
@@ -897,8 +874,7 @@ class PLTAtom : public SimpleELFDefinedAtom {
public:
PLTAtom(const File &f, StringRef secName)
- : SimpleELFDefinedAtom(f), _section(secName) {
- }
+ : SimpleELFDefinedAtom(f), _section(secName) {}
virtual Scope scope() const { return scopeTranslationUnit; }
@@ -1020,8 +996,7 @@ class InitFiniAtom : public SimpleELFDefinedAtom {
public:
InitFiniAtom(const File &f, StringRef secName)
- : SimpleELFDefinedAtom(f), _section(secName) {
- }
+ : SimpleELFDefinedAtom(f), _section(secName) {}
virtual Scope scope() const { return scopeGlobal; }
diff --git a/lld/lib/ReaderWriter/ELF/DefaultLayout.h b/lld/lib/ReaderWriter/ELF/DefaultLayout.h
index adce4b41925..93a6a40d697 100644
--- a/lld/lib/ReaderWriter/ELF/DefaultLayout.h
+++ b/lld/lib/ReaderWriter/ELF/DefaultLayout.h
@@ -332,12 +332,12 @@ Layout::SectionOrder DefaultLayout<ELFT>::getSectionOrder(
case DefinedAtom::typeResolver:
case DefinedAtom::typeCode:
return llvm::StringSwitch<Layout::SectionOrder>(name)
- .StartsWith(".eh_frame_hdr", ORDER_EH_FRAMEHDR)
- .StartsWith(".eh_frame", ORDER_EH_FRAME)
- .StartsWith(".init", ORDER_INIT)
- .StartsWith(".fini", ORDER_FINI)
- .StartsWith(".hash", ORDER_HASH)
- .Default(ORDER_TEXT);
+ .StartsWith(".eh_frame_hdr", ORDER_EH_FRAMEHDR)
+ .StartsWith(".eh_frame", ORDER_EH_FRAME)
+ .StartsWith(".init", ORDER_INIT)
+ .StartsWith(".fini", ORDER_FINI)
+ .StartsWith(".hash", ORDER_HASH)
+ .Default(ORDER_TEXT);
case DefinedAtom::typeConstant:
return ORDER_RODATA;
@@ -355,8 +355,8 @@ Layout::SectionOrder DefaultLayout<ELFT>::getSectionOrder(
case DefinedAtom::typeGOT:
return llvm::StringSwitch<Layout::SectionOrder>(name)
- .StartsWith(".got.plt", ORDER_GOT_PLT)
- .Default(ORDER_GOT);
+ .StartsWith(".got.plt", ORDER_GOT_PLT)
+ .Default(ORDER_GOT);
case DefinedAtom::typeStub:
return ORDER_PLT;
diff --git a/lld/lib/ReaderWriter/ELF/DynamicFile.h b/lld/lib/ReaderWriter/ELF/DynamicFile.h
index cd0f0d5b4f1..2ba6dfdaa50 100644
--- a/lld/lib/ReaderWriter/ELF/DynamicFile.h
+++ b/lld/lib/ReaderWriter/ELF/DynamicFile.h
@@ -24,7 +24,7 @@ namespace lld {
namespace elf {
template <class ELFT> class DynamicFile LLVM_FINAL : public SharedLibraryFile {
public:
- static ErrorOr<std::unique_ptr<DynamicFile> >
+ static ErrorOr<std::unique_ptr<DynamicFile>>
create(std::unique_ptr<llvm::MemoryBuffer> mb, bool useShlibUndefines) {
std::unique_ptr<DynamicFile> file(
new DynamicFile(mb->getBufferIdentifier()));
@@ -104,8 +104,7 @@ public:
}
private:
- DynamicFile(StringRef name)
- : SharedLibraryFile(name) {}
+ DynamicFile(StringRef name) : SharedLibraryFile(name) {}
mutable llvm::BumpPtrAllocator _alloc;
std::unique_ptr<llvm::object::ELFFile<ELFT>> _objFile;
diff --git a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
index f7fd148f07f..d660ca9f621 100644
--- a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
@@ -35,8 +35,8 @@ public:
}
};
-ELFLinkingContext::ELFLinkingContext(llvm::Triple triple,
- std::unique_ptr<TargetHandlerBase> targetHandler)
+ELFLinkingContext::ELFLinkingContext(
+ llvm::Triple triple, std::unique_ptr<TargetHandlerBase> targetHandler)
: _outputELFType(elf::ET_EXEC), _triple(triple),
_targetHandler(std::move(targetHandler)), _baseAddress(0),
_isStaticExecutable(false), _noInhibitExec(false),
diff --git a/lld/lib/ReaderWriter/ELF/File.h b/lld/lib/ReaderWriter/ELF/File.h
index 619a09c011c..dbf8a6f747a 100644
--- a/lld/lib/ReaderWriter/ELF/File.h
+++ b/lld/lib/ReaderWriter/ELF/File.h
@@ -119,14 +119,14 @@ template <class ELFT> class ELFFile : public File {
public:
ELFFile(StringRef name)
- : File(name, kindObject), _ordinal(0),
- _doStringsMerge(false), _targetHandler(nullptr) {}
+ : File(name, kindObject), _ordinal(0), _doStringsMerge(false),
+ _targetHandler(nullptr) {}
ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,
TargetHandlerBase *handler, error_code &ec)
- : File(mb->getBufferIdentifier(), kindObject),
- _ordinal(0), _doStringsMerge(atomizeStrings),
- _targetHandler(reinterpret_cast<TargetHandler<ELFT>*>(handler)) {
+ : File(mb->getBufferIdentifier(), kindObject), _ordinal(0),
+ _doStringsMerge(atomizeStrings),
+ _targetHandler(reinterpret_cast<TargetHandler<ELFT> *>(handler)) {
_objFile.reset(new llvm::object::ELFFile<ELFT>(mb.release(), ec));
if (ec)
@@ -162,23 +162,22 @@ public:
Reference::KindArch kindArch() {
switch (_objFile->getHeader()->e_machine) {
- case llvm::ELF::EM_X86_64:
- return Reference::KindArch::x86_64;
- case llvm::ELF::EM_386:
- return Reference::KindArch::x86;
- case llvm::ELF::EM_ARM:
- return Reference::KindArch::ARM;
- case llvm::ELF::EM_PPC:
- return Reference::KindArch::PowerPC;
- case llvm::ELF::EM_HEXAGON:
- return Reference::KindArch::Hexagon;
- case llvm::ELF::EM_MIPS:
- return Reference::KindArch::Mips;
+ case llvm::ELF::EM_X86_64:
+ return Reference::KindArch::x86_64;
+ case llvm::ELF::EM_386:
+ return Reference::KindArch::x86;
+ case llvm::ELF::EM_ARM:
+ return Reference::KindArch::ARM;
+ case llvm::ELF::EM_PPC:
+ return Reference::KindArch::PowerPC;
+ case llvm::ELF::EM_HEXAGON:
+ return Reference::KindArch::Hexagon;
+ case llvm::ELF::EM_MIPS:
+ return Reference::KindArch::Mips;
}
llvm_unreachable("unsupported e_machine value");
}
-
/// \brief Read input sections and populate necessary data structures
/// to read them later and create atoms
error_code createAtomizableSections() {
@@ -510,9 +509,7 @@ public:
return _absoluteAtoms;
}
- TargetHandler<ELFT> *targetHandler() const {
- return _targetHandler;
- }
+ TargetHandler<ELFT> *targetHandler() const { return _targetHandler; }
Atom *findAtom(const Elf_Sym *symbol) {
return _symbolToAtomMapping.lookup(symbol);
@@ -536,9 +533,9 @@ private:
continue;
bool isMips64EL = _objFile->isMips64EL();
uint32_t symbolIndex = rai.getSymbol(isMips64EL);
- auto *ERef = new (_readerStorage)
- ELFReference<ELFT>(&rai, rai.r_offset - symbol->st_value,
- kindArch(), rai.getType(isMips64EL), symbolIndex);
+ auto *ERef = new (_readerStorage) ELFReference<ELFT>(
+ &rai, rai.r_offset - symbol->st_value, kindArch(),
+ rai.getType(isMips64EL), symbolIndex);
_references.push_back(ERef);
}
}
@@ -552,9 +549,9 @@ private:
continue;
bool isMips64EL = _objFile->isMips64EL();
uint32_t symbolIndex = ri.getSymbol(isMips64EL);
- auto *ERef = new (_readerStorage)
- ELFReference<ELFT>(&ri, ri.r_offset - symbol->st_value,
- kindArch(), ri.getType(isMips64EL), symbolIndex);
+ auto *ERef = new (_readerStorage) ELFReference<ELFT>(
+ &ri, ri.r_offset - symbol->st_value, kindArch(),
+ ri.getType(isMips64EL), symbolIndex);
// Read the addend from the section contents
// TODO : We should move the way lld reads relocations totally from
// ELFFile
@@ -576,7 +573,7 @@ private:
/// cached value of target relocation handler
assert(_targetHandler);
const TargetRelocationHandler<ELFT> &targetRelocationHandler =
- _targetHandler->getRelocationHandler();
+ _targetHandler->getRelocationHandler();
for (auto &ri : _references) {
if (ri->kindNamespace() == lld::Reference::KindNamespace::ELF) {
@@ -689,7 +686,8 @@ private:
// not. Let the TargetHandler to make a decision if that's the case.
if (isTargetSpecificAtom(nullptr, symbol)) {
assert(_targetHandler);
- TargetAtomHandler<ELFT> &atomHandler = _targetHandler->targetAtomHandler();
+ TargetAtomHandler<ELFT> &atomHandler =
+ _targetHandler->targetAtomHandler();
return atomHandler.getType(symbol) == llvm::ELF::STT_COMMON;
}
return symbol->getType() == llvm::ELF::STT_COMMON ||
diff --git a/lld/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp
index 8ab100b4889..6fb956fcba7 100644
--- a/lld/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp
@@ -77,7 +77,8 @@ public:
Atom *finiFunctionAtom = new (_allocator) SimpleUndefinedAtom(*this, name);
HexagonFiniAtom *finiAtom =
(new (_allocator) HexagonFiniAtom(*this, name));
- finiAtom->addReferenceELF_Hexagon(llvm::ELF::R_HEX_32, 0, finiFunctionAtom, 0);
+ finiAtom->addReferenceELF_Hexagon(llvm::ELF::R_HEX_32, 0, finiFunctionAtom,
+ 0);
finiAtom->setOrdinal(_ordinal++);
addAtom(*finiFunctionAtom);
addAtom(*finiAtom);
diff --git a/lld/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
index c97d70d0e67..85eba3595cf 100644
--- a/lld/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
+++ b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
@@ -31,8 +31,8 @@ public:
virtual error_code
applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,
const lld::AtomLayout &, const Reference &) const;
-
- private:
+
+private:
const HexagonTargetHandler &_targetHandler;
const HexagonTargetLayout<HexagonELFType> &_targetLayout;
};
diff --git a/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp
index cfa17b00f94..6edd214f0c5 100644
--- a/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp
@@ -108,8 +108,7 @@ public:
class ELFPassFile : public SimpleFile {
public:
- ELFPassFile(const ELFLinkingContext &eti)
- : SimpleFile("ELFPassFile") {
+ ELFPassFile(const ELFLinkingContext &eti) : SimpleFile("ELFPassFile") {
setOrdinal(eti.getNextOrdinalAndIncrement());
}
@@ -291,8 +290,8 @@ public:
error_code handlePLT32(const Reference &ref) {
// Turn this into a PC32 to the PLT entry.
- assert(ref.kindNamespace() == Reference::KindNamespace::ELF);
- assert(ref.kindArch() == Reference::KindArch::Hexagon);
+ assert(ref.kindNamespace() == Reference::KindNamespace::ELF);
+ assert(ref.kindArch() == Reference::KindArch::Hexagon);
const_cast<Reference &>(ref).setKindValue(R_HEX_B22_PCREL);
const_cast<Reference &>(ref).setTarget(getPLTEntry(ref.target()));
return error_code::success();
@@ -307,9 +306,8 @@ void elf::HexagonLinkingContext::addPasses(PassManager &pm) {
}
void HexagonTargetHandler::registerRelocationNames(Registry &registry) {
- registry.addKindTable(Reference::KindNamespace::ELF,
- Reference::KindArch::Hexagon,
- kindStrings);
+ registry.addKindTable(Reference::KindNamespace::ELF,
+ Reference::KindArch::Hexagon, kindStrings);
}
const Registry::KindStrings HexagonTargetHandler::kindStrings[] = {
@@ -407,4 +405,3 @@ const Registry::KindStrings HexagonTargetHandler::kindStrings[] = {
LLD_KIND_STRING_ENTRY(R_HEX_TPREL_11_X),
LLD_KIND_STRING_END
};
-
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp b/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp
index 64cce0dd879..2a3c8967ea8 100644
--- a/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp
@@ -175,20 +175,13 @@ void MipsTargetHandler::finalizeSymbolValues() {
}
void MipsTargetHandler::registerRelocationNames(Registry &registry) {
- registry.addKindTable(Reference::KindNamespace::ELF,
- Reference::KindArch::Mips,
- kindStrings);
+ registry.addKindTable(Reference::KindNamespace::ELF,
+ Reference::KindArch::Mips, kindStrings);
}
-
const Registry::KindStrings MipsTargetHandler::kindStrings[] = {
- LLD_KIND_STRING_ENTRY(R_MIPS_NONE),
- LLD_KIND_STRING_ENTRY(R_MIPS_32),
- LLD_KIND_STRING_ENTRY(R_MIPS_HI16),
- LLD_KIND_STRING_ENTRY(R_MIPS_LO16),
- LLD_KIND_STRING_ENTRY(R_MIPS_GOT16),
- LLD_KIND_STRING_ENTRY(R_MIPS_CALL16),
- LLD_KIND_STRING_ENTRY(R_MIPS_JALR),
- LLD_KIND_STRING_END
+ LLD_KIND_STRING_ENTRY(R_MIPS_NONE), LLD_KIND_STRING_ENTRY(R_MIPS_32),
+ LLD_KIND_STRING_ENTRY(R_MIPS_HI16), LLD_KIND_STRING_ENTRY(R_MIPS_LO16),
+ LLD_KIND_STRING_ENTRY(R_MIPS_GOT16), LLD_KIND_STRING_ENTRY(R_MIPS_CALL16),
+ LLD_KIND_STRING_ENTRY(R_MIPS_JALR), LLD_KIND_STRING_END
};
- \ No newline at end of file
diff --git a/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.cpp b/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.cpp
index 7f72c8c3936..d5a94803864 100644
--- a/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.cpp
@@ -67,11 +67,9 @@ PPCTargetHandler::PPCTargetHandler(PPCLinkingContext &targetInfo)
: DefaultTargetHandler(targetInfo), _relocationHandler(targetInfo),
_targetLayout(targetInfo) {}
-
void PPCTargetHandler::registerRelocationNames(Registry &registry) {
- registry.addKindTable(Reference::KindNamespace::ELF,
- Reference::KindArch::PowerPC,
- kindStrings);
+ registry.addKindTable(Reference::KindNamespace::ELF,
+ Reference::KindArch::PowerPC, kindStrings);
}
const Registry::KindStrings PPCTargetHandler::kindStrings[] = {
@@ -130,6 +128,3 @@ const Registry::KindStrings PPCTargetHandler::kindStrings[] = {
LLD_KIND_STRING_ENTRY(R_PPC_REL16_HA),
LLD_KIND_STRING_END
};
-
-
-
diff --git a/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h b/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
index 426a76ca056..8f1de5c3349 100644
--- a/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
+++ b/lld/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
@@ -35,10 +35,8 @@ public:
PPCTargetHandler(PPCLinkingContext &targetInfo);
virtual void registerRelocationNames(Registry &registry);
-
- virtual TargetLayout<PPCELFType> &targetLayout() {
- return _targetLayout;
- }
+
+ virtual TargetLayout<PPCELFType> &targetLayout() { return _targetLayout; }
virtual const PPCTargetRelocationHandler &getRelocationHandler() const {
return _relocationHandler;
diff --git a/lld/lib/ReaderWriter/ELF/Reader.cpp b/lld/lib/ReaderWriter/ELF/Reader.cpp
index 43993ca51ca..ccfd8ab80f2 100644
--- a/lld/lib/ReaderWriter/ELF/Reader.cpp
+++ b/lld/lib/ReaderWriter/ELF/Reader.cpp
@@ -56,8 +56,8 @@ struct DynamicFileCreateELFTraits {
typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;
template <class ELFT>
- static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,
- bool useUndefines) {
+ static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,
+ bool useUndefines) {
return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);
}
};
@@ -67,81 +67,81 @@ struct ELFFileCreateELFTraits {
template <class ELFT>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,
- bool atomizeStrings,
- TargetHandlerBase *handler,
+ bool atomizeStrings, TargetHandlerBase *handler,
lld::error_code &ec) {
- return std::unique_ptr<lld::File>(
- new lld::elf::ELFFile<ELFT>(std::move(mb), atomizeStrings, handler,ec));
+ return std::unique_ptr<lld::File>(new lld::elf::ELFFile<ELFT>(
+ std::move(mb), atomizeStrings, handler, ec));
}
};
class ELFObjectReader : public Reader {
public:
- ELFObjectReader(bool atomizeStrings, TargetHandlerBase* handler)
- : _atomizeStrings(atomizeStrings), _handler(handler) { }
+ ELFObjectReader(bool atomizeStrings, TargetHandlerBase *handler)
+ : _atomizeStrings(atomizeStrings), _handler(handler) {}
- virtual bool canParse(file_magic magic, StringRef,const MemoryBuffer&) const {
+ virtual bool canParse(file_magic magic, StringRef,
+ const MemoryBuffer &) const {
return (magic == llvm::sys::fs::file_magic::elf_relocatable);
}
-
+
virtual error_code
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
std::vector<std::unique_ptr<File>> &result) const {
error_code ec;
std::size_t maxAlignment =
- 1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));
+ 1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));
std::unique_ptr<File> f(createELF<ELFFileCreateELFTraits>(
- getElfArchType(&*mb), maxAlignment, std::move(mb),
- _atomizeStrings, _handler, ec));
+ getElfArchType(&*mb), maxAlignment, std::move(mb), _atomizeStrings,
+ _handler, ec));
if (ec)
return ec;
result.push_back(std::move(f));
return error_code::success();
}
+
private:
- bool _atomizeStrings;
+ bool _atomizeStrings;
TargetHandlerBase *_handler;
};
-
class ELFDSOReader : public Reader {
public:
- ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) { }
+ ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}
- virtual bool canParse(file_magic magic, StringRef, const MemoryBuffer&) const{
+ virtual bool canParse(file_magic magic, StringRef,
+ const MemoryBuffer &) const {
return (magic == llvm::sys::fs::file_magic::elf_shared_object);
}
-
+
virtual error_code
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
std::vector<std::unique_ptr<File>> &result) const {
std::size_t maxAlignment =
- 1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));
- auto f = createELF<DynamicFileCreateELFTraits>(
- getElfArchType(&*mb), maxAlignment,
- std::move(mb), _useUndefines);
+ 1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));
+ auto f = createELF<DynamicFileCreateELFTraits>(
+ getElfArchType(&*mb), maxAlignment, std::move(mb), _useUndefines);
if (!f)
- return f;
+ return f;
result.push_back(std::move(*f));
return error_code::success();
}
+
private:
bool _useUndefines;
};
} // anonymous
-
-// This dynamic registration of a handler causes support for all ELF
-// architectures to be pulled into the linker. If we want to support making a
+// This dynamic registration of a handler causes support for all ELF
+// architectures to be pulled into the linker. If we want to support making a
// linker that only supports one ELF architecture, we'd need to change this
// to have a different registration method for each architecture.
-void Registry::addSupportELFObjects(bool atomizeStrings,
- TargetHandlerBase *handler) {
+void Registry::addSupportELFObjects(bool atomizeStrings,
+ TargetHandlerBase *handler) {
// Tell registry about the ELF object file parser.
add(std::unique_ptr<Reader>(new ELFObjectReader(atomizeStrings, handler)));
-
+
// Tell registry about the relocation name to number mapping for this arch.
handler->registerRelocationNames(*this);
}
@@ -150,5 +150,4 @@ void Registry::addSupportELFDynamicSharedObjects(bool useShlibUndefines) {
add(std::unique_ptr<Reader>(new ELFDSOReader(useShlibUndefines)));
}
-
} // end namespace lld
diff --git a/lld/lib/ReaderWriter/ELF/SectionChunks.h b/lld/lib/ReaderWriter/ELF/SectionChunks.h
index ae7fed26697..bcdcd909dd1 100644
--- a/lld/lib/ReaderWriter/ELF/SectionChunks.h
+++ b/lld/lib/ReaderWriter/ELF/SectionChunks.h
@@ -42,7 +42,7 @@ template <class ELFT> class Section : public Chunk<ELFT> {
public:
Section(const ELFLinkingContext &context, StringRef name,
typename Chunk<ELFT>::Kind k = Chunk<ELFT>::Kind::ELFSection)
- : Chunk<ELFT>(name, k, context), _parent(nullptr), _flags(0), _entSize(0),
+ : Chunk<ELFT>(name, k, context), _parent(nullptr), _flags(0), _entSize(0),
_type(0), _link(0), _info(0), _segmentType(SHT_NULL) {}
/// \brief Modify the section contents before assigning virtual addresses
@@ -961,12 +961,12 @@ public:
r->r_addend =
writer->addressOfAtom(rel.second->target()) + rel.second->addend();
dest += sizeof(Elf_Rela);
- DEBUG_WITH_TYPE(
- "ELFRelocationTable",
- llvm::dbgs() << rel.second->kindValue() << " relocation at "
- << rel.first->name() << "@" << r->r_offset << " to "
- << rel.second->target()->name() << "@" << r->r_addend
- << "\n";);
+ DEBUG_WITH_TYPE("ELFRelocationTable",
+ llvm::dbgs() << rel.second->kindValue()
+ << " relocation at " << rel.first->name()
+ << "@" << r->r_offset << " to "
+ << rel.second->target()->name() << "@"
+ << r->r_addend << "\n";);
}
}
diff --git a/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp b/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp
index 3e64a7314e9..ba66416ae28 100644
--- a/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp
@@ -31,8 +31,6 @@ static int relocPC32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {
return 0;
}
-
-
const Registry::KindStrings X86TargetHandler::kindStrings[] = {
LLD_KIND_STRING_ENTRY(R_386_NONE),
LLD_KIND_STRING_ENTRY(R_386_32),
@@ -79,8 +77,7 @@ const Registry::KindStrings X86TargetHandler::kindStrings[] = {
};
void X86TargetHandler::registerRelocationNames(Registry &registry) {
- registry.addKindTable(Reference::KindNamespace::ELF,
- Reference::KindArch::x86,
+ registry.addKindTable(Reference::KindNamespace::ELF, Reference::KindArch::x86,
kindStrings);
}
diff --git a/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.h b/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
index 137190d0ce5..86fbeacf8e9 100644
--- a/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
+++ b/lld/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
@@ -29,9 +29,8 @@ public:
virtual error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,
const lld::AtomLayout &,
const Reference &) const;
-
- static const Registry::KindStrings kindStrings[];
+ static const Registry::KindStrings kindStrings[];
};
class X86TargetHandler LLVM_FINAL
@@ -41,9 +40,7 @@ public:
virtual void registerRelocationNames(Registry &registry);
- virtual TargetLayout<X86ELFType> &targetLayout() {
- return _targetLayout;
- }
+ virtual TargetLayout<X86ELFType> &targetLayout() { return _targetLayout; }
virtual const X86TargetRelocationHandler &getRelocationHandler() const {
return _relocationHandler;
diff --git a/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp b/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
index 056a3eabb04..69e7924c447 100644
--- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
+++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
@@ -69,7 +69,7 @@ public:
Atom *initFunctionAtom = new (_allocator) SimpleUndefinedAtom(*this, name);
X86_64InitAtom *initAtom =
(new (_allocator) X86_64InitAtom(*this, name));
- initAtom->addReferenceELF_x86_64(llvm::ELF::R_X86_64_64, 0,
+ initAtom->addReferenceELF_x86_64(llvm::ELF::R_X86_64_64, 0,
initFunctionAtom, 0);
initAtom->setOrdinal(_ordinal++);
addAtom(*initFunctionAtom);
@@ -80,8 +80,8 @@ public:
Atom *finiFunctionAtom = new (_allocator) SimpleUndefinedAtom(*this, name);
X86_64FiniAtom *finiAtom =
(new (_allocator) X86_64FiniAtom(*this, name));
- finiAtom->addReferenceELF_x86_64(llvm::ELF::R_X86_64_64, 0,
- finiFunctionAtom, 0);
+ finiAtom->addReferenceELF_x86_64(llvm::ELF::R_X86_64_64, 0,
+ finiFunctionAtom, 0);
finiAtom->setOrdinal(_ordinal++);
addAtom(*finiFunctionAtom);
addAtom(*finiAtom);
diff --git a/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp b/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp
index a8f703a2f5f..bab665c8d00 100644
--- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp
@@ -47,8 +47,6 @@ static void reloc32S(uint8_t *location, uint64_t P, uint64_t S, int64_t A) {
// TODO: Make sure that the result sign extends to the 64bit value.
}
-
-
int64_t X86_64TargetRelocationHandler::relocAddend(const Reference &ref) const {
if (ref.kindNamespace() != Reference::KindNamespace::ELF)
return false;
@@ -94,7 +92,7 @@ error_code X86_64TargetRelocationHandler::applyRelocation(
case R_X86_64_TPOFF32: {
_tlsSize =
_context.getTargetHandler<X86_64ELFType>().targetLayout().getTLSSize();
- if (ref.kindValue() == R_X86_64_TPOFF32 ||
+ if (ref.kindValue() == R_X86_64_TPOFF32 ||
ref.kindValue() == R_X86_64_DTPOFF32) {
int32_t result = (int32_t)(targetVAddress - _tlsSize);
*reinterpret_cast<llvm::support::little32_t *>(location) = result;
diff --git a/lld/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp b/lld/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp
index c9b2bec8e70..a553b2dd22f 100644
--- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp
@@ -29,9 +29,8 @@ bool X86_64TargetHandler::createImplicitFiles(
}
void X86_64TargetHandler::registerRelocationNames(Registry &registry) {
- registry.addKindTable(Reference::KindNamespace::ELF,
- Reference::KindArch::x86_64,
- kindStrings);
+ registry.addKindTable(Reference::KindNamespace::ELF,
+ Reference::KindArch::x86_64, kindStrings);
}
const Registry::KindStrings X86_64TargetHandler::kindStrings[] = {
@@ -76,4 +75,3 @@ const Registry::KindStrings X86_64TargetHandler::kindStrings[] = {
LLD_KIND_STRING_ENTRY(LLD_R_X86_64_GOTRELINDEX),
LLD_KIND_STRING_END
};
-
OpenPOWER on IntegriCloud