diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2010-08-21 05:58:13 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2010-08-21 05:58:13 +0000 |
commit | da0bfcdaf95d95a66e306ef6d45f638939272d34 (patch) | |
tree | d33c41991aa469843f559f531320f0dc2458f4e3 /lib/Target/X86 | |
parent | 990bdd50d17f8a05c14392cc402a7e098fd2505f (diff) | |
download | external_llvm-da0bfcdaf95d95a66e306ef6d45f638939272d34.zip external_llvm-da0bfcdaf95d95a66e306ef6d45f638939272d34.tar.gz external_llvm-da0bfcdaf95d95a66e306ef6d45f638939272d34.tar.bz2 |
MC: Add partial x86-64 support to COFF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111728 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86')
-rw-r--r-- | lib/Target/X86/X86AsmBackend.cpp | 14 | ||||
-rw-r--r-- | lib/Target/X86/X86MCAsmInfo.cpp | 3 |
2 files changed, 13 insertions, 4 deletions
diff --git a/lib/Target/X86/X86AsmBackend.cpp b/lib/Target/X86/X86AsmBackend.cpp index 6455a18..69dc967 100644 --- a/lib/Target/X86/X86AsmBackend.cpp +++ b/lib/Target/X86/X86AsmBackend.cpp @@ -223,14 +223,16 @@ public: }; class WindowsX86AsmBackend : public X86AsmBackend { + bool Is64Bit; public: - WindowsX86AsmBackend(const Target &T) - : X86AsmBackend(T) { + WindowsX86AsmBackend(const Target &T, bool is64Bit) + : X86AsmBackend(T) + , Is64Bit(is64Bit) { HasScatteredSymbols = true; } MCObjectWriter *createObjectWriter(raw_ostream &OS) const { - return createWinCOFFObjectWriter (OS); + return createWinCOFFObjectWriter(OS, Is64Bit); } bool isVirtualSection(const MCSection &Section) const { @@ -320,7 +322,7 @@ TargetAsmBackend *llvm::createX86_32AsmBackend(const Target &T, case Triple::MinGW32: case Triple::Cygwin: case Triple::Win32: - return new WindowsX86AsmBackend(T); + return new WindowsX86AsmBackend(T, false); default: return new ELFX86_32AsmBackend(T); } @@ -331,6 +333,10 @@ TargetAsmBackend *llvm::createX86_64AsmBackend(const Target &T, switch (Triple(TT).getOS()) { case Triple::Darwin: return new DarwinX86_64AsmBackend(T); + case Triple::MinGW64: + case Triple::Cygwin: + case Triple::Win32: + return new WindowsX86AsmBackend(T, true); default: return new ELFX86_64AsmBackend(T); } diff --git a/lib/Target/X86/X86MCAsmInfo.cpp b/lib/Target/X86/X86MCAsmInfo.cpp index 2b8720b..36badb4 100644 --- a/lib/Target/X86/X86MCAsmInfo.cpp +++ b/lib/Target/X86/X86MCAsmInfo.cpp @@ -103,6 +103,9 @@ getNonexecutableStackSection(MCContext &Ctx) const { } X86MCAsmInfoCOFF::X86MCAsmInfoCOFF(const Triple &Triple) { + if (Triple.getArch() == Triple::x86_64) + GlobalPrefix = ""; + AsmTransCBE = x86_asm_table; AssemblerDialect = AsmWriterFlavor; |