[ELF] Implement isLittleEndian for all architectures

llvm-svn: 221427
This commit is contained in:
Shankar Easwaran 2014-11-06 02:03:38 +00:00
parent 0c501df3de
commit e27c59d9e5
6 changed files with 17 additions and 6 deletions

View File

@ -59,7 +59,7 @@ public:
llvm::Triple getTriple() const { return _triple; }
virtual bool is64Bits() const;
virtual bool isLittleEndian() const;
virtual bool isLittleEndian() const = 0;
virtual uint64_t getPageSize() const { return 0x1000; }
OutputMagic getOutputMagic() const { return _outputMagic; }
uint16_t getOutputELFType() const { return _outputELFType; }

View File

@ -57,6 +57,10 @@ public:
}
}
bool isLittleEndian() const override {
return AArch64ELFType::TargetEndianness == llvm::support::little;
}
bool isCopyRelocation(const Reference &r) const override {
if (r.kindNamespace() != Reference::KindNamespace::ELF)
return false;

View File

@ -66,11 +66,6 @@ ELFLinkingContext::ELFLinkingContext(
bool ELFLinkingContext::is64Bits() const { return getTriple().isArch64Bit(); }
bool ELFLinkingContext::isLittleEndian() const {
// TODO: Do this properly. It is not defined purely by arch.
return true;
}
void ELFLinkingContext::addPasses(PassManager &pm) {
if (_runLayoutPass)
pm.add(std::unique_ptr<Pass>(new LayoutPass(registry())));

View File

@ -62,6 +62,10 @@ public:
}
}
bool isLittleEndian() const override {
return HexagonELFType::TargetEndianness == llvm::support::little;
}
/// \brief Create Internal files for Init/Fini
void createInternalFiles(
std::vector<std::unique_ptr<File>> &result) const override;

View File

@ -23,6 +23,10 @@ public:
: ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
new X86TargetHandler(*this))) {}
bool isLittleEndian() const override {
return X86ELFType::TargetEndianness == llvm::support::little;
}
/// \brief X86 has only two relative relocation
/// a) for supporting IFUNC relocs - R_386_IRELATIVE
/// b) for supporting relative relocs - R_386_RELATIVE

View File

@ -56,6 +56,10 @@ public:
}
}
bool isLittleEndian() const override {
return X86_64ELFType::TargetEndianness == llvm::support::little;
}
bool isCopyRelocation(const Reference &r) const override {
if (r.kindNamespace() != Reference::KindNamespace::ELF)
return false;