summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2010-12-03 18:48:56 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2010-12-03 18:48:56 +0000
commitdb04b39dad59fa1ae2a15a56ac74ec1628881c65 (patch)
tree9ff1ba19c4b0498bf74e8e6c7d877773b41331bc
parentd253545c17d5ed70fa134c02bfca9c3f85402473 (diff)
downloadllvm-db04b39dad59fa1ae2a15a56ac74ec1628881c65.tar.gz
llvm-db04b39dad59fa1ae2a15a56ac74ec1628881c65.tar.bz2
llvm-db04b39dad59fa1ae2a15a56ac74ec1628881c65.tar.xz
Support/FileSystem: Fix MinGW build. It doesn't have _chsize_s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120826 91177308-0d34-0410-b5e6-96231b3b80d8
-rwxr-xr-xcmake/config-ix.cmake3
-rw-r--r--include/llvm/Config/config.h.cmake3
-rw-r--r--lib/Support/Windows/PathV2.inc4
3 files changed, 10 insertions, 0 deletions
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index 3fd0c45675..27f2964038 100755
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -108,6 +108,9 @@ check_symbol_exists(strerror string.h HAVE_STRERROR)
check_symbol_exists(strerror_r string.h HAVE_STRERROR_R)
check_symbol_exists(strerror_s string.h HAVE_STRERROR_S)
check_symbol_exists(setenv stdlib.h HAVE_SETENV)
+if ( LLVM_ON_WIN32 )
+ check_symbol_exists(_chsize_s io.h HAVE__CHSIZE_S)
+endif()
check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
if( LLVM_USING_GLIBC )
diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake
index 26a39b224e..4ebae94944 100644
--- a/include/llvm/Config/config.h.cmake
+++ b/include/llvm/Config/config.h.cmake
@@ -327,6 +327,9 @@
/* Define to 1 if you have the `setenv' function. */
#cmakedefine HAVE_SETENV ${HAVE_SETENV}
+/* Define to 1 if you have the `_chsize_s' function. */
+#cmakedefine HAVE__CHSIZE_S ${HAVE__CHSIZE_S}
+
/* Define to 1 if you have the `setjmp' function. */
#undef HAVE_SETJMP
diff --git a/lib/Support/Windows/PathV2.inc b/lib/Support/Windows/PathV2.inc
index da5e8b60bd..8377310388 100644
--- a/lib/Support/Windows/PathV2.inc
+++ b/lib/Support/Windows/PathV2.inc
@@ -310,7 +310,11 @@ error_code resize_file(const Twine &path, uint64_t size) {
int fd = ::_wopen(path_utf16.begin(), O_BINARY, S_IREAD | S_IWRITE);
if (fd == -1)
return error_code(errno, generic_category());
+#ifdef HAVE__CHSIZE_S
errno_t error = ::_chsize_s(fd, size);
+#else
+ errno_t error = ::_chsize(fd, size);
+#endif
::close(fd);
return error_code(error, generic_category());
}