LP64 shouldn't include the non-standard <time64.h> cruft.
This patch includes just enough to keep external/chromium_org building
until they switch 64-bit Android over to using the regular non-Android code.
Change-Id: Iecaf274efa46ae18a42d5e3439c5aa4f909177c1
diff --git a/libc/Android.mk b/libc/Android.mk
index be40da6..e183fb0 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -72,7 +72,6 @@
bionic/strntoimax.c \
bionic/strntoumax.c \
bionic/system_properties_compat.c \
- bionic/time64.c \
bionic/unlockpt.c \
stdio/findfp.c \
stdio/snprintf.c\
diff --git a/libc/arch-arm/arm.mk b/libc/arch-arm/arm.mk
index cbc5fa7..2dbcb56 100644
--- a/libc/arch-arm/arm.mk
+++ b/libc/arch-arm/arm.mk
@@ -4,6 +4,7 @@
libc_common_src_files_arm := \
bionic/legacy_32_bit_support.cpp \
bionic/ndk_cruft.cpp \
+ bionic/time64.c \
# These are shared by all the 32-bit targets, but not the 64-bit ones.
libc_bionic_src_files_arm := \
diff --git a/libc/arch-mips/mips.mk b/libc/arch-mips/mips.mk
index 1af4a65..53fa223 100644
--- a/libc/arch-mips/mips.mk
+++ b/libc/arch-mips/mips.mk
@@ -4,6 +4,7 @@
libc_common_src_files_mips := \
bionic/legacy_32_bit_support.cpp \
bionic/ndk_cruft.cpp \
+ bionic/time64.c \
# These are shared by all the 32-bit targets, but not the 64-bit ones.
libc_bionic_src_files_mips += \
diff --git a/libc/arch-x86/x86.mk b/libc/arch-x86/x86.mk
index 846bb42..a1d55f0 100644
--- a/libc/arch-x86/x86.mk
+++ b/libc/arch-x86/x86.mk
@@ -4,6 +4,7 @@
libc_common_src_files_x86 := \
bionic/legacy_32_bit_support.cpp \
bionic/ndk_cruft.cpp \
+ bionic/time64.c \
# Fortify implementations of libc functions.
libc_common_src_files_x86 += \
diff --git a/libc/bionic/time64.c b/libc/bionic/time64.c
index 9aa5d4f..7163b34 100644
--- a/libc/bionic/time64.c
+++ b/libc/bionic/time64.c
@@ -28,6 +28,10 @@
/* See http://code.google.com/p/y2038 for this code's origin */
+#if defined(__LP64__)
+#error This cruft should be LP32 only!
+#endif
+
/*
Programmers who have available to them 64-bit time values as a 'long
@@ -268,7 +272,7 @@
assert(tm->tm_wday >= 0);
assert(tm->tm_wday <= 6);
-
+
assert(tm->tm_yday >= 0);
assert(tm->tm_yday <= length_of_year[IS_LEAP(tm->tm_year)]);
diff --git a/libc/include/time64.h b/libc/include/time64.h
index 7ec05af..b4f1280 100644
--- a/libc/include/time64.h
+++ b/libc/include/time64.h
@@ -31,29 +31,41 @@
#ifndef TIME64_H
#define TIME64_H
+#if defined(__LP64__)
+
+/* TODO: remove this when external/chromium_org is fixed. */
+#define time64_t time_t
+#define gmtime64_r gmtime_r
+#define localtime64_r localtime_r
+#define mktime64 mktime
+#define timegm64 timegm
+
+#else
+
+/* Legacy cruft for LP32 where time_t was 32-bit. */
+
#include <sys/cdefs.h>
#include <time.h>
#include <stdint.h>
__BEGIN_DECLS
-typedef int64_t time64_t;
+typedef int64_t time64_t;
-struct tm *gmtime64_r (const time64_t *, struct tm *);
-struct tm *localtime64_r (const time64_t *, struct tm *);
-struct tm *gmtime64 (const time64_t *);
-struct tm *localtime64 (const time64_t *);
-
-char *asctime64 (const struct tm *);
-char *asctime64_r (const struct tm *, char *);
-
-char *ctime64 (const time64_t*);
-char *ctime64_r (const time64_t*, char*);
-
-time64_t timegm64 (const struct tm *);
-time64_t mktime64 (const struct tm *);
-time64_t timelocal64 (const struct tm *);
+char* asctime64(const struct tm*);
+char* asctime64_r(const struct tm*, char*);
+char* ctime64(const time64_t*);
+char* ctime64_r(const time64_t*, char*);
+struct tm* gmtime64(const time64_t*);
+struct tm* gmtime64_r(const time64_t*, struct tm*);
+struct tm* localtime64(const time64_t*);
+struct tm* localtime64_r(const time64_t*, struct tm*);
+time64_t mktime64(const struct tm*);
+time64_t timegm64(const struct tm*);
+time64_t timelocal64(const struct tm*);
__END_DECLS
+#endif
+
#endif /* TIME64_H */