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; }
}
}
+ 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;
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())));
}
}
+ 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;
: 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
}
}
+ 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;