Define uint64 and int64 using long long.

This is to avoid typedef collisions with some compile configurations.
For more info, see
https://blogs.oracle.com/nike/entry/ilp64_lp64_llp64
http://www.unix.org/whitepapers/64bit.html

BUG=4497

Review URL: https://codereview.webrtc.org/1186093004

Cr-Commit-Position: refs/heads/master@{#9451}
diff --git a/webrtc/base/basictypes.h b/webrtc/base/basictypes.h
index 3edf354..66f2ff4 100644
--- a/webrtc/base/basictypes.h
+++ b/webrtc/base/basictypes.h
@@ -49,8 +49,8 @@
 #endif
 #define INT64_F "l"
 #elif defined(__LP64__)
-typedef unsigned long uint64;  // NOLINT
-typedef long int64;  // NOLINT
+typedef unsigned long long uint64;  // NOLINT
+typedef long long int64;  // NOLINT
 #ifndef INT64_C
 #define INT64_C(x) x ## L
 #endif
diff --git a/webrtc/base/basictypes_unittest.cc b/webrtc/base/basictypes_unittest.cc
index 20515ec..3ac4337 100644
--- a/webrtc/base/basictypes_unittest.cc
+++ b/webrtc/base/basictypes_unittest.cc
@@ -14,6 +14,15 @@
 
 namespace rtc {
 
+static_assert(sizeof(int8) == 1, "Unexpected size");
+static_assert(sizeof(uint8) == 1, "Unexpected size");
+static_assert(sizeof(int16) == 2, "Unexpected size");
+static_assert(sizeof(uint16) == 2, "Unexpected size");
+static_assert(sizeof(int32) == 4, "Unexpected size");
+static_assert(sizeof(uint32) == 4, "Unexpected size");
+static_assert(sizeof(int64) == 8, "Unexpected size");
+static_assert(sizeof(uint64) == 8, "Unexpected size");
+
 TEST(BasicTypesTest, Endian) {
   uint16 v16 = 0x1234u;
   uint8 first_byte = *reinterpret_cast<uint8*>(&v16);
diff --git a/webrtc/base/helpers.cc b/webrtc/base/helpers.cc
index 9012c33..e12ba10 100644
--- a/webrtc/base/helpers.cc
+++ b/webrtc/base/helpers.cc
@@ -17,13 +17,19 @@
 #if defined(SSL_USE_OPENSSL)
 #include <openssl/rand.h>
 #elif defined(SSL_USE_NSS_RNG)
+// Hack: Define+undefine int64 and uint64 to avoid typedef conflict with NSS.
+// TODO(kjellander): Remove when webrtc:4497 is completed.
+#define uint64 foo_uint64
+#define int64 foo_int64
 #include "pk11func.h"
+#undef uint64
+#undef int64
 #else
 #if defined(WEBRTC_WIN)
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #include <ntsecapi.h>
-#endif  // WEBRTC_WIN 
+#endif  // WEBRTC_WIN
 #endif  // else
 #endif  // FEATURE_ENABLED_SSL
 
@@ -141,7 +147,7 @@
 
 #error No SSL implementation has been selected!
 
-#endif  // WEBRTC_WIN 
+#endif  // WEBRTC_WIN
 #endif
 
 // A test random generator, for predictable output.
diff --git a/webrtc/base/nssidentity.h b/webrtc/base/nssidentity.h
index 447fc1c..8a304e9 100644
--- a/webrtc/base/nssidentity.h
+++ b/webrtc/base/nssidentity.h
@@ -13,7 +13,13 @@
 
 #include <string>
 
+// Hack: Define+undefine int64 and uint64 to avoid typedef conflict with NSS.
+// TODO(kjellander): Remove when webrtc:4497 is completed.
+#define uint64 foo_uint64
+#define int64 foo_int64
 #include "cert.h"
+#undef uint64
+#undef int64
 #include "nspr.h"
 #include "hasht.h"
 #include "keythi.h"
diff --git a/webrtc/base/nssstreamadapter.h b/webrtc/base/nssstreamadapter.h
index 66d381d..65ac489 100644
--- a/webrtc/base/nssstreamadapter.h
+++ b/webrtc/base/nssstreamadapter.h
@@ -14,7 +14,14 @@
 #include <string>
 #include <vector>
 
+// Hack: Define+undefine int64 and uint64 to avoid typedef conflict with NSS.
+// TODO(kjellander): Remove when webrtc:4497 is completed.
+#define uint64 foo_uint64
+#define int64 foo_int64
 #include "nspr.h"
+#undef uint64
+#undef int64
+
 #include "nss.h"
 #include "secmodt.h"