diff --git a/libc/Android.mk b/libc/Android.mk
index ad5fb1c..41b1b82 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -231,6 +231,7 @@
     bionic/getcwd.cpp \
     bionic/inotify_init.cpp \
     bionic/lchown.cpp \
+    bionic/lfs64_support.cpp \
     bionic/libc_init_common.cpp \
     bionic/libc_logging.cpp \
     bionic/libgen.cpp \
diff --git a/libc/bionic/lfs64_support.cpp b/libc/bionic/lfs64_support.cpp
new file mode 100644
index 0000000..138094e
--- /dev/null
+++ b/libc/bionic/lfs64_support.cpp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+
+int mkstemp64(char* filename) {
+  // Delegation will work in this case because all the transitive dependencies
+  // are already 64-bit ready. In particular, we don't have non-O_LARGEFILE
+  // open (our open is actually open64) and stat and stat64 are the same.
+  return mkstemp(filename);
+}
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 72b554f..9c04059 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -54,6 +54,7 @@
 extern char* mkdtemp(char*);
 extern char* mktemp(char*) __warnattr("mktemp possibly used unsafely; consider using mkstemp");
 extern int mkstemp(char*);
+extern int mkstemp64(char*);
 
 extern long strtol(const char *, char **, int);
 extern long long strtoll(const char *, char **, int);
diff --git a/tests/TemporaryFile.h b/tests/TemporaryFile.h
index b3f085f..2c6fb1c 100644
--- a/tests/TemporaryFile.h
+++ b/tests/TemporaryFile.h
@@ -16,9 +16,10 @@
 
 #include <unistd.h>
 
-class TemporaryFile {
+template<int (*mk_func)(char*)>
+class GenericTemporaryFile {
  public:
-  TemporaryFile() {
+  GenericTemporaryFile() {
     // Since we might be running on the host or the target, and if we're
     // running on the host we might be running under bionic or glibc,
     // let's just try both possible temporary directories and take the
@@ -29,7 +30,7 @@
     }
   }
 
-  ~TemporaryFile() {
+  ~GenericTemporaryFile() {
     close(fd);
     unlink(filename);
   }
@@ -40,6 +41,8 @@
  private:
   void init(const char* tmp_dir) {
     snprintf(filename, sizeof(filename), "%s/TemporaryFile-XXXXXX", tmp_dir);
-    fd = mkstemp(filename);
+    fd = mk_func(filename);
   }
 };
+
+typedef GenericTemporaryFile<mkstemp> TemporaryFile;
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index fa59c41..1903b04 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -15,6 +15,7 @@
  */
 
 #include <gtest/gtest.h>
+#include "TemporaryFile.h"
 
 #include <errno.h>
 #include <libgen.h>
@@ -22,6 +23,7 @@
 #include <pthread.h>
 #include <stdint.h>
 #include <stdlib.h>
+#include <fcntl.h>
 
 TEST(stdlib, drand48) {
   srand48(0x01020304);
@@ -157,3 +159,16 @@
   ::testing::FLAGS_gtest_death_test_style = "threadsafe";
   ASSERT_EXIT(TestBug57421_main(), ::testing::ExitedWithCode(0), "");
 }
+
+TEST(stdlib, mkstemp) {
+  TemporaryFile tf;
+  struct stat sb;
+  ASSERT_EQ(0, fstat(tf.fd, &sb));
+}
+
+TEST(stdlib, mkstemp64) {
+  GenericTemporaryFile<mkstemp64> tf;
+  struct stat64 sb;
+  ASSERT_EQ(0, fstat64(tf.fd, &sb));
+  ASSERT_EQ(O_LARGEFILE, fcntl(tf.fd, F_GETFL) & O_LARGEFILE);
+}
