| From 9a50212671d7df41e624421c16ff67c5ebff1062 Mon Sep 17 00:00:00 2001 |
| From: Andrew Hsieh <andrewhsieh@google.com> |
| Date: Wed, 27 Feb 2013 16:34:52 +0800 |
| Subject: [PATCH] Fix mingw build |
| |
| Change-Id: I11f3ac34154aa5cd1f2d4f9630f877e5bf0e5f6a |
| --- |
| debug/Makefile.am | 1 + |
| include/mcld/LD/Diagnostic.h | 6 + |
| include/mcld/LD/DiagnosticEngine.h | 1 + |
| include/mcld/LD/MsgHandler.h | 7 ++ |
| include/mcld/Support/FileHandle.h | 2 + |
| include/mcld/Support/mingw/mman.h | 55 +++++++++++ |
| lib/LD/Diagnostic.cpp | 5 + |
| lib/Support/FileHandle.cpp | 4 + |
| lib/Support/FileSystem.cpp | 3 + |
| lib/Support/Path.cpp | 10 ++- |
| lib/Support/Space.cpp | 14 +++ |
| lib/Support/Unix/FileSystem.inc | 20 ++++ |
| lib/Support/Unix/PathV3.inc | 10 ++ |
| lib/Support/mingw/mman.inc | 180 ++++++++++++++++++++++++++++++++++++ |
| lib/Support/raw_ostream.cpp | 2 +- |
| lib/Target/GNULDBackend.cpp | 4 + |
| lib/Target/Mips/MipsLDBackend.cpp | 4 + |
| m4/llvm.m4 | 2 +- |
| optimized/Makefile.am | 1 + |
| tools/llvm-mcld/llvm-mcld.cpp | 2 +- |
| 20 files changed, 329 insertions(+), 4 deletions(-) |
| create mode 100644 include/mcld/Support/mingw/mman.h |
| create mode 100644 lib/Support/mingw/mman.inc |
| |
| diff --git a/debug/Makefile.am b/debug/Makefile.am |
| index e41d1aa..cf8442a 100644 |
| --- a/debug/Makefile.am |
| +++ b/debug/Makefile.am |
| @@ -174,6 +174,7 @@ SOURCE = ${LIBDIR}/ADT/StringEntry.cpp \ |
| ${LIBDIR}/Support/Windows/FileSystem.inc \ |
| ${LIBDIR}/Support/Windows/PathV3.inc \ |
| ${LIBDIR}/Support/Windows/System.inc \ |
| + ${LIBDIR}/Support/mingw/mman.inc \ |
| ${LIBDIR}/CodeGen/MCLDTargetMachine.cpp \ |
| ${LIBDIR}/CodeGen/MCLinker.cpp \ |
| ${LIBDIR}/Object/ObjectLinker.cpp \ |
| diff --git a/include/mcld/LD/Diagnostic.h b/include/mcld/LD/Diagnostic.h |
| index 5e7d436..2b125db 100644 |
| --- a/include/mcld/LD/Diagnostic.h |
| +++ b/include/mcld/LD/Diagnostic.h |
| @@ -64,6 +64,12 @@ public: |
| return (unsigned int)m_Engine.state().ArgumentVals[pIdx]; |
| } |
| |
| + unsigned long long getArgULongLong(unsigned int pIdx) const { |
| + assert(getArgKind(pIdx) == DiagnosticEngine::ak_ulonglong && |
| + "Invalid argument accessor!"); |
| + return (unsigned long long)m_Engine.state().ArgumentVals[pIdx]; |
| + } |
| + |
| bool getArgBool(unsigned int pIdx) const { |
| assert(getArgKind(pIdx) == DiagnosticEngine::ak_bool && |
| "Invalid argument accessor!"); |
| diff --git a/include/mcld/LD/DiagnosticEngine.h b/include/mcld/LD/DiagnosticEngine.h |
| index 9d24c7a..f3d3b3c 100644 |
| --- a/include/mcld/LD/DiagnosticEngine.h |
| +++ b/include/mcld/LD/DiagnosticEngine.h |
| @@ -53,6 +53,7 @@ public: |
| ak_c_string, // const char * |
| ak_sint, // int |
| ak_uint, // unsigned int |
| + ak_ulonglong, // unsigned long long, (eg. size_t in 64-bit) |
| ak_bool // bool |
| }; |
| |
| diff --git a/include/mcld/LD/MsgHandler.h b/include/mcld/LD/MsgHandler.h |
| index c89f744..9b1ed80 100644 |
| --- a/include/mcld/LD/MsgHandler.h |
| +++ b/include/mcld/LD/MsgHandler.h |
| @@ -103,6 +103,13 @@ operator<<(const MsgHandler& pHandler, unsigned long pValue) |
| } |
| |
| inline const MsgHandler & |
| +operator<<(const MsgHandler& pHandler, unsigned long long pValue) |
| +{ |
| + pHandler.addTaggedVal(pValue, DiagnosticEngine::ak_ulonglong); |
| + return pHandler; |
| +} |
| + |
| +inline const MsgHandler & |
| operator<<(const MsgHandler& pHandler, bool pValue) |
| { |
| pHandler.addTaggedVal(pValue, DiagnosticEngine::ak_bool); |
| diff --git a/include/mcld/Support/FileHandle.h b/include/mcld/Support/FileHandle.h |
| index ce43e0f..4130c7a 100644 |
| --- a/include/mcld/Support/FileHandle.h |
| +++ b/include/mcld/Support/FileHandle.h |
| @@ -58,12 +58,14 @@ public: |
| ReadOwner = S_IRUSR, |
| WriteOwner = S_IWUSR, |
| ExeOwner = S_IXUSR, |
| +#if !defined(_WIN32) |
| ReadGroup = S_IRGRP, |
| WriteGroup = S_IWGRP, |
| ExeGroup = S_IXGRP, |
| ReadOther = S_IROTH, |
| WriteOther = S_IWOTH, |
| ExeOther = S_IXOTH, |
| +#endif |
| System = 0xFFFFFFFF |
| }; |
| |
| diff --git a/include/mcld/Support/mingw/mman.h b/include/mcld/Support/mingw/mman.h |
| new file mode 100644 |
| index 0000000..96f68b2 |
| --- /dev/null |
| +++ b/include/mcld/Support/mingw/mman.h |
| @@ -0,0 +1,55 @@ |
| +/* |
| + * sys/mman.h |
| + * mman-win32 |
| + */ |
| + |
| +#ifndef _SYS_MMAN_H_ |
| +#define _SYS_MMAN_H_ |
| + |
| +#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
|
| +#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
|
| +#endif
|
| + |
| +/* All the headers include this file. */ |
| +#ifndef _MSC_VER |
| +#include <_mingw.h> |
| +#endif |
| + |
| +#include <sys/types.h> |
| + |
| +#ifdef __cplusplus |
| +extern "C" { |
| +#endif |
| + |
| +#define PROT_NONE 0 |
| +#define PROT_READ 1 |
| +#define PROT_WRITE 2 |
| +#define PROT_EXEC 4 |
| + |
| +#define MAP_FILE 0 |
| +#define MAP_SHARED 1 |
| +#define MAP_PRIVATE 2 |
| +#define MAP_TYPE 0xf |
| +#define MAP_FIXED 0x10 |
| +#define MAP_ANONYMOUS 0x20 |
| +#define MAP_ANON MAP_ANONYMOUS |
| + |
| +#define MAP_FAILED ((void *)-1) |
| + |
| +/* Flags for msync. */ |
| +#define MS_ASYNC 1 |
| +#define MS_SYNC 2 |
| +#define MS_INVALIDATE 4 |
| + |
| +void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); |
| +int munmap(void *addr, size_t len); |
| +int mprotect(void *addr, size_t len, int prot); |
| +int msync(void *addr, size_t len, int flags); |
| +int mlock(const void *addr, size_t len); |
| +int munlock(const void *addr, size_t len); |
| + |
| +#ifdef __cplusplus |
| +}; |
| +#endif |
| + |
| +#endif /* _SYS_MMAN_H_ */ |
| diff --git a/lib/LD/Diagnostic.cpp b/lib/LD/Diagnostic.cpp |
| index 786a68b..b596a94 100644 |
| --- a/lib/LD/Diagnostic.cpp |
| +++ b/lib/LD/Diagnostic.cpp |
| @@ -157,6 +157,11 @@ void Diagnostic::format(const char* pBegin, const char* pEnd, |
| llvm::raw_string_ostream(pOutStr) << val; |
| break; |
| } |
| + case DiagnosticEngine::ak_ulonglong: { |
| + unsigned long long val = getArgULongLong(arg_no); |
| + llvm::raw_string_ostream(pOutStr) << val; |
| + break; |
| + } |
| case DiagnosticEngine::ak_bool: { |
| bool val = getArgBool(arg_no); |
| if (val) |
| diff --git a/lib/Support/FileHandle.cpp b/lib/Support/FileHandle.cpp |
| index 437e741..52c68a3 100644 |
| --- a/lib/Support/FileHandle.cpp |
| +++ b/lib/Support/FileHandle.cpp |
| @@ -18,7 +18,11 @@ |
| #endif |
| |
| #include <sys/stat.h> |
| +#if defined(HAVE_SYS_MMAN_H) |
| #include <sys/mman.h> |
| +#elif defined(_WIN32) |
| +#include <mcld/Support/mingw/mman.h> |
| +#endif |
| |
| #if defined(_MSC_VER) |
| #include <io.h> |
| diff --git a/lib/Support/FileSystem.cpp b/lib/Support/FileSystem.cpp |
| index fb2633d..7084a9a 100644 |
| --- a/lib/Support/FileSystem.cpp |
| +++ b/lib/Support/FileSystem.cpp |
| @@ -27,3 +27,6 @@ using namespace mcld::sys::fs; |
| #include "Windows/FileSystem.inc" |
| #include "Windows/PathV3.inc" |
| #endif |
| +#if defined(_WIN32) |
| +#include "mingw/mman.inc" |
| +#endif |
| \ No newline at end of file |
| diff --git a/lib/Support/Path.cpp b/lib/Support/Path.cpp |
| index d359162..2f439de 100644 |
| --- a/lib/Support/Path.cpp |
| +++ b/lib/Support/Path.cpp |
| @@ -78,12 +78,20 @@ Path& Path::append(const Path& pPath) |
| unsigned int new_size = old_size + pPath.native().size(); |
| |
| m_PathName.resize(new_size); |
| - strcpy(const_cast<char*>(m_PathName.data()+old_size), pPath.native().data()); |
| +#if defined(MCLD_ON_WIN32) |
| + wcscpy(const_cast<ValueType*>(m_PathName.data()+old_size), pPath.native().data()); |
| +#else |
| + strcpy(const_cast<ValueType*>(m_PathName.data()+old_size), pPath.native().data()); |
| +#endif |
| } |
| //first path is a,second path is b |
| else if(this->string()[this->native().size()-1] != separator && |
| pPath.string()[0] != separator) { |
| +#if defined(MCLD_ON_WIN32) |
| + m_PathName.append(L"\\"); |
| +#else |
| m_PathName.append("/"); |
| +#endif |
| m_PathName.append(pPath.native()); |
| } |
| // a/,b or a,/b just append |
| diff --git a/lib/Support/Space.cpp b/lib/Support/Space.cpp |
| index 6ec2c53..db5ad03 100644 |
| --- a/lib/Support/Space.cpp |
| +++ b/lib/Support/Space.cpp |
| @@ -16,6 +16,20 @@ using namespace mcld; |
| |
| //===----------------------------------------------------------------------===// |
| // constant data |
| +#if defined(_WIN32) |
| +#include <windows.h> |
| +int getpagesize (void) |
| +{ |
| + static int _pagesize = 0; |
| + if (! _pagesize) |
| + { |
| + SYSTEM_INFO sysinfo; |
| + GetSystemInfo (&sysinfo); |
| + _pagesize = sysinfo.dwPageSize; |
| + } |
| + return _pagesize; |
| +} |
| +#endif |
| static const off_t PageSize = getpagesize(); |
| |
| //===----------------------------------------------------------------------===// |
| diff --git a/lib/Support/Unix/FileSystem.inc b/lib/Support/Unix/FileSystem.inc |
| index ce6d0df..96d1e10 100644 |
| --- a/lib/Support/Unix/FileSystem.inc |
| +++ b/lib/Support/Unix/FileSystem.inc |
| @@ -36,12 +36,32 @@ int open(const Path& pPath, int pOFlag, int pPerm) |
| |
| ssize_t pread(int pFD, void* pBuf, size_t pCount, size_t pOffset) |
| { |
| +#if !defined(_WIN32) |
| return ::pread(pFD, pBuf, pCount, pOffset); |
| +#else |
| + off_t curr_pos = lseek (pFD, 0, SEEK_CUR); |
| + if (lseek (pFD, pOffset, SEEK_SET) != pOffset) |
| + return -1; |
| + ssize_t retval = read (pFD, pBuf, pCount); |
| + if (lseek (pFD, curr_pos, SEEK_SET) != curr_pos) |
| + return -1; |
| + return retval; |
| +#endif |
| } |
| |
| ssize_t pwrite(int pFD, const void* pBuf, size_t pCount, size_t pOffset) |
| { |
| +#if !defined(_WIN32) |
| return ::pwrite(pFD, pBuf, pCount, pOffset); |
| +#else |
| + off_t curr_pos = lseek (pFD, 0, SEEK_CUR); |
| + if (lseek (pFD, pOffset, SEEK_SET) != pOffset) |
| + return -1; |
| + ssize_t retval = write (pFD, pBuf, pCount); |
| + if (lseek (pFD, curr_pos, SEEK_SET) != curr_pos) |
| + return -1; |
| + return retval; |
| +#endif |
| } |
| |
| int ftruncate(int pFD, size_t pLength) |
| diff --git a/lib/Support/Unix/PathV3.inc b/lib/Support/Unix/PathV3.inc |
| index 1506e94..65ba267 100644 |
| --- a/lib/Support/Unix/PathV3.inc |
| +++ b/lib/Support/Unix/PathV3.inc |
| @@ -20,6 +20,10 @@ |
| #include <stack> |
| #include <unistd.h> |
| |
| +#if defined(_WIN32) |
| +#include <limits.h> |
| +#endif |
| + |
| namespace mcld{ |
| namespace sys{ |
| namespace fs{ |
| @@ -154,14 +158,19 @@ void status(const Path& p, FileStatus& pFileStatus) |
| pFileStatus.setType(CharacterFile); |
| else if(S_ISFIFO(path_stat.st_mode)) |
| pFileStatus.setType(FifoFile); |
| +#if !defined(_WIN32) |
| else if(S_ISSOCK(path_stat.st_mode)) |
| pFileStatus.setType(SocketFile); |
| +#endif |
| else |
| pFileStatus.setType(TypeUnknown); |
| } |
| |
| void symlink_status(const Path& p, FileStatus& pFileStatus) |
| { |
| +#if defined(_WIN32) |
| + pFileStatus.setType(FileNotFound); |
| +#else |
| struct stat path_stat; |
| if(lstat(p.c_str(), &path_stat)!= 0) |
| { |
| @@ -188,6 +197,7 @@ void symlink_status(const Path& p, FileStatus& pFileStatus) |
| pFileStatus.setType(SocketFile); |
| else |
| pFileStatus.setType(TypeUnknown); |
| +#endif |
| } |
| |
| /// read_dir - return true if we read one entry |
| diff --git a/lib/Support/mingw/mman.inc b/lib/Support/mingw/mman.inc |
| new file mode 100644 |
| index 0000000..be4be5b |
| --- /dev/null |
| +++ b/lib/Support/mingw/mman.inc |
| @@ -0,0 +1,180 @@ |
| +
|
| +#include <windows.h>
|
| +#include <errno.h>
|
| +#include <io.h>
|
| +
|
| +#include "mcld/Support/mingw/mman.h"
|
| +
|
| +#ifndef FILE_MAP_EXECUTE
|
| +#define FILE_MAP_EXECUTE 0x0020
|
| +#endif /* FILE_MAP_EXECUTE */
|
| +
|
| +static int __map_mman_error(const DWORD err, const int deferr)
|
| +{
|
| + if (err == 0)
|
| + return 0;
|
| + //TODO: implement
|
| + return err;
|
| +}
|
| +
|
| +static DWORD __map_mmap_prot_page(const int prot)
|
| +{
|
| + DWORD protect = 0;
|
| +
|
| + if (prot == PROT_NONE)
|
| + return protect;
|
| +
|
| + if ((prot & PROT_EXEC) != 0)
|
| + {
|
| + protect = ((prot & PROT_WRITE) != 0) ?
|
| + PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ;
|
| + }
|
| + else
|
| + {
|
| + protect = ((prot & PROT_WRITE) != 0) ?
|
| + PAGE_READWRITE : PAGE_READONLY;
|
| + }
|
| +
|
| + return protect;
|
| +}
|
| +
|
| +static DWORD __map_mmap_prot_file(const int prot)
|
| +{
|
| + DWORD desiredAccess = 0;
|
| +
|
| + if (prot == PROT_NONE)
|
| + return desiredAccess;
|
| +
|
| + if ((prot & PROT_READ) != 0)
|
| + desiredAccess |= FILE_MAP_READ;
|
| + if ((prot & PROT_WRITE) != 0)
|
| + desiredAccess |= FILE_MAP_WRITE;
|
| + if ((prot & PROT_EXEC) != 0)
|
| + desiredAccess |= FILE_MAP_EXECUTE;
|
| +
|
| + return desiredAccess;
|
| +}
|
| +
|
| +void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off)
|
| +{
|
| + HANDLE fm, h;
|
| +
|
| + void * map = MAP_FAILED;
|
| +
|
| +#ifdef _MSC_VER
|
| +#pragma warning(push)
|
| +#pragma warning(disable: 4293)
|
| +#endif
|
| +
|
| + const DWORD dwFileOffsetLow = (sizeof(off_t) <= sizeof(DWORD)) ?
|
| + (DWORD)off : (DWORD)(off & 0xFFFFFFFFL);
|
| + const DWORD dwFileOffsetHigh = (sizeof(off_t) <= sizeof(DWORD)) ?
|
| + (DWORD)0 : (DWORD)((off >> 32) & 0xFFFFFFFFL);
|
| + const DWORD protect = __map_mmap_prot_page(prot);
|
| + const DWORD desiredAccess = __map_mmap_prot_file(prot);
|
| +
|
| + const off_t maxSize = off + (off_t)len;
|
| +
|
| + const DWORD dwMaxSizeLow = (sizeof(off_t) <= sizeof(DWORD)) ?
|
| + (DWORD)maxSize : (DWORD)(maxSize & 0xFFFFFFFFL);
|
| + const DWORD dwMaxSizeHigh = (sizeof(off_t) <= sizeof(DWORD)) ?
|
| + (DWORD)0 : (DWORD)((maxSize >> 32) & 0xFFFFFFFFL);
|
| +
|
| +#ifdef _MSC_VER
|
| +#pragma warning(pop)
|
| +#endif
|
| +
|
| + errno = 0;
|
| +
|
| + if (len == 0
|
| + /* Unsupported flag combinations */
|
| + || (flags & MAP_FIXED) != 0
|
| + /* Usupported protection combinations */
|
| + || prot == PROT_EXEC)
|
| + {
|
| + errno = EINVAL;
|
| + return MAP_FAILED;
|
| + }
|
| +
|
| + h = ((flags & MAP_ANONYMOUS) == 0) ?
|
| + (HANDLE)_get_osfhandle(fildes) : INVALID_HANDLE_VALUE;
|
| +
|
| + if ((flags & MAP_ANONYMOUS) == 0 && h == INVALID_HANDLE_VALUE)
|
| + {
|
| + errno = EBADF;
|
| + return MAP_FAILED;
|
| + }
|
| +
|
| + fm = CreateFileMapping(h, NULL, protect, dwMaxSizeHigh, dwMaxSizeLow, NULL);
|
| +
|
| + if (fm == NULL)
|
| + {
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| + return MAP_FAILED;
|
| + }
|
| +
|
| + map = MapViewOfFile(fm, desiredAccess, dwFileOffsetHigh, dwFileOffsetLow, len);
|
| +
|
| + CloseHandle(fm);
|
| +
|
| + if (map == NULL)
|
| + {
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| + return MAP_FAILED;
|
| + }
|
| +
|
| + return map;
|
| +}
|
| +
|
| +int munmap(void *addr, size_t len)
|
| +{
|
| + if (UnmapViewOfFile(addr))
|
| + return 0;
|
| +
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| +
|
| + return -1;
|
| +}
|
| +
|
| +int mprotect(void *addr, size_t len, int prot)
|
| +{
|
| + DWORD newProtect = __map_mmap_prot_page(prot);
|
| + DWORD oldProtect = 0;
|
| +
|
| + if (VirtualProtect(addr, len, newProtect, &oldProtect))
|
| + return 0;
|
| +
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| +
|
| + return -1;
|
| +}
|
| +
|
| +int msync(void *addr, size_t len, int flags)
|
| +{
|
| + if (FlushViewOfFile(addr, len))
|
| + return 0;
|
| +
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| +
|
| + return -1;
|
| +}
|
| +
|
| +int mlock(const void *addr, size_t len)
|
| +{
|
| + if (VirtualLock((LPVOID)addr, len))
|
| + return 0;
|
| +
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| +
|
| + return -1;
|
| +}
|
| +
|
| +int munlock(const void *addr, size_t len)
|
| +{
|
| + if (VirtualUnlock((LPVOID)addr, len))
|
| + return 0;
|
| +
|
| + errno = __map_mman_error(GetLastError(), EPERM);
|
| +
|
| + return -1;
|
| +}
|
| diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp |
| index e294bc3..836438b 100644 |
| --- a/lib/Support/raw_ostream.cpp |
| +++ b/lib/Support/raw_ostream.cpp |
| @@ -12,7 +12,7 @@ |
| # include <unistd.h> |
| #endif |
| |
| -#if defined(_MSC_VER) |
| +#if defined(_WIN32) |
| #include <io.h> |
| #ifndef STDIN_FILENO |
| # define STDIN_FILENO 0 |
| diff --git a/lib/Target/GNULDBackend.cpp b/lib/Target/GNULDBackend.cpp |
| index 3e8915d..67c28cf 100644 |
| --- a/lib/Target/GNULDBackend.cpp |
| +++ b/lib/Target/GNULDBackend.cpp |
| @@ -37,6 +37,10 @@ |
| #include <mcld/LD/StubFactory.h> |
| #include <mcld/Object/ObjectBuilder.h> |
| |
| +#if defined(_WIN32) |
| + #define bzero(b,l) (memset((b), 0, (l)), (void)0) |
| +#endif |
| + |
| using namespace mcld; |
| |
| //===--------------------------------------------------------------------===// |
| diff --git a/lib/Target/Mips/MipsLDBackend.cpp b/lib/Target/Mips/MipsLDBackend.cpp |
| index 8a62bd3..2f8f2fa 100644 |
| --- a/lib/Target/Mips/MipsLDBackend.cpp |
| +++ b/lib/Target/Mips/MipsLDBackend.cpp |
| @@ -27,6 +27,10 @@ |
| #include <mcld/Target/OutputRelocSection.h> |
| #include <mcld/Object/ObjectBuilder.h> |
| |
| +#if defined(_WIN32) |
| + #define bzero(b,l) (memset((b), 0, (l)), (void)0) |
| +#endif |
| + |
| using namespace mcld; |
| |
| //===----------------------------------------------------------------------===// |
| diff --git a/m4/llvm.m4 b/m4/llvm.m4 |
| index 42c9f58..a8732ad 100644 |
| --- a/m4/llvm.m4 |
| +++ b/m4/llvm.m4 |
| @@ -111,7 +111,7 @@ AC_DEFUN([CHECK_LLVM], |
| *-*-win32*) |
| llvm_cv_platform_type="Win32" ;; |
| *-*-mingw*) |
| - llvm_cv_platform_type="Win32" ;; |
| + llvm_cv_platform_type="Unix" ;; |
| *-*-haiku*) |
| llvm_cv_platform_type="Unix" ;; |
| *-unknown-eabi*) |
| diff --git a/optimized/Makefile.am b/optimized/Makefile.am |
| index 2e5df69..efd46dc 100644 |
| --- a/optimized/Makefile.am |
| +++ b/optimized/Makefile.am |
| @@ -173,6 +173,7 @@ SOURCE = ${LIBDIR}/ADT/StringEntry.cpp \ |
| ${LIBDIR}/Support/Windows/FileSystem.inc \ |
| ${LIBDIR}/Support/Windows/PathV3.inc \ |
| ${LIBDIR}/Support/Windows/System.inc \ |
| + ${LIBDIR}/Support/mingw/mman.inc \ |
| ${LIBDIR}/CodeGen/MCLDTargetMachine.cpp \ |
| ${LIBDIR}/CodeGen/MCLinker.cpp \ |
| ${LIBDIR}/Object/ObjectLinker.cpp \ |
| diff --git a/tools/llvm-mcld/llvm-mcld.cpp b/tools/llvm-mcld/llvm-mcld.cpp |
| index 1f77ed1..68eebf0 100644 |
| --- a/tools/llvm-mcld/llvm-mcld.cpp |
| +++ b/tools/llvm-mcld/llvm-mcld.cpp |
| @@ -45,7 +45,7 @@ |
| # include <unistd.h> |
| #endif |
| |
| -#if defined(_MSC_VER) |
| +#if defined(_WIN32) |
| #include <io.h> |
| #ifndef STDIN_FILENO |
| # define STDIN_FILENO 0 |
| -- |
| 1.7.7.3 |
| |