forked from OSchip/llvm-project
[ELF] Implement isLittleEndian for all architectures
llvm-svn: 221427
This commit is contained in:
parent
0c501df3de
commit
e27c59d9e5
|
@ -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; }
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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())));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue