diff options
author | Roman Divacky <rdivacky@freebsd.org> | 2010-09-09 17:57:50 +0000 |
---|---|---|
committer | Roman Divacky <rdivacky@freebsd.org> | 2010-09-09 17:57:50 +0000 |
commit | 3b727f55aa10712fc51be4d9719b294dc5444a28 (patch) | |
tree | cfede82d7405c111d1dc69e5fd81a39fc02ec110 /llvm/lib/Target/X86/X86AsmBackend.cpp | |
parent | dd7598578fd26c4d7681bffa5e3bdfe9d044677c (diff) | |
download | bcm5719-llvm-3b727f55aa10712fc51be4d9719b294dc5444a28.tar.gz bcm5719-llvm-3b727f55aa10712fc51be4d9719b294dc5444a28.zip |
Make ELF OS ABI dependent on the OS from target triple.
llvm-svn: 113508
Diffstat (limited to 'llvm/lib/Target/X86/X86AsmBackend.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86AsmBackend.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86AsmBackend.cpp b/llvm/lib/Target/X86/X86AsmBackend.cpp index 69dc967f9d8..4b51b69dc2d 100644 --- a/llvm/lib/Target/X86/X86AsmBackend.cpp +++ b/llvm/lib/Target/X86/X86AsmBackend.cpp @@ -186,25 +186,27 @@ bool X86AsmBackend::WriteNopData(uint64_t Count, MCObjectWriter *OW) const { namespace { class ELFX86AsmBackend : public X86AsmBackend { public: - ELFX86AsmBackend(const Target &T) - : X86AsmBackend(T) { + Triple::OSType OSType; + ELFX86AsmBackend(const Target &T, Triple::OSType _OSType) + : X86AsmBackend(T), OSType(_OSType) { HasAbsolutizedSet = true; HasScatteredSymbols = true; } bool isVirtualSection(const MCSection &Section) const { const MCSectionELF &SE = static_cast<const MCSectionELF&>(Section); - return SE.getType() == MCSectionELF::SHT_NOBITS;; + return SE.getType() == MCSectionELF::SHT_NOBITS; } }; class ELFX86_32AsmBackend : public ELFX86AsmBackend { public: - ELFX86_32AsmBackend(const Target &T) - : ELFX86AsmBackend(T) {} + ELFX86_32AsmBackend(const Target &T, Triple::OSType OSType) + : ELFX86AsmBackend(T, OSType) {} MCObjectWriter *createObjectWriter(raw_ostream &OS) const { return new ELFObjectWriter(OS, /*Is64Bit=*/false, + OSType, /*IsLittleEndian=*/true, /*HasRelocationAddend=*/false); } @@ -212,11 +214,12 @@ public: class ELFX86_64AsmBackend : public ELFX86AsmBackend { public: - ELFX86_64AsmBackend(const Target &T) - : ELFX86AsmBackend(T) {} + ELFX86_64AsmBackend(const Target &T, Triple::OSType OSType) + : ELFX86AsmBackend(T, OSType) {} MCObjectWriter *createObjectWriter(raw_ostream &OS) const { return new ELFObjectWriter(OS, /*Is64Bit=*/true, + OSType, /*IsLittleEndian=*/true, /*HasRelocationAddend=*/true); } @@ -324,7 +327,7 @@ TargetAsmBackend *llvm::createX86_32AsmBackend(const Target &T, case Triple::Win32: return new WindowsX86AsmBackend(T, false); default: - return new ELFX86_32AsmBackend(T); + return new ELFX86_32AsmBackend(T, Triple(TT).getOS()); } } @@ -338,6 +341,6 @@ TargetAsmBackend *llvm::createX86_64AsmBackend(const Target &T, case Triple::Win32: return new WindowsX86AsmBackend(T, true); default: - return new ELFX86_64AsmBackend(T); + return new ELFX86_64AsmBackend(T, Triple(TT).getOS()); } } |