diff --git a/src/symbolize.cc b/src/symbolize.cc
index 30836de..3e90573 100644
--- a/src/symbolize.cc
+++ b/src/symbolize.cc
@@ -232,7 +232,7 @@
     }
     char header_name[kMaxSectionNameLen];
     if (sizeof(header_name) < name_len) {
-      RAW_LOG(WARNING, "Section name '%s' is too long (%"PRIuS"); "
+      RAW_LOG(WARNING, "Section name '%s' is too long (%" PRIuS "); "
               "section will not be found (even if present).", name, name_len);
       // No point in even trying.
       return false;
diff --git a/src/glog/stl_logging.h.in b/src/glog/stl_logging.h.in
index 30836de..3e90573 100644
--- a/src/glog/stl_logging.h.in
+++ b/src/glog/stl_logging.h.in
@@ -50,10 +50,13 @@
 #include <utility>
 #include <vector>
 
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
 # include <ext/hash_set>
 # include <ext/hash_map>
 # include <ext/slist>
+#elif defined(_LIBCPP_VERSION)
+# include <unordered_map>
+# include <unordered_set>
 #endif
 
 // Forward declare these two, and define them after all the container streams
@@ -80,7 +83,7 @@ inline std::ostream& operator<<(std::ostream& out, \
 OUTPUT_TWO_ARG_CONTAINER(std::vector)
 OUTPUT_TWO_ARG_CONTAINER(std::deque)
 OUTPUT_TWO_ARG_CONTAINER(std::list)
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
 OUTPUT_TWO_ARG_CONTAINER(__gnu_cxx::slist)
 #endif
 
@@ -109,9 +112,12 @@ inline std::ostream& operator<<(std::ostream& out, \
 
 OUTPUT_FOUR_ARG_CONTAINER(std::map)
 OUTPUT_FOUR_ARG_CONTAINER(std::multimap)
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
 OUTPUT_FOUR_ARG_CONTAINER(__gnu_cxx::hash_set)
 OUTPUT_FOUR_ARG_CONTAINER(__gnu_cxx::hash_multiset)
+#elif defined(_LIBCPP_VERSION)
+OUTPUT_FOUR_ARG_CONTAINER(std::unordered_set)
+OUTPUT_FOUR_ARG_CONTAINER(std::unordered_multiset)
 #endif
 
 #undef OUTPUT_FOUR_ARG_CONTAINER
@@ -124,9 +130,12 @@ inline std::ostream& operator<<(std::ostream& out, \
   return out; \
 }
 
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
 OUTPUT_FIVE_ARG_CONTAINER(__gnu_cxx::hash_map)
 OUTPUT_FIVE_ARG_CONTAINER(__gnu_cxx::hash_multimap)
+#elif defined(_LIBCPP_VERSION)
+OUTPUT_FIVE_ARG_CONTAINER(std::unordered_map)
+OUTPUT_FIVE_ARG_CONTAINER(std::unordered_multimap)
 #endif
 
 #undef OUTPUT_FIVE_ARG_CONTAINER
diff --git a/src/stl_logging_unittest.cc b/src/stl_logging_unittest.cc
index 5dcbc44..ee344ca 100644
--- a/src/stl_logging_unittest.cc
+++ b/src/stl_logging_unittest.cc
@@ -39,7 +39,7 @@
 #include <string>
 #include <vector>
 
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
 # include <ext/hash_map>
 # include <ext/hash_set>
 #endif
@@ -48,7 +48,7 @@
 #include "googletest.h"
 
 using namespace std;
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
 using namespace __gnu_cxx;
 #endif
 
@@ -83,7 +83,7 @@ void TestSTLLogging() {
     CHECK_EQ(m, copied_m);  // This must compile.
   }
 
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
   {
     // Test a hashed simple associative container.
     hash_set<int> hs;
@@ -98,7 +98,7 @@ void TestSTLLogging() {
   }
 #endif
 
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
   {
     // Test a hashed pair associative container.
     hash_map<int, string> hm;
@@ -145,7 +145,7 @@ void TestSTLLogging() {
     CHECK_EQ(m, copied_m);  // This must compile.
   }
 
-#ifdef __GNUC__
+#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
   {
     // Test a hashed simple associative container.
     // Use a user defined hash function.
diff --git a/src/demangle.cc b/src/demangle.cc
index 0daf308..1136e0d 100644
--- a/src/demangle.cc
+++ b/src/demangle.cc
@@ -167,7 +167,7 @@ static size_t StrLen(const char *str) {
 // Returns true if "str" has at least "n" characters remaining.
 static bool AtLeastNumCharsRemaining(const char *str, int n) {
   for (int i = 0; i < n; ++i) {
-    if (str == '\0') {
+    if (str[i] == '\0') {
       return false;
     }
   }
@@ -223,7 +223,7 @@ static bool ParseTwoCharToken(State *state, const char *two_char_token) {
 // Returns true and advances "mangled_cur" if we find any character in
 // "char_class" at "mangled_cur" position.
 static bool ParseCharClass(State *state, const char *char_class) {
-  if (state->mangled_cur == '\0') {
+  if (state->mangled_cur[0] == '\0') {
     return false;
   }
   const char *p = char_class;
diff --git a/src/stacktrace_powerpc-inl.h b/src/stacktrace_powerpc-inl.h
index 1090dde..03b9108 100644
--- a/src/stacktrace_powerpc-inl.h
+++ b/src/stacktrace_powerpc-inl.h
@@ -111,7 +111,7 @@ int GetStackTrace(void** result, int max_depth, int skip_count) {
       result[n++] = *(sp+2);
 #elif defined(_CALL_SYSV)
       result[n++] = *(sp+1);
-#elif defined(__APPLE__) || (defined(__linux) && defined(__PPC64__))
+#elif defined(__APPLE__) || ((defined(__linux) || defined(__linux__)) && defined(__PPC64__))
       // This check is in case the compiler doesn't define _CALL_AIX/etc.
       result[n++] = *(sp+2);
 #elif defined(__linux)
diff --git a/config.guess b/config.guess
index 278f9e9..f048baa 100755
--- a/config.guess
+++ b/config.guess
@@ -911,6 +911,9 @@ EOF
     ppc64:Linux:*:*)
 	echo powerpc64-unknown-linux-gnu
 	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-gnu
+	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
diff --git a/configure.ac b/configure.ac
index 7b4d21e..88aa0af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -127,27 +127,9 @@ if test x"$acx_pthread_ok" = x"yes"; then
   AC_CHECK_LIB(pthread, pthread_self)
 fi
 
-# Check if there is google-gflags library installed.
-SAVE_CFLAGS="$CFLAGS"
-SAVE_LIBS="$LIBS"
-AC_ARG_WITH(gflags, AS_HELP_STRING[--with-gflags=GFLAGS_DIR],
-  GFLAGS_CFLAGS="-I${with_gflags}/include"
-  GFLAGS_LIBS="-L${with_gflags}/lib -lgflags"
-  CFLAGS="$CFLAGS $GFLAGS_CFLAGS"
-  LIBS="$LIBS $GFLAGS_LIBS"
-)
-AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=1, ac_cv_have_libgflags=0)
-if test x"$ac_cv_have_libgflags" = x"1"; then
-  AC_DEFINE(HAVE_LIB_GFLAGS, 1, [define if you have google gflags library])
-  if test x"$GFLAGS_LIBS" = x""; then
-    GFLAGS_LIBS="-lgflags"
-  fi
-else
-  GFLAGS_CFLAGS=
-  GFLAGS_LIBS=
-fi
-CFLAGS="$SAVE_CFLAGS"
-LIBS="$SAVE_LIBS"
+GFLAGS_CFLAGS=
+GFLAGS_LIBS=
+ac_cv_have_libgflags=0
 
 # TODO(hamaji): Use official m4 macros provided by testing libraries
 #               once the m4 macro of Google Mocking becomes ready.
