You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2019/04/11 13:19:38 UTC
[mesos] 01/02: Updated the bundled glog to 0.4.0.
This is an automated email from the ASF dual-hosted git repository.
bennoe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 2e949d245fd711aae2ec7600d07eabdbc5a67b4e
Author: Andrei Sekretenko <as...@mesosphere.io>
AuthorDate: Thu Apr 11 15:15:43 2019 +0200
Updated the bundled glog to 0.4.0.
Review: https://reviews.apache.org/r/70387/
---
3rdparty/CMakeLists.txt | 67 +-
3rdparty/Makefile.am | 10 +-
3rdparty/cmake/Versions.cmake | 14 +-
3rdparty/glog-0.3.3.patch | 1801 ----------------------------
3rdparty/glog-0.3.3.tar.gz | Bin 509676 -> 0 bytes
3rdparty/glog-0.4.0.patch | 282 +++++
3rdparty/glog-0.4.0.tar.gz | Bin 0 -> 200955 bytes
3rdparty/glog-da816ea70.patch | 726 -----------
3rdparty/versions.am | 2 +-
LICENSE | 2 +-
cmake/CompilationConfigure.cmake | 1 -
src/python/native_common/ext_modules.py.in | 2 +-
support/mesos-tidy/entrypoint.sh | 2 +-
13 files changed, 330 insertions(+), 2579 deletions(-)
diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
index 53396fb..0a33ed9 100644
--- a/3rdparty/CMakeLists.txt
+++ b/3rdparty/CMakeLists.txt
@@ -58,10 +58,6 @@ if (WIN32)
set(ZLIB_URL ${3RDPARTY_DEPENDENCIES}/zlib-${ZLIB_VERSION}.tar.gz)
set(SASL2_URL ${3RDPARTY_DEPENDENCIES}/cyrus-sasl-${SASL2_VERSION}.tar.gz)
set(WCLAYER_URL ${3RDPARTY_DEPENDENCIES}/wclayer.exe)
-
- # NOTE: The Windows version of Glog is patched and only available in the
- # 3rdparty repo, not the local repo.
- set(GLOG_URL ${3RDPARTY_DEPENDENCIES}/glog-${GLOG_VERSION}.tar.gz)
endif ()
if (NOT WIN32)
@@ -366,9 +362,9 @@ add_dependencies(glog ${GLOG_TARGET})
# On Windows, patch it to enable stack tracing.
PATCH_CMD(GLOG_PATCH_CMD glog-${GLOG_VERSION}.patch)
-if (WIN32)
- set(GLOG_INSTALL_CMD ${CMAKE_NOOP})
+set(GLOG_LIBRARY_NAME libglog)
+if (WIN32)
# NOTE: Windows-specific workaround for a glog issue documented here[1].
# Basically, Windows.h and glog/logging.h both define ERROR. Since we don't
# need the Windows ERROR, we can use this flag to avoid defining it at all.
@@ -385,39 +381,44 @@ if (WIN32)
set_target_properties(
glog PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES ${GLOG_ROOT}/src/windows
# TODO(andschwa): Remove this when glog is updated.
IMPORTED_LINK_INTERFACE_LIBRARIES DbgHelp
INTERFACE_COMPILE_DEFINITIONS "${GLOG_COMPILE_DEFINITIONS}")
- if (CMAKE_GENERATOR MATCHES "Visual Studio")
- set_target_properties(
- glog PROPERTIES
- IMPORTED_LOCATION_DEBUG ${GLOG_ROOT}-build/Debug/glog${LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELEASE ${GLOG_ROOT}-build/Release/glog${LIBRARY_SUFFIX}
- IMPORTED_IMPLIB_DEBUG ${GLOG_ROOT}-build/Debug/glog${CMAKE_IMPORT_LIBRARY_SUFFIX}
- IMPORTED_IMPLIB_RELEASE ${GLOG_ROOT}-build/Release/glog${CMAKE_IMPORT_LIBRARY_SUFFIX})
- else ()
- set_target_properties(
- glog PROPERTIES
- IMPORTED_LOCATION ${GLOG_ROOT}-build/glog${LIBRARY_SUFFIX}
- IMPORTED_IMPLIB ${GLOG_ROOT}-build/glog${CMAKE_IMPORT_LIBRARY_SUFFIX})
- endif ()
-else ()
- # TODO(andschwa): Build with CMake instead when glog is updated.
- set(GLOG_CONFIG_CMD ${GLOG_ROOT}/src/../configure --with-pic GTEST_CONFIG=no --prefix=${GLOG_ROOT}-build)
- if (FREEBSD)
- list(APPEND GLOG_CONFIG_CMD LDFLAGS=-lexecinfo)
- endif ()
- set(GLOG_BUILD_CMD ${MAKE_PROGRAM})
- set(GLOG_INSTALL_CMD ${MAKE_PROGRAM} install)
+endif ()
+
+set(GLOG_INSTALL_DIR ${GLOG_ROOT}-install)
+if (CMAKE_GENERATOR MATCHES "Visual Studio")
+ set_target_properties(
+ glog PROPERTIES
+ IMPORTED_LOCATION_DEBUG ${GLOG_INSTALL_DIR}/lib/glogd${LIBRARY_SUFFIX}
+ IMPORTED_IMPLIB_DEBUG ${GLOG_INSTALL_DIR}/lib/glogd${CMAKE_IMPORT_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELEASE ${GLOG_INSTALL_DIR}/lib/glog${LIBRARY_SUFFIX}
+ IMPORTED_IMPLIB_RELEASE ${GLOG_INSTALL_DIR}/lib/glog${CMAKE_IMPORT_LIBRARY_SUFFIX}
+ )
+else ()
set_target_properties(
glog PROPERTIES
- IMPORTED_LOCATION ${GLOG_ROOT}-build/lib/libglog${LIBRARY_SUFFIX}
- INTERFACE_INCLUDE_DIRECTORIES ${GLOG_ROOT}-build/include)
+ IMPORTED_LOCATION ${GLOG_INSTALL_DIR}/lib/libglog${LIBRARY_SUFFIX}
+ IMPORTED_IMPLIB ${GLOG_INSTALL_DIR}/lib/libglog${CMAKE_IMPORT_LIBRARY_SUFFIX}
+ )
endif ()
+set_target_properties(
+ glog PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${GLOG_INSTALL_DIR}/include
+)
+
+set(
+ GLOG_CMAKE_ARGS
+ ${CMAKE_CXX_FORWARD_ARGS}
+ -DBUILD_TESTING=OFF
+ -DCMAKE_INSTALL_BINDIR=${GLOG_INSTALL_DIR}/bin
+ -DCMAKE_INSTALL_INCLUDEDIR=${GLOG_INSTALL_DIR}/include
+ -DCMAKE_INSTALL_LIBDIR=${GLOG_INSTALL_DIR}/lib
+)
+
MAKE_INCLUDE_DIR(glog)
GET_BYPRODUCTS(glog)
@@ -426,10 +427,8 @@ ExternalProject_Add(
PREFIX ${GLOG_CMAKE_ROOT}
BUILD_BYPRODUCTS ${GLOG_BYPRODUCTS}
PATCH_COMMAND ${GLOG_PATCH_CMD}
- CMAKE_ARGS ${CMAKE_CXX_FORWARD_ARGS};-DBUILD_TESTING=OFF
- CONFIGURE_COMMAND ${GLOG_CONFIG_CMD}
- BUILD_COMMAND ${GLOG_BUILD_CMD}
- INSTALL_COMMAND ${GLOG_INSTALL_CMD}
+ CMAKE_ARGS ${GLOG_CMAKE_ARGS}
+ INSTALL_DIR ${GLOG_INSTALL_DIR}
URL ${GLOG_URL}
URL_HASH ${GLOG_HASH})
diff --git a/3rdparty/Makefile.am b/3rdparty/Makefile.am
index 99815da..0de005d 100644
--- a/3rdparty/Makefile.am
+++ b/3rdparty/Makefile.am
@@ -135,7 +135,6 @@ EXTRA_DIST += \
$(PROTOBUF).patch \
bzip2-1.0.6.patch \
cyrus-sasl-2.1.27rc3.patch \
- glog-da816ea70.patch \
xz-5.2.3.patch
CLEAN_EXTRACTED = \
@@ -265,8 +264,15 @@ $(LIB_GLOG): $(GLOG)-build-stamp
# when building with clang).
# We explicitly build only libglog.la as it is the artifact we depend
# on. This e.g., avoids building glog-internal tests.
+#
+# NOTE:
+# On some platforms patch fails to remove test-driver (it is a broken symlink),
+# that's why we need to remove it here.
+# Also, autogen.sh might be CREATED by the patch and might need its mode fixed.
$(GLOG)-build-stamp: $(GLOG)-stamp
- cd $(GLOG) && ./configure GTEST_CONFIG=no $(CONFIGURE_ARGS) && \
+ cd $(GLOG) &&\
+ ./autogen.sh && \
+ ./configure GTEST_CONFIG=no $(CONFIGURE_ARGS) && \
$(MAKE) $(AM_MAKEFLAGS) $(GLOG_LDFLAGS) libglog.la
touch $@
diff --git a/3rdparty/cmake/Versions.cmake b/3rdparty/cmake/Versions.cmake
index b42d52c..0788e61 100644
--- a/3rdparty/cmake/Versions.cmake
+++ b/3rdparty/cmake/Versions.cmake
@@ -47,19 +47,11 @@ set(ZLIB_VERSION "1.2.8")
set(ZLIB_HASH "SHA256=36658CB768A54C1D4DEC43C3116C27ED893E88B02ECFCB44F2166F9C0B7F2A0D")
set(ZOOKEEPER_VERSION "3.4.8")
set(ZOOKEEPER_HASH "SHA256=F10A0B51F45C4F64C1FE69EF713ABF9EB9571BC7385A82DA892E83BB6C965E90")
+set(GLOG_VERSION "0.4.0")
+set(GLOG_HASH "SHA256=F28359AEBA12F30D73D9E4711EF356DC842886968112162BC73002645139C39C")
# Platform-dependent versions.
-if (NOT WIN32)
- set(GLOG_VERSION "0.3.3")
- set(GLOG_HASH "SHA256=FBF90C2285BA0561DB7A40F8A4EEFB9AA963E7D399BD450363E959929FE849D0")
-else ()
- # TODO(andschwa): (MESOS-3394) Update Windows to use glog v0.3.6 when it is
- # released, as it contains our patches. For now, we simply point Windows
- # builds at a commit hash in the glog history that has all the functionality
- # we want.
- set(GLOG_VERSION "da816ea70")
- set(GLOG_HASH "SHA256=15338EDBE643F3F9A769FBCA34C3AFDF48D8779D800E7F0878A9649A53339F96")
-
+if (WIN32)
set(SASL2_VERSION "2.1.27rc3")
set(SASL2_HASH "SHA256=A50F29042AD313A3B8F1EDD1DB6F41BC8D610C00B223EA305D903BA6E6E63B2A")
endif ()
diff --git a/3rdparty/glog-0.3.3.patch b/3rdparty/glog-0.3.3.patch
deleted file mode 100644
index c33fea2..0000000
--- a/3rdparty/glog-0.3.3.patch
+++ /dev/null
@@ -1,1801 +0,0 @@
-diff --git a/config.guess b/config.guess
-old mode 100755
-new mode 100644
-index 278f9e9..69ed3e5
---- a/config.guess
-+++ b/config.guess
-@@ -1,14 +1,12 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
--# Inc.
-+# Copyright 1992-2017 Free Software Foundation, Inc.
-
--timestamp='2007-07-22'
-+timestamp='2017-03-05'
-
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2 of the License, or
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
-@@ -17,26 +15,22 @@ timestamp='2007-07-22'
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--
--# Originally written by Per Bothner <pe...@bothner.com>.
--# Please send patches to <co...@gnu.org>. Submit a context
--# diff and a properly formatted ChangeLog entry.
-+# the same distribution terms that you use for the rest of that
-+# program. This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
- #
--# This script attempts to guess a canonical system name similar to
--# config.sub. If it succeeds, it prints the system name on stdout, and
--# exits with 0. Otherwise, it exits with 1.
-+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
- #
--# The plan is that this can be called by configure scripts if you
--# don't specify an explicit build system type.
-+# You can get the latest version of this script from:
-+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-+#
-+# Please send patches to <co...@gnu.org>.
-+
-
- me=`echo "$0" | sed -e 's,.*/,,'`
-
-@@ -56,8 +50,7 @@ version="\
- GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
--Free Software Foundation, Inc.
-+Copyright 1992-2017 Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -139,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
- UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-+case "${UNAME_SYSTEM}" in
-+Linux|GNU|GNU/*)
-+ # If the system lacks a compiler, then just pick glibc.
-+ # We could probably try harder.
-+ LIBC=gnu
-+
-+ eval $set_cc_for_build
-+ cat <<-EOF > $dummy.c
-+ #include <features.h>
-+ #if defined(__UCLIBC__)
-+ LIBC=uclibc
-+ #elif defined(__dietlibc__)
-+ LIBC=dietlibc
-+ #else
-+ LIBC=gnu
-+ #endif
-+ EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
-+ ;;
-+esac
-+
- # Note: order is significant - the case branches are not exclusive.
-
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
-- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
-@@ -154,23 +168,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
-- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-+ /sbin/$sysctl 2>/dev/null || \
-+ /usr/sbin/$sysctl 2>/dev/null || \
-+ echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- sh5el) machine=sh5le-unknown ;;
-+ earmv*)
-+ arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-+ endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
-+ machine=${arch}${endian}-unknown
-+ ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
-- # to ELF recently, or will in the future.
-+ # to ELF recently (or will in the future) and ABI.
- case "${UNAME_MACHINE_ARCH}" in
-+ earm*)
-+ os=netbsdelf
-+ ;;
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-- | grep __ELF__ >/dev/null
-+ | grep -q __ELF__
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
-@@ -180,7 +204,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- fi
- ;;
- *)
-- os=netbsd
-+ os=netbsd
-+ ;;
-+ esac
-+ # Determine ABI tags.
-+ case "${UNAME_MACHINE_ARCH}" in
-+ earm*)
-+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-+ abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
- ;;
- esac
- # The OS release
-@@ -193,18 +224,26 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- release='-gnu'
- ;;
- *)
-- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-- echo "${machine}-${os}${release}"
-+ echo "${machine}-${os}${release}${abi}"
-+ exit ;;
-+ *:Bitrig:*:*)
-+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
-+ *:LibertyBSD:*:*)
-+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-+ echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
-+ exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
-@@ -217,13 +256,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
-+ *:Sortix:*:*)
-+ echo ${UNAME_MACHINE}-unknown-sortix
-+ exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
-- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
-@@ -233,43 +275,46 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
-- UNAME_MACHINE="alpha" ;;
-+ UNAME_MACHINE=alpha ;;
- "EV4.5 (21064)")
-- UNAME_MACHINE="alpha" ;;
-+ UNAME_MACHINE=alpha ;;
- "LCA4 (21066/21068)")
-- UNAME_MACHINE="alpha" ;;
-+ UNAME_MACHINE=alpha ;;
- "EV5 (21164)")
-- UNAME_MACHINE="alphaev5" ;;
-+ UNAME_MACHINE=alphaev5 ;;
- "EV5.6 (21164A)")
-- UNAME_MACHINE="alphaev56" ;;
-+ UNAME_MACHINE=alphaev56 ;;
- "EV5.6 (21164PC)")
-- UNAME_MACHINE="alphapca56" ;;
-+ UNAME_MACHINE=alphapca56 ;;
- "EV5.7 (21164PC)")
-- UNAME_MACHINE="alphapca57" ;;
-+ UNAME_MACHINE=alphapca57 ;;
- "EV6 (21264)")
-- UNAME_MACHINE="alphaev6" ;;
-+ UNAME_MACHINE=alphaev6 ;;
- "EV6.7 (21264A)")
-- UNAME_MACHINE="alphaev67" ;;
-+ UNAME_MACHINE=alphaev67 ;;
- "EV6.8CB (21264C)")
-- UNAME_MACHINE="alphaev68" ;;
-+ UNAME_MACHINE=alphaev68 ;;
- "EV6.8AL (21264B)")
-- UNAME_MACHINE="alphaev68" ;;
-+ UNAME_MACHINE=alphaev68 ;;
- "EV6.8CX (21264D)")
-- UNAME_MACHINE="alphaev68" ;;
-+ UNAME_MACHINE=alphaev68 ;;
- "EV6.9A (21264/EV69A)")
-- UNAME_MACHINE="alphaev69" ;;
-+ UNAME_MACHINE=alphaev69 ;;
- "EV7 (21364)")
-- UNAME_MACHINE="alphaev7" ;;
-+ UNAME_MACHINE=alphaev7 ;;
- "EV7.9 (21364A)")
-- UNAME_MACHINE="alphaev79" ;;
-+ UNAME_MACHINE=alphaev79 ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
-- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-- exit ;;
-+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-+ exitcode=$?
-+ trap '' 0
-+ exit $exitcode ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
-@@ -295,12 +340,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
-- echo powerpc-ibm-os400
-+ echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
-- arm:riscos:*:*|arm:RISCOS:*:*)
-+ arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-@@ -324,14 +369,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
-+ s390x:SunOS:*:*)
-+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-+ exit ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
-+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-+ echo i386-pc-auroraux${UNAME_RELEASE}
-+ exit ;;
- i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-+ eval $set_cc_for_build
-+ SUN_ARCH=i386
-+ # If there is a compiler, see if it is configured for 64-bit objects.
-+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-+ # This test works for both compilers.
-+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-+ grep IS_64BIT_ARCH >/dev/null
-+ then
-+ SUN_ARCH=x86_64
-+ fi
-+ fi
-+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
-@@ -353,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-+ test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
-@@ -375,23 +439,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-- echo m68k-atari-mint${UNAME_RELEASE}
-+ echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
-- exit ;;
-+ exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-- echo m68k-atari-mint${UNAME_RELEASE}
-+ echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-- echo m68k-milan-mint${UNAME_RELEASE}
-- exit ;;
-+ echo m68k-milan-mint${UNAME_RELEASE}
-+ exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-- echo m68k-hades-mint${UNAME_RELEASE}
-- exit ;;
-+ echo m68k-hades-mint${UNAME_RELEASE}
-+ exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-- echo m68k-unknown-mint${UNAME_RELEASE}
-- exit ;;
-+ echo m68k-unknown-mint${UNAME_RELEASE}
-+ exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
-@@ -461,8 +525,8 @@ EOF
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
-- # DG/UX returns AViiON for all architectures
-- UNAME_PROCESSOR=`/usr/bin/uname -p`
-+ # DG/UX returns AViiON for all architectures
-+ UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-@@ -475,7 +539,7 @@ EOF
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
-- exit ;;
-+ exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
-@@ -532,15 +596,16 @@ EOF
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
-- *:AIX:*:[45])
-+ *:AIX:*:[4567])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
-- if [ -x /usr/bin/oslevel ] ; then
-- IBM_REV=`/usr/bin/oslevel`
-+ if [ -x /usr/bin/lslpp ] ; then
-+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
-@@ -575,58 +640,58 @@ EOF
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-- case "${sc_cpu_version}" in
-- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-- 532) # CPU_PA_RISC2_0
-- case "${sc_kernel_bits}" in
-- 32) HP_ARCH="hppa2.0n" ;;
-- 64) HP_ARCH="hppa2.0w" ;;
-- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
-- esac ;;
-- esac
-+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+ case "${sc_cpu_version}" in
-+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
-+ 532) # CPU_PA_RISC2_0
-+ case "${sc_kernel_bits}" in
-+ 32) HP_ARCH=hppa2.0n ;;
-+ 64) HP_ARCH=hppa2.0w ;;
-+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
-+ esac ;;
-+ esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-+ sed 's/^ //' << EOF >$dummy.c
-
-- #define _HPUX_SOURCE
-- #include <stdlib.h>
-- #include <unistd.h>
-+ #define _HPUX_SOURCE
-+ #include <stdlib.h>
-+ #include <unistd.h>
-
-- int main ()
-- {
-- #if defined(_SC_KERNEL_BITS)
-- long bits = sysconf(_SC_KERNEL_BITS);
-- #endif
-- long cpu = sysconf (_SC_CPU_VERSION);
-+ int main ()
-+ {
-+ #if defined(_SC_KERNEL_BITS)
-+ long bits = sysconf(_SC_KERNEL_BITS);
-+ #endif
-+ long cpu = sysconf (_SC_CPU_VERSION);
-
-- switch (cpu)
-- {
-- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-- case CPU_PA_RISC2_0:
-- #if defined(_SC_KERNEL_BITS)
-- switch (bits)
-- {
-- case 64: puts ("hppa2.0w"); break;
-- case 32: puts ("hppa2.0n"); break;
-- default: puts ("hppa2.0"); break;
-- } break;
-- #else /* !defined(_SC_KERNEL_BITS) */
-- puts ("hppa2.0"); break;
-- #endif
-- default: puts ("hppa1.0"); break;
-- }
-- exit (0);
-- }
-+ switch (cpu)
-+ {
-+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-+ case CPU_PA_RISC2_0:
-+ #if defined(_SC_KERNEL_BITS)
-+ switch (bits)
-+ {
-+ case 64: puts ("hppa2.0w"); break;
-+ case 32: puts ("hppa2.0n"); break;
-+ default: puts ("hppa2.0"); break;
-+ } break;
-+ #else /* !defined(_SC_KERNEL_BITS) */
-+ puts ("hppa2.0"); break;
-+ #endif
-+ default: puts ("hppa1.0"); break;
-+ }
-+ exit (0);
-+ }
- EOF
-- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-+ (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
-- if [ ${HP_ARCH} = "hppa2.0w" ]
-+ if [ ${HP_ARCH} = hppa2.0w ]
- then
- eval $set_cc_for_build
-
-@@ -639,12 +704,12 @@ EOF
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
-- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-- grep __LP64__ >/dev/null
-+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
-+ grep -q __LP64__
- then
-- HP_ARCH="hppa2.0w"
-+ HP_ARCH=hppa2.0w
- else
-- HP_ARCH="hppa64"
-+ HP_ARCH=hppa64
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-@@ -711,22 +776,22 @@ EOF
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
-- exit ;;
-+ exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
-- exit ;;
-+ exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
-- exit ;;
-+ exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
-- exit ;;
-+ exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
-- exit ;;
-+ exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
-@@ -749,15 +814,15 @@ EOF
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-- exit ;;
-+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+ exit ;;
- 5000:UNIX_System_V:4.*:*)
-- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-@@ -769,40 +834,52 @@ EOF
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
-- case ${UNAME_MACHINE} in
-- pc98)
-- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+ UNAME_PROCESSOR=`/usr/bin/uname -p`
-+ case ${UNAME_PROCESSOR} in
- amd64)
-- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-- *)
-- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+ UNAME_PROCESSOR=x86_64 ;;
-+ i386)
-+ UNAME_PROCESSOR=i586 ;;
- esac
-+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
-+ *:MINGW64*:*)
-+ echo ${UNAME_MACHINE}-pc-mingw64
-+ exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
-+ *:MSYS*:*)
-+ echo ${UNAME_MACHINE}-pc-msys
-+ exit ;;
- i*:windows32*:*)
-- # uname -m includes "-pc" on this system.
-- echo ${UNAME_MACHINE}-mingw32
-+ # uname -m includes "-pc" on this system.
-+ echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
-- *:Interix*:[3456]*)
-- case ${UNAME_MACHINE} in
-+ *:Interix*:*)
-+ case ${UNAME_MACHINE} in
- x86)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
-- EM64T | authenticamd)
-+ authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
-+ IA64)
-+ echo ia64-unknown-interix${UNAME_RELEASE}
-+ exit ;;
- esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
-+ 8664:Windows_NT:*)
-+ echo x86_64-pc-mks
-+ exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-@@ -823,93 +900,21 @@ EOF
- exit ;;
- *:GNU:*:*)
- # the GNU system
-- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
-- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
-- arm*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ aarch64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
-- avr32*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-- exit ;;
-- cris:Linux:*:*)
-- echo cris-axis-linux-gnu
-- exit ;;
-- crisv32:Linux:*:*)
-- echo crisv32-axis-linux-gnu
-- exit ;;
-- frv:Linux:*:*)
-- echo frv-unknown-linux-gnu
-- exit ;;
-- ia64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-- exit ;;
-- m32r*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-- exit ;;
-- m68*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-- exit ;;
-- mips:Linux:*:*)
-- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-- #undef CPU
-- #undef mips
-- #undef mipsel
-- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-- CPU=mipsel
-- #else
-- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-- CPU=mips
-- #else
-- CPU=
-- #endif
-- #endif
--EOF
-- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-- /^CPU/{
-- s: ::g
-- p
-- }'`"
-- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-- ;;
-- mips64:Linux:*:*)
-- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-- #undef CPU
-- #undef mips64
-- #undef mips64el
-- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-- CPU=mips64el
-- #else
-- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-- CPU=mips64
-- #else
-- CPU=
-- #endif
-- #endif
--EOF
-- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-- /^CPU/{
-- s: ::g
-- p
-- }'`"
-- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-- ;;
-- or32:Linux:*:*)
-- echo or32-unknown-linux-gnu
-- exit ;;
-- ppc:Linux:*:*)
-- echo powerpc-unknown-linux-gnu
-- exit ;;
-- ppc64:Linux:*:*)
-- echo powerpc64-unknown-linux-gnu
-+ aarch64_be:Linux:*:*)
-+ UNAME_MACHINE=aarch64_be
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-@@ -920,106 +925,144 @@ EOF
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
-- esac
-- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ esac
-+ objdump --private-headers /bin/sh | grep -q ld.so.1
-+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ arc:Linux:*:* | arceb:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ arm*:Linux:*:*)
-+ eval $set_cc_for_build
-+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-+ | grep -q __ARM_EABI__
-+ then
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ else
-+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-+ | grep -q __ARM_PCS_VFP
-+ then
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-+ else
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-+ fi
-+ fi
-+ exit ;;
-+ avr32*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ cris:Linux:*:*)
-+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-+ exit ;;
-+ crisv32:Linux:*:*)
-+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-+ exit ;;
-+ e2k:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ frv:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ hexagon:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ i*86:Linux:*:*)
-+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-+ exit ;;
-+ ia64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ k1om:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ m32r*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ m68*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ mips:Linux:*:* | mips64:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef ${UNAME_MACHINE}
-+ #undef ${UNAME_MACHINE}el
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=${UNAME_MACHINE}el
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=${UNAME_MACHINE}
-+ #else
-+ CPU=
-+ #endif
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-+ ;;
-+ mips64el:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ openrisc*:Linux:*:*)
-+ echo or1k-unknown-linux-${LIBC}
-+ exit ;;
-+ or32:Linux:*:* | or1k*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ padre:Linux:*:*)
-+ echo sparc-unknown-linux-${LIBC}
-+ exit ;;
-+ parisc64:Linux:*:* | hppa64:Linux:*:*)
-+ echo hppa64-unknown-linux-${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-- PA7*) echo hppa1.1-unknown-linux-gnu ;;
-- PA8*) echo hppa2.0-unknown-linux-gnu ;;
-- *) echo hppa-unknown-linux-gnu ;;
-+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-+ *) echo hppa-unknown-linux-${LIBC} ;;
- esac
- exit ;;
-- parisc64:Linux:*:* | hppa64:Linux:*:*)
-- echo hppa64-unknown-linux-gnu
-+ ppc64:Linux:*:*)
-+ echo powerpc64-unknown-linux-${LIBC}
-+ exit ;;
-+ ppc:Linux:*:*)
-+ echo powerpc-unknown-linux-${LIBC}
-+ exit ;;
-+ ppc64le:Linux:*:*)
-+ echo powerpc64le-unknown-linux-${LIBC}
-+ exit ;;
-+ ppcle:Linux:*:*)
-+ echo powerpcle-unknown-linux-${LIBC}
-+ exit ;;
-+ riscv32:Linux:*:* | riscv64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
-- echo ${UNAME_MACHINE}-ibm-linux
-+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- exit ;;
- sh64*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sh*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ tile*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- vax:Linux:*:*)
-- echo ${UNAME_MACHINE}-dec-linux-gnu
-+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
- exit ;;
- x86_64:Linux:*:*)
-- echo x86_64-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
- exit ;;
-- xtensa:Linux:*:*)
-- echo xtensa-unknown-linux-gnu
-+ xtensa*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
-- i*86:Linux:*:*)
-- # The BFD linker knows what the default object file format is, so
-- # first see if it will tell us. cd to the root directory to prevent
-- # problems with other programs or directories called `ld' in the path.
-- # Set LC_ALL=C to ensure ld outputs messages in English.
-- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-- | sed -ne '/supported targets:/!d
-- s/[ ][ ]*/ /g
-- s/.*supported targets: *//
-- s/ .*//
-- p'`
-- case "$ld_supported_targets" in
-- elf32-i386)
-- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-- ;;
-- a.out-i386-linux)
-- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-- exit ;;
-- coff-i386)
-- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-- exit ;;
-- "")
-- # Either a pre-BFD a.out linker (linux-gnuoldld) or
-- # one that does not give us useful --help.
-- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-- exit ;;
-- esac
-- # Determine whether the default compiler is a.out or elf
-- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-- #include <features.h>
-- #ifdef __ELF__
-- # ifdef __GLIBC__
-- # if __GLIBC__ >= 2
-- LIBC=gnu
-- # else
-- LIBC=gnulibc1
-- # endif
-- # else
-- LIBC=gnulibc1
-- # endif
-- #else
-- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-- LIBC=gnu
-- #else
-- LIBC=gnuaout
-- #endif
-- #endif
-- #ifdef __dietlibc__
-- LIBC=dietlibc
-- #endif
--EOF
-- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-- /^LIBC/{
-- s: ::g
-- p
-- }'`"
-- test x"${LIBC}" != x && {
-- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-- exit
-- }
-- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
-@@ -1027,11 +1070,11 @@ EOF
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
-- # Unixware is an offshoot of SVR4, but it has its own version
-- # number series starting with 2...
-- # I am not positive that other SVR4 systems won't match this,
-+ # Unixware is an offshoot of SVR4, but it has its own version
-+ # number series starting with 2...
-+ # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
-- # Use sysv4.2uw... so that sysv4* matches it.
-+ # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
-@@ -1048,7 +1091,7 @@ EOF
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
-- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
-@@ -1063,7 +1106,7 @@ EOF
- fi
- exit ;;
- i*86:*:5:[678]*)
-- # UnixWare 7.x, OpenUNIX and OpenServer 6.
-+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
-@@ -1091,10 +1134,13 @@ EOF
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
-- # uname -m prints for DJGPP always 'pc', but it prints nothing about
-- # the processor, so we play safe by assuming i386.
-- echo i386-pc-msdosdjgpp
-- exit ;;
-+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
-+ # the processor, so we play safe by assuming i586.
-+ # Note: whatever this is, it MUST be the same as what config.sub
-+ # prints for the "djgpp" host, or else GDB configure will decide that
-+ # this is a cross-build.
-+ echo i586-pc-msdosdjgpp
-+ exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
-@@ -1129,8 +1175,18 @@ EOF
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-- && { echo i486-ncr-sysv4; exit; } ;;
-+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+ && { echo i486-ncr-sysv4; exit; } ;;
-+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-+ OS_REL='.3'
-+ test -r /etc/.relid \
-+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
-@@ -1143,7 +1199,7 @@ EOF
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
-- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
-@@ -1163,10 +1219,10 @@ EOF
- echo ns32k-sni-sysv
- fi
- exit ;;
-- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-- # says <Ri...@ccMail.Census.GOV>
-- echo i586-unisys-sysv4
-- exit ;;
-+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+ # says <Ri...@ccMail.Census.GOV>
-+ echo i586-unisys-sysv4
-+ exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <he...@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
-@@ -1192,11 +1248,11 @@ EOF
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
-- echo mips-nec-sysv${UNAME_RELEASE}
-+ echo mips-nec-sysv${UNAME_RELEASE}
- else
-- echo mips-unknown-sysv${UNAME_RELEASE}
-+ echo mips-unknown-sysv${UNAME_RELEASE}
- fi
-- exit ;;
-+ exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
-@@ -1206,6 +1262,12 @@ EOF
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
-+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
-+ echo i586-pc-haiku
-+ exit ;;
-+ x86_64:Haiku:*:*)
-+ echo x86_64-unknown-haiku
-+ exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
-@@ -1224,6 +1286,9 @@ EOF
- SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
- exit ;;
-+ SX-ACE:SUPER-UX:*:*)
-+ echo sxace-nec-superux${UNAME_RELEASE}
-+ exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
-@@ -1232,14 +1297,36 @@ EOF
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-- case $UNAME_PROCESSOR in
-- unknown) UNAME_PROCESSOR=powerpc ;;
-- esac
-+ eval $set_cc_for_build
-+ if test "$UNAME_PROCESSOR" = unknown ; then
-+ UNAME_PROCESSOR=powerpc
-+ fi
-+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-+ grep IS_64BIT_ARCH >/dev/null
-+ then
-+ case $UNAME_PROCESSOR in
-+ i386) UNAME_PROCESSOR=x86_64 ;;
-+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
-+ esac
-+ fi
-+ fi
-+ elif test "$UNAME_PROCESSOR" = i386 ; then
-+ # Avoid executing cc on OS X 10.9, as it ships with a stub
-+ # that puts up a graphical alert prompting to install
-+ # developer tools. Any system running Mac OS X 10.7 or
-+ # later (Darwin 11 and later) is required to have a 64-bit
-+ # processor. This is not true of the ARM version of Darwin
-+ # that Apple uses in portable devices.
-+ UNAME_PROCESSOR=x86_64
-+ fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
-- if test "$UNAME_PROCESSOR" = "x86"; then
-+ if test "$UNAME_PROCESSOR" = x86; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
-@@ -1248,12 +1335,18 @@ EOF
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
-- NSE-?:NONSTOP_KERNEL:*:*)
-+ NEO-?:NONSTOP_KERNEL:*:*)
-+ echo neo-tandem-nsk${UNAME_RELEASE}
-+ exit ;;
-+ NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
-+ NSX-?:NONSTOP_KERNEL:*:*)
-+ echo nsx-tandem-nsk${UNAME_RELEASE}
-+ exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
-@@ -1267,7 +1360,7 @@ EOF
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
-- if test "$cputype" = "386"; then
-+ if test "$cputype" = 386; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
-@@ -1293,13 +1386,13 @@ EOF
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
-- echo mips-sei-seiux${UNAME_RELEASE}
-+ echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
-- UNAME_MACHINE=`(uname -p) 2>/dev/null`
-+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
-@@ -1309,179 +1402,36 @@ EOF
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
-- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
- exit ;;
- i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
- exit ;;
-+ i*86:AROS:*:*)
-+ echo ${UNAME_MACHINE}-pc-aros
-+ exit ;;
-+ x86_64:VMkernel:*:*)
-+ echo ${UNAME_MACHINE}-unknown-esx
-+ exit ;;
-+ amd64:Isilon\ OneFS:*:*)
-+ echo x86_64-unknown-onefs
-+ exit ;;
- esac
-
--#echo '(No uname command or uname output not recognized.)' 1>&2
--#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
--
--eval $set_cc_for_build
--cat >$dummy.c <<EOF
--#ifdef _SEQUENT_
--# include <sys/types.h>
--# include <sys/utsname.h>
--#endif
--main ()
--{
--#if defined (sony)
--#if defined (MIPSEB)
-- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
-- I don't know.... */
-- printf ("mips-sony-bsd\n"); exit (0);
--#else
--#include <sys/param.h>
-- printf ("m68k-sony-newsos%s\n",
--#ifdef NEWSOS4
-- "4"
--#else
-- ""
--#endif
-- ); exit (0);
--#endif
--#endif
--
--#if defined (__arm) && defined (__acorn) && defined (__unix)
-- printf ("arm-acorn-riscix\n"); exit (0);
--#endif
--
--#if defined (hp300) && !defined (hpux)
-- printf ("m68k-hp-bsd\n"); exit (0);
--#endif
--
--#if defined (NeXT)
--#if !defined (__ARCHITECTURE__)
--#define __ARCHITECTURE__ "m68k"
--#endif
-- int version;
-- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-- if (version < 4)
-- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-- else
-- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-- exit (0);
--#endif
--
--#if defined (MULTIMAX) || defined (n16)
--#if defined (UMAXV)
-- printf ("ns32k-encore-sysv\n"); exit (0);
--#else
--#if defined (CMU)
-- printf ("ns32k-encore-mach\n"); exit (0);
--#else
-- printf ("ns32k-encore-bsd\n"); exit (0);
--#endif
--#endif
--#endif
--
--#if defined (__386BSD__)
-- printf ("i386-pc-bsd\n"); exit (0);
--#endif
--
--#if defined (sequent)
--#if defined (i386)
-- printf ("i386-sequent-dynix\n"); exit (0);
--#endif
--#if defined (ns32000)
-- printf ("ns32k-sequent-dynix\n"); exit (0);
--#endif
--#endif
--
--#if defined (_SEQUENT_)
-- struct utsname un;
--
-- uname(&un);
--
-- if (strncmp(un.version, "V2", 2) == 0) {
-- printf ("i386-sequent-ptx2\n"); exit (0);
-- }
-- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-- printf ("i386-sequent-ptx1\n"); exit (0);
-- }
-- printf ("i386-sequent-ptx\n"); exit (0);
--
--#endif
--
--#if defined (vax)
--# if !defined (ultrix)
--# include <sys/param.h>
--# if defined (BSD)
--# if BSD == 43
-- printf ("vax-dec-bsd4.3\n"); exit (0);
--# else
--# if BSD == 199006
-- printf ("vax-dec-bsd4.3reno\n"); exit (0);
--# else
-- printf ("vax-dec-bsd\n"); exit (0);
--# endif
--# endif
--# else
-- printf ("vax-dec-bsd\n"); exit (0);
--# endif
--# else
-- printf ("vax-dec-ultrix\n"); exit (0);
--# endif
--#endif
--
--#if defined (alliant) && defined (i860)
-- printf ("i860-alliant-bsd\n"); exit (0);
--#endif
--
-- exit (1);
--}
--EOF
--
--$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-- { echo "$SYSTEM_NAME"; exit; }
--
--# Apollos put the system type in the environment.
--
--test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
--
--# Convex versions that predate uname can use getsysinfo(1)
--
--if [ -x /usr/convex/getsysinfo ]
--then
-- case `getsysinfo -f cpu_type` in
-- c1*)
-- echo c1-convex-bsd
-- exit ;;
-- c2*)
-- if getsysinfo -f scalar_acc
-- then echo c32-convex-bsd
-- else echo c2-convex-bsd
-- fi
-- exit ;;
-- c34*)
-- echo c34-convex-bsd
-- exit ;;
-- c38*)
-- echo c38-convex-bsd
-- exit ;;
-- c4*)
-- echo c4-convex-bsd
-- exit ;;
-- esac
--fi
--
- cat >&2 <<EOF
- $0: unable to guess system type
-
--This script, last modified $timestamp, has failed to recognize
--the operating system you are using. It is advised that you
--download the most up to date version of the config scripts from
-+This script (version $timestamp), has failed to recognize the
-+operating system you are using. If your script is old, overwrite
-+config.guess and config.sub with the latest versions from:
-
-- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
- and
-- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
--If the version you run ($0) is already up to date, please
--send the following data and any information you think might be
--pertinent to <co...@gnu.org> in order to provide the needed
--information to handle your system.
-+If $0 has already been updated, send the following data and any
-+information you think might be pertinent to config-patches@gnu.org to
-+provide the necessary information to handle your system.
-
- config.guess timestamp = $timestamp
-
-diff --git a/configure.ac b/configure.ac
-index 8b458fa..78e3355 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -113,27 +113,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.
-diff --git a/src/demangle.cc b/src/demangle.cc
-index 0daf308..4b7c160 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/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/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/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/symbolize.cc b/src/symbolize.cc
-index b69eefd..18bbccf 100644
---- a/src/symbolize.cc
-+++ b/src/symbolize.cc
-@@ -232,7 +232,7 @@ bool GetSectionHeaderByName(int fd, const char *name, size_t name_len,
- }
- 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/logging.h.in b/src/glog/logging.h.in
-index cdd47b8..19168b1 100644
---- a/src/glog/logging.h.in
-+++ b/src/glog/logging.h.in
-@@ -1364,6 +1364,16 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
- // Sink's logging logic (message_len is such as to exclude '\n' at the end).
- // This method can't use LOG() or CHECK() as logging system mutex(s) are held
- // during this call.
-+ virtual void send(LogSeverity severity, const char* full_filename,
-+ const char* base_filename, int line,
-+ const struct ::tm* tm_time,
-+ const char* message, size_t message_len, int32 usecs) {
-+ send(severity, full_filename, base_filename, line,
-+ tm_time, message, message_len);
-+ }
-+ // This send() signature is obsolete.
-+ // New implementations should define this in terms of
-+ // the above send() method.
- virtual void send(LogSeverity severity, const char* full_filename,
- const char* base_filename, int line,
- const struct ::tm* tm_time,
-@@ -1388,7 +1398,15 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
- // Can be useful to implement send().
- static std::string ToString(LogSeverity severity, const char* file, int line,
- const struct ::tm* tm_time,
-- const char* message, size_t message_len);
-+ const char* message, size_t message_len,
-+ int32 usecs);
-+
-+ // Obsolete
-+ static std::string ToString(LogSeverity severity, const char* file, int line,
-+ const struct ::tm* tm_time,
-+ const char* message, size_t message_len) {
-+ return ToString(severity, file, line, tm_time, message, message_len, 0);
-+ }
- };
-
- // Add or remove a LogSink as a consumer of logging data. Thread-safe.
-diff --git a/src/logging.cc b/src/logging.cc
-index ec334a9..9d07d3c 100644
---- a/src/logging.cc
-+++ b/src/logging.cc
-@@ -304,6 +304,7 @@ struct LogMessage::LogMessageData {
- };
- time_t timestamp_; // Time of creation of LogMessage
- struct ::tm tm_time_; // Time of creation of LogMessage
-+ int32 usecs_; // Time of creation of LogMessage - microseconds part
- size_t num_prefix_chars_; // # of chars of prefix in this message
- size_t num_chars_to_log_; // # of chars of msg to send to log
- size_t num_chars_to_syslog_; // # of chars of msg to send to syslog
-@@ -471,7 +472,8 @@ class LogDestination {
- int line,
- const struct ::tm* tm_time,
- const char* message,
-- size_t message_len);
-+ size_t message_len,
-+ int32 usecs);
-
- // Wait for all registered sinks via WaitTillSent
- // including the optional one in "data".
-@@ -738,12 +740,13 @@ inline void LogDestination::LogToSinks(LogSeverity severity,
- int line,
- const struct ::tm* tm_time,
- const char* message,
-- size_t message_len) {
-+ size_t message_len,
-+ int32 usecs) {
- ReaderMutexLock l(&sink_mutex_);
- if (sinks_) {
- for (int i = sinks_->size() - 1; i >= 0; i--) {
- (*sinks_)[i]->send(severity, full_filename, base_filename,
-- line, tm_time, message, message_len);
-+ line, tm_time, message, message_len, usecs);
- }
- }
- }
-@@ -1193,8 +1196,8 @@ void LogMessage::Init(const char* file,
- WallTime now = WallTime_Now();
- data_->timestamp_ = static_cast<time_t>(now);
- localtime_r(&data_->timestamp_, &data_->tm_time_);
-- int usecs = static_cast<int>((now - data_->timestamp_) * 1000000);
-- RawLog__SetLastTime(data_->tm_time_, usecs);
-+ data_->usecs_ = static_cast<int32>((now - data_->timestamp_) * 1000000);
-+ RawLog__SetLastTime(data_->tm_time_, data_->usecs_);
-
- data_->num_chars_to_log_ = 0;
- data_->num_chars_to_syslog_ = 0;
-@@ -1214,7 +1217,7 @@ void LogMessage::Init(const char* file,
- << setw(2) << data_->tm_time_.tm_hour << ':'
- << setw(2) << data_->tm_time_.tm_min << ':'
- << setw(2) << data_->tm_time_.tm_sec << "."
-- << setw(6) << usecs
-+ << setw(6) << data_->usecs_
- << ' '
- << setfill(' ') << setw(5)
- << static_cast<unsigned int>(GetTID()) << setfill('0')
-@@ -1351,7 +1354,8 @@ void LogMessage::SendToLog() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) {
- data_->line_, &data_->tm_time_,
- data_->message_text_ + data_->num_prefix_chars_,
- (data_->num_chars_to_log_ -
-- data_->num_prefix_chars_ - 1));
-+ data_->num_prefix_chars_ - 1),
-+ data_->usecs_);
- } else {
-
- // log this message to all log files of severity <= severity_
-@@ -1368,7 +1372,8 @@ void LogMessage::SendToLog() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) {
- data_->line_, &data_->tm_time_,
- data_->message_text_ + data_->num_prefix_chars_,
- (data_->num_chars_to_log_
-- - data_->num_prefix_chars_ - 1));
-+ - data_->num_prefix_chars_ - 1),
-+ data_->usecs_);
- // NOTE: -1 removes trailing \n
- }
-
-@@ -1467,7 +1472,8 @@ void LogMessage::SendToSink() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) {
- data_->line_, &data_->tm_time_,
- data_->message_text_ + data_->num_prefix_chars_,
- (data_->num_chars_to_log_ -
-- data_->num_prefix_chars_ - 1));
-+ data_->num_prefix_chars_ - 1),
-+ data_->usecs_);
- }
- }
-
-@@ -1595,16 +1601,10 @@ void LogSink::WaitTillSent() {
-
- string LogSink::ToString(LogSeverity severity, const char* file, int line,
- const struct ::tm* tm_time,
-- const char* message, size_t message_len) {
-+ const char* message, size_t message_len, int32 usecs) {
- ostringstream stream(string(message, message_len));
- stream.fill('0');
-
-- // FIXME(jrvb): Updating this to use the correct value for usecs
-- // requires changing the signature for both this method and
-- // LogSink::send(). This change needs to be done in a separate CL
-- // so subclasses of LogSink can be updated at the same time.
-- int usecs = 0;
--
- stream << LogSeverityNames[severity][0]
- << setw(2) << 1+tm_time->tm_mon
- << setw(2) << tm_time->tm_mday
-diff --git a/src/logging_unittest.cc b/src/logging_unittest.cc
-index d7e95cf..aff8408 100644
---- a/src/logging_unittest.cc
-+++ b/src/logging_unittest.cc
-@@ -479,9 +479,16 @@ class TestLogSinkImpl : public LogSink {
- virtual void send(LogSeverity severity, const char* /* full_filename */,
- const char* base_filename, int line,
- const struct tm* tm_time,
-- const char* message, size_t message_len) {
-+ const char* message, size_t message_len, int usecs) {
- errors.push_back(
-- ToString(severity, base_filename, line, tm_time, message, message_len));
-+ ToString(severity, base_filename, line, tm_time, message, message_len, usecs));
-+ }
-+ virtual void send(LogSeverity severity, const char* full_filename,
-+ const char* base_filename, int line,
-+ const struct tm* tm_time,
-+ const char* message, size_t message_len) {
-+ send(severity, full_filename, base_filename, line,
-+ tm_time, message, message_len, 0);
- }
- };
-
-@@ -999,15 +1006,23 @@ class TestWaitingLogSink : public LogSink {
- virtual void send(LogSeverity severity, const char* /* full_filename */,
- const char* base_filename, int line,
- const struct tm* tm_time,
-- const char* message, size_t message_len) {
-+ const char* message, size_t message_len, int usecs) {
- // Push it to Writer thread if we are the original logging thread.
- // Note: Something like ThreadLocalLogSink is a better choice
- // to do thread-specific LogSink logic for real.
- if (pthread_equal(tid_, pthread_self())) {
- writer_.Buffer(ToString(severity, base_filename, line,
-- tm_time, message, message_len));
-+ tm_time, message, message_len, usecs));
- }
- }
-+
-+ virtual void send(LogSeverity severity, const char* full_filename,
-+ const char* base_filename, int line,
-+ const struct tm* tm_time,
-+ const char* message, size_t message_len) {
-+ send(severity, full_filename, base_filename, line, tm_time, message, message_len);
-+ }
-+
- virtual void WaitTillSent() {
- // Wait for Writer thread if we are the original logging thread.
- if (pthread_equal(tid_, pthread_self())) writer_.Wait();
-diff --git a/src/windows/glog/logging.h b/src/windows/glog/logging.h
-index 1d91b12..acdd0c2 100755
---- a/src/windows/glog/logging.h
-+++ b/src/windows/glog/logging.h
-@@ -1368,6 +1368,16 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
- // Sink's logging logic (message_len is such as to exclude '\n' at the end).
- // This method can't use LOG() or CHECK() as logging system mutex(s) are held
- // during this call.
-+ virtual void send(LogSeverity severity, const char* full_filename,
-+ const char* base_filename, int line,
-+ const struct ::tm* tm_time,
-+ const char* message, size_t message_len, int32 usecs) {
-+ send(severity, full_filename, base_filename, line,
-+ tm_time, message, message_len);
-+ }
-+ // This send() signature is obsolete.
-+ // New implementations should define this in terms of
-+ // the above send() method.
- virtual void send(LogSeverity severity, const char* full_filename,
- const char* base_filename, int line,
- const struct ::tm* tm_time,
-@@ -1392,7 +1402,15 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
- // Can be useful to implement send().
- static std::string ToString(LogSeverity severity, const char* file, int line,
- const struct ::tm* tm_time,
-- const char* message, size_t message_len);
-+ const char* message, size_t message_len,
-+ int32 usecs);
-+
-+ // Obsolete
-+ static std::string ToString(LogSeverity severity, const char* file, int line,
-+ const struct ::tm* tm_time,
-+ const char* message, size_t message_len) {
-+ return ToString(severity, file, line, tm_time, message, message_len, 0);
-+ }
- };
-
- // Add or remove a LogSink as a consumer of logging data. Thread-safe.
diff --git a/3rdparty/glog-0.3.3.tar.gz b/3rdparty/glog-0.3.3.tar.gz
deleted file mode 100644
index 92fa52d..0000000
Binary files a/3rdparty/glog-0.3.3.tar.gz and /dev/null differ
diff --git a/3rdparty/glog-0.4.0.patch b/3rdparty/glog-0.4.0.patch
new file mode 100644
index 0000000..7e8e5a6
--- /dev/null
+++ b/3rdparty/glog-0.4.0.patch
@@ -0,0 +1,282 @@
+diff --git a/configure.ac b/configure.ac
+index 69711b7..9b77c07 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.
+diff --git a/src/glog/stl_logging.h.in b/src/glog/stl_logging.h.in
+index 600945d..bd935d5 100644
+--- a/src/glog/stl_logging.h.in
++++ b/src/glog/stl_logging.h.in
+@@ -59,6 +59,13 @@
+ #include <utility>
+ #include <vector>
+
++#if defined (__GNUC__) && !defined(_LIBCPP_VERSION)
++# define GLOG_STL_LOGGING_FOR_EXT_HASH
++# define GLOG_STL_LOGGING_FOR_EXT_SLIST
++#elif defined(_LIBCPP_VERSION)
++# define GLOG_STL_LOGGING_FOR_UNORDERED
++#endif
++
+ #ifdef GLOG_STL_LOGGING_FOR_UNORDERED
+ # include <unordered_map>
+ # include <unordered_set>
+diff --git a/src/glog/logging.h.in b/src/glog/logging.h.in
+index 9968b96..ee0dc82 100644
+--- a/src/glog/logging.h.in
++++ b/src/glog/logging.h.in
+@@ -1423,6 +1423,16 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
+ // Sink's logging logic (message_len is such as to exclude '\n' at the end).
+ // This method can't use LOG() or CHECK() as logging system mutex(s) are held
+ // during this call.
++ virtual void send(LogSeverity severity, const char* full_filename,
++ const char* base_filename, int line,
++ const struct ::tm* tm_time,
++ const char* message, size_t message_len, int32 usecs) {
++ send(severity, full_filename, base_filename, line,
++ tm_time, message, message_len);
++ }
++ // This send() signature is obsolete.
++ // New implementations should define this in terms of
++ // the above send() method.
+ virtual void send(LogSeverity severity, const char* full_filename,
+ const char* base_filename, int line,
+ const struct ::tm* tm_time,
+@@ -1447,7 +1457,15 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
+ // Can be useful to implement send().
+ static std::string ToString(LogSeverity severity, const char* file, int line,
+ const struct ::tm* tm_time,
+- const char* message, size_t message_len);
++ const char* message, size_t message_len,
++ int32 usecs);
++
++ // Obsolete
++ static std::string ToString(LogSeverity severity, const char* file, int line,
++ const struct ::tm* tm_time,
++ const char* message, size_t message_len) {
++ return ToString(severity, file, line, tm_time, message, message_len, 0);
++ }
+ };
+
+ // Add or remove a LogSink as a consumer of logging data. Thread-safe.
+diff --git a/src/logging.cc b/src/logging.cc
+index 0c86cf6..2da00eb 100644
+--- a/src/logging.cc
++++ b/src/logging.cc
+@@ -349,6 +349,7 @@ struct LogMessage::LogMessageData {
+ };
+ time_t timestamp_; // Time of creation of LogMessage
+ struct ::tm tm_time_; // Time of creation of LogMessage
++ int32 usecs_; // Time of creation of LogMessage - microseconds part
+ size_t num_prefix_chars_; // # of chars of prefix in this message
+ size_t num_chars_to_log_; // # of chars of msg to send to log
+ size_t num_chars_to_syslog_; // # of chars of msg to send to syslog
+@@ -515,7 +516,8 @@ class LogDestination {
+ int line,
+ const struct ::tm* tm_time,
+ const char* message,
+- size_t message_len);
++ size_t message_len,
++ int32 usecs);
+
+ // Wait for all registered sinks via WaitTillSent
+ // including the optional one in "data".
+@@ -782,12 +784,13 @@ inline void LogDestination::LogToSinks(LogSeverity severity,
+ int line,
+ const struct ::tm* tm_time,
+ const char* message,
+- size_t message_len) {
++ size_t message_len,
++ int32 usecs) {
+ ReaderMutexLock l(&sink_mutex_);
+ if (sinks_) {
+ for (int i = sinks_->size() - 1; i >= 0; i--) {
+ (*sinks_)[i]->send(severity, full_filename, base_filename,
+- line, tm_time, message, message_len);
++ line, tm_time, message, message_len, usecs);
+ }
+ }
+ }
+@@ -1265,7 +1268,7 @@ void LogMessage::Init(const char* file,
+ WallTime now = WallTime_Now();
+ data_->timestamp_ = static_cast<time_t>(now);
+ localtime_r(&data_->timestamp_, &data_->tm_time_);
+- int usecs = static_cast<int>((now - data_->timestamp_) * 1000000);
++ data_->usecs_ = static_cast<int32>((now - data_->timestamp_) * 1000000);
+
+ data_->num_chars_to_log_ = 0;
+ data_->num_chars_to_syslog_ = 0;
+@@ -1285,7 +1288,7 @@ void LogMessage::Init(const char* file,
+ << setw(2) << data_->tm_time_.tm_hour << ':'
+ << setw(2) << data_->tm_time_.tm_min << ':'
+ << setw(2) << data_->tm_time_.tm_sec << "."
+- << setw(6) << usecs
++ << setw(6) << data_->usecs_
+ << ' '
+ << setfill(' ') << setw(5)
+ << static_cast<unsigned int>(GetTID()) << setfill('0')
+@@ -1432,7 +1435,8 @@ void LogMessage::SendToLog() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) {
+ data_->line_, &data_->tm_time_,
+ data_->message_text_ + data_->num_prefix_chars_,
+ (data_->num_chars_to_log_ -
+- data_->num_prefix_chars_ - 1));
++ data_->num_prefix_chars_ - 1),
++ data_->usecs_);
+ } else {
+
+ // log this message to all log files of severity <= severity_
+@@ -1449,7 +1453,8 @@ void LogMessage::SendToLog() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) {
+ data_->line_, &data_->tm_time_,
+ data_->message_text_ + data_->num_prefix_chars_,
+ (data_->num_chars_to_log_
+- - data_->num_prefix_chars_ - 1));
++ - data_->num_prefix_chars_ - 1),
++ data_->usecs_);
+ // NOTE: -1 removes trailing \n
+ }
+
+@@ -1545,7 +1550,8 @@ void LogMessage::SendToSink() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) {
+ data_->line_, &data_->tm_time_,
+ data_->message_text_ + data_->num_prefix_chars_,
+ (data_->num_chars_to_log_ -
+- data_->num_prefix_chars_ - 1));
++ data_->num_prefix_chars_ - 1),
++ data_->usecs_);
+ }
+ }
+
+@@ -1672,16 +1678,10 @@ void LogSink::WaitTillSent() {
+
+ string LogSink::ToString(LogSeverity severity, const char* file, int line,
+ const struct ::tm* tm_time,
+- const char* message, size_t message_len) {
++ const char* message, size_t message_len, int32 usecs) {
+ ostringstream stream(string(message, message_len));
+ stream.fill('0');
+
+- // FIXME(jrvb): Updating this to use the correct value for usecs
+- // requires changing the signature for both this method and
+- // LogSink::send(). This change needs to be done in a separate CL
+- // so subclasses of LogSink can be updated at the same time.
+- int usecs = 0;
+-
+ stream << LogSeverityNames[severity][0]
+ << setw(2) << 1+tm_time->tm_mon
+ << setw(2) << tm_time->tm_mday
+diff --git a/src/logging_unittest.cc b/src/logging_unittest.cc
+index 762c752..7f9de36 100644
+--- a/src/logging_unittest.cc
++++ b/src/logging_unittest.cc
+@@ -487,9 +487,16 @@ class TestLogSinkImpl : public LogSink {
+ virtual void send(LogSeverity severity, const char* /* full_filename */,
+ const char* base_filename, int line,
+ const struct tm* tm_time,
+- const char* message, size_t message_len) {
++ const char* message, size_t message_len, int usecs) {
+ errors.push_back(
+- ToString(severity, base_filename, line, tm_time, message, message_len));
++ ToString(severity, base_filename, line, tm_time, message, message_len, usecs));
++ }
++ virtual void send(LogSeverity severity, const char* full_filename,
++ const char* base_filename, int line,
++ const struct tm* tm_time,
++ const char* message, size_t message_len) {
++ send(severity, full_filename, base_filename, line,
++ tm_time, message, message_len, 0);
+ }
+ };
+
+@@ -1010,15 +1017,23 @@ class TestWaitingLogSink : public LogSink {
+ virtual void send(LogSeverity severity, const char* /* full_filename */,
+ const char* base_filename, int line,
+ const struct tm* tm_time,
+- const char* message, size_t message_len) {
++ const char* message, size_t message_len, int usecs) {
+ // Push it to Writer thread if we are the original logging thread.
+ // Note: Something like ThreadLocalLogSink is a better choice
+ // to do thread-specific LogSink logic for real.
+ if (pthread_equal(tid_, pthread_self())) {
+ writer_.Buffer(ToString(severity, base_filename, line,
+- tm_time, message, message_len));
++ tm_time, message, message_len, usecs));
+ }
+ }
++
++ virtual void send(LogSeverity severity, const char* full_filename,
++ const char* base_filename, int line,
++ const struct tm* tm_time,
++ const char* message, size_t message_len) {
++ send(severity, full_filename, base_filename, line, tm_time, message, message_len);
++ }
++
+ virtual void WaitTillSent() {
+ // Wait for Writer thread if we are the original logging thread.
+ if (pthread_equal(tid_, pthread_self())) writer_.Wait();
+diff --git a/src/windows/glog/logging.h b/src/windows/glog/logging.h
+index 3681fa3..d8193ae 100755
+--- a/src/windows/glog/logging.h
++++ b/src/windows/glog/logging.h
+@@ -1427,6 +1427,16 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
+ // Sink's logging logic (message_len is such as to exclude '\n' at the end).
+ // This method can't use LOG() or CHECK() as logging system mutex(s) are held
+ // during this call.
++ virtual void send(LogSeverity severity, const char* full_filename,
++ const char* base_filename, int line,
++ const struct ::tm* tm_time,
++ const char* message, size_t message_len, int32 usecs) {
++ send(severity, full_filename, base_filename, line,
++ tm_time, message, message_len);
++ }
++ // This send() signature is obsolete.
++ // New implementations should define this in terms of
++ // the above send() method.
+ virtual void send(LogSeverity severity, const char* full_filename,
+ const char* base_filename, int line,
+ const struct ::tm* tm_time,
+@@ -1451,7 +1461,15 @@ class GOOGLE_GLOG_DLL_DECL LogSink {
+ // Can be useful to implement send().
+ static std::string ToString(LogSeverity severity, const char* file, int line,
+ const struct ::tm* tm_time,
+- const char* message, size_t message_len);
++ const char* message, size_t message_len,
++ int32 usecs);
++
++ // Obsolete
++ static std::string ToString(LogSeverity severity, const char* file, int line,
++ const struct ::tm* tm_time,
++ const char* message, size_t message_len) {
++ return ToString(severity, file, line, tm_time, message, message_len, 0);
++ }
+ };
+
+ // Add or remove a LogSink as a consumer of logging data. Thread-safe.
diff --git a/3rdparty/glog-0.4.0.tar.gz b/3rdparty/glog-0.4.0.tar.gz
new file mode 100644
index 0000000..ccf002c
Binary files /dev/null and b/3rdparty/glog-0.4.0.tar.gz differ
diff --git a/3rdparty/glog-da816ea70.patch b/3rdparty/glog-da816ea70.patch
deleted file mode 100644
index 2f0fae3..0000000
--- a/3rdparty/glog-da816ea70.patch
+++ /dev/null
@@ -1,726 +0,0 @@
-diff --git c/CMakeLists.txt w/CMakeLists.txt
-index 7ede6e7ad..1b05456e4 100644
---- c/CMakeLists.txt
-+++ w/CMakeLists.txt
-@@ -364,9 +364,9 @@ set (GLOG_SRCS
- src/vlog_is_on.cc
- )
-
--if (HAVE_PTHREAD)
-+if (HAVE_PTHREAD OR WIN32)
- list (APPEND GLOG_SRCS src/signalhandler.cc)
--endif (HAVE_PTHREAD)
-+endif (HAVE_PTHREAD OR WIN32)
-
- if (WIN32)
- list (APPEND GLOG_SRCS
-@@ -455,6 +455,12 @@ if (HAVE_EXECINFO_H)
- set (HAVE_STACKTRACE 1)
- endif (HAVE_EXECINFO_H)
-
-+if (WIN32)
-+ set (HAVE_STACKTRACE 1)
-+ set (HAVE_SYMBOLIZE 1)
-+ target_link_libraries (glog PUBLIC Dbghelp.lib)
-+endif (WIN32)
-+
- if (UNIX OR (APPLE AND HAVE_DLADDR))
- set (HAVE_SYMBOLIZE 1)
- endif (UNIX OR (APPLE AND HAVE_DLADDR))
-@@ -527,13 +533,13 @@ if (BUILD_TESTING)
-
- target_link_libraries (utilities_unittest PRIVATE glog)
-
-- if (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
-+ if (HAVE_STACKTRACE AND HAVE_SYMBOLIZE AND NOT WIN32)
- add_executable (signalhandler_unittest
- src/signalhandler_unittest.cc
- )
-
- target_link_libraries (signalhandler_unittest PRIVATE glog)
-- endif (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
-+ endif (HAVE_STACKTRACE AND HAVE_SYMBOLIZE AND NOT WIN32)
-
- add_test (NAME demangle COMMAND demangle_unittest)
- add_test (NAME logging COMMAND logging_unittest)
-diff --git c/src/demangle.cc w/src/demangle.cc
-index e858181a6..cf897457a 100644
---- c/src/demangle.cc
-+++ w/src/demangle.cc
-@@ -35,10 +35,16 @@
- // Note that we only have partial C++0x support yet.
-
- #include <stdio.h> // for NULL
-+#include "utilities.h"
- #include "demangle.h"
-
-+#if defined(OS_WINDOWS)
-+#include <Dbghelp.h>
-+#endif
-+
- _START_GOOGLE_NAMESPACE_
-
-+#if !defined(OS_WINDOWS)
- typedef struct {
- const char *abbrev;
- const char *real_name;
-@@ -1293,12 +1299,32 @@ static bool ParseTopLevelMangledName(State *state) {
- }
- return false;
- }
-+#endif
-
- // The demangler entry point.
- bool Demangle(const char *mangled, char *out, int out_size) {
-+#if defined(OS_WINDOWS)
-+ // When built with incremental linking, the Windows debugger
-+ // library provides a more complicated `Symbol->Name` with the
-+ // Incremental Linking Table offset, which looks like
-+ // `@ILT+1105(?func@Foo@@SAXH@Z)`. However, the demangler expects
-+ // only the mangled symbol, `?func@Foo@@SAXH@Z`. Fortunately, the
-+ // mangled symbol is guaranteed not to have parentheses,
-+ // so we search for `(` and extract up to `)`.
-+ std::string symbol(mangled);
-+ size_t mark = symbol.find('(');
-+ if (mark != std::string::npos) {
-+ // Extract the string `(?...)`
-+ std::string temp = symbol.substr(mark);
-+ // Remove the surrounding parentheses
-+ symbol = temp.substr(1, temp.size() - 2);
-+ } // Else the symbol wasn't inside a set of parentheses
-+ return UnDecorateSymbolName(symbol.c_str(), out, out_size, UNDNAME_COMPLETE);
-+#else
- State state;
- InitState(&state, mangled, out, out_size);
- return ParseTopLevelMangledName(&state) && !state.overflowed;
-+#endif
- }
-
- _END_GOOGLE_NAMESPACE_
-diff --git c/src/demangle_unittest.cc w/src/demangle_unittest.cc
-index 32f322101..be483411f 100644
---- c/src/demangle_unittest.cc
-+++ w/src/demangle_unittest.cc
-@@ -62,18 +62,37 @@ static const char *DemangleIt(const char * const mangled) {
- }
- }
-
-+#if defined(OS_WINDOWS)
-+
-+TEST(Demangle, Windows) {
-+ EXPECT_STREQ(
-+ "public: static void __cdecl Foo::func(int)",
-+ DemangleIt("?func@Foo@@SAXH@Z"));
-+ EXPECT_STREQ(
-+ "public: static void __cdecl Foo::func(int)",
-+ DemangleIt("@ILT+1105(?func@Foo@@SAXH@Z)"));
-+ EXPECT_STREQ(
-+ "int __cdecl foobarArray(int * const)",
-+ DemangleIt("?foobarArray@@YAHQAH@Z"));
-+}
-+
-+#else
-+
- // Test corner cases of bounary conditions.
- TEST(Demangle, CornerCases) {
-- char tmp[10];
-- EXPECT_TRUE(Demangle("_Z6foobarv", tmp, sizeof(tmp)));
-- // sizeof("foobar()") == 9
-- EXPECT_STREQ("foobar()", tmp);
-- EXPECT_TRUE(Demangle("_Z6foobarv", tmp, 9));
-- EXPECT_STREQ("foobar()", tmp);
-- EXPECT_FALSE(Demangle("_Z6foobarv", tmp, 8)); // Not enough.
-- EXPECT_FALSE(Demangle("_Z6foobarv", tmp, 1));
-- EXPECT_FALSE(Demangle("_Z6foobarv", tmp, 0));
-- EXPECT_FALSE(Demangle("_Z6foobarv", NULL, 0)); // Should not cause SEGV.
-+ const size_t size = 10;
-+ char tmp[size] = { 0 };
-+ const char *demangled = "foobar()";
-+ const char *mangled = "_Z6foobarv";
-+ EXPECT_TRUE(Demangle(mangled, tmp, sizeof(tmp)));
-+ // sizeof("foobar()") == size - 1
-+ EXPECT_STREQ(demangled, tmp);
-+ EXPECT_TRUE(Demangle(mangled, tmp, size - 1));
-+ EXPECT_STREQ(demangled, tmp);
-+ EXPECT_FALSE(Demangle(mangled, tmp, size - 2)); // Not enough.
-+ EXPECT_FALSE(Demangle(mangled, tmp, 1));
-+ EXPECT_FALSE(Demangle(mangled, tmp, 0));
-+ EXPECT_FALSE(Demangle(mangled, NULL, 0)); // Should not cause SEGV.
- }
-
- // Test handling of functions suffixed with .clone.N, which is used by GCC
-@@ -123,6 +142,8 @@ TEST(Demangle, FromFile) {
- }
- }
-
-+#endif
-+
- int main(int argc, char **argv) {
- #ifdef HAVE_LIB_GFLAGS
- ParseCommandLineFlags(&argc, &argv, true);
-diff --git c/src/logging.cc w/src/logging.cc
-index 0b5e6ee97..aa8a95eda 100644
---- c/src/logging.cc
-+++ w/src/logging.cc
-@@ -92,6 +92,15 @@ using std::fdopen;
- #define fdopen _fdopen
- #endif
-
-+#if defined(OS_WINDOWS)
-+_START_GOOGLE_NAMESPACE_
-+namespace glog_internal_namespace_ {
-+ void DumpTimeInfo();
-+ void DumpStackInfo(int);
-+}
-+_END_GOOGLE_NAMESPACE_
-+#endif
-+
- // There is no thread annotation support.
- #define EXCLUSIVE_LOCKS_REQUIRED(mu)
-
-@@ -1466,8 +1475,17 @@ void LogMessage::RecordCrashReason(
- static void logging_fail() ATTRIBUTE_NORETURN;
-
- static void logging_fail() {
-+#if defined(OS_WINDOWS)
-+ // On Windows,the stack trace info needs to be dumped here instead
-+ // of in the `SIGABRT` signal handler to avoid thread switching.
-+ // The signal handler runs on the thread on which it was installed,
-+ // making the stack trace irrelevant.
-+ glog_internal_namespace_::DumpTimeInfo();
-+ glog_internal_namespace_::DumpStackInfo(5);
-+ FlushLogFilesUnsafe(0);
-+#endif
- #if defined(_DEBUG) && defined(_MSC_VER)
-- // When debugging on windows, avoid the obnoxious dialog and make
-+ // When debugging on Windows, avoid the obnoxious dialog and make
- // it possible to continue past a LOG(FATAL) in the debugger
- __debugbreak();
- #else
-diff --git c/src/signalhandler.cc w/src/signalhandler.cc
-index a7aef8b99..a28b8b7c6 100644
---- c/src/signalhandler.cc
-+++ w/src/signalhandler.cc
-@@ -48,38 +48,11 @@
-
- _START_GOOGLE_NAMESPACE_
-
--// TOOD(hamaji): Use signal instead of sigaction?
--#ifdef HAVE_SIGACTION
--
--namespace {
--
--// We'll install the failure signal handler for these signals. We could
--// use strsignal() to get signal names, but we don't use it to avoid
--// introducing yet another #ifdef complication.
--//
--// The list should be synced with the comment in signalhandler.h.
--const struct {
-- int number;
-- const char *name;
--} kFailureSignals[] = {
-- { SIGSEGV, "SIGSEGV" },
-- { SIGILL, "SIGILL" },
-- { SIGFPE, "SIGFPE" },
-- { SIGABRT, "SIGABRT" },
-- { SIGBUS, "SIGBUS" },
-- { SIGTERM, "SIGTERM" },
--};
-+namespace glog_internal_namespace_ {
-
--// Returns the program counter from signal context, NULL if unknown.
--void* GetPC(void* ucontext_in_void) {
--#if (defined(HAVE_UCONTEXT_H) || defined(HAVE_SYS_UCONTEXT_H)) && defined(PC_FROM_UCONTEXT)
-- if (ucontext_in_void != NULL) {
-- ucontext_t *context = reinterpret_cast<ucontext_t *>(ucontext_in_void);
-- return (void*)context->PC_FROM_UCONTEXT;
-- }
-+#ifdef HAVE_SIGACTION
-+ void DumpSignalInfo(int signal_number, siginfo_t *siginfo);
- #endif
-- return NULL;
--}
-
- // The class is used for formatting error messages. We don't use printf()
- // as it's not async signal safe.
-@@ -168,6 +141,76 @@ void DumpTimeInfo() {
- g_failure_writer(buf, formatter.num_bytes_written());
- }
-
-+// Dumps information about the stack frame to STDERR.
-+void DumpStackFrameInfo(const char* prefix, void* pc) {
-+ // Get the symbol name.
-+ const char *symbol = "(unknown)";
-+ char symbolized[1024] = {}; // Big enough for a sane symbol.
-+ // Symbolizes the previous address of pc because pc may be in the
-+ // next function.
-+ if (Symbolize(reinterpret_cast<char *>(pc) - 1,
-+ symbolized, sizeof(symbolized))) {
-+ symbol = symbolized;
-+ }
-+
-+ char buf[1024]; // Big enough for stack frame info.
-+ MinimalFormatter formatter(buf, sizeof(buf));
-+
-+ formatter.AppendString(prefix);
-+ formatter.AppendString("@ ");
-+ const int width = 2 * sizeof(void*) + 2; // + 2 for "0x".
-+ formatter.AppendHexWithPadding(reinterpret_cast<uintptr_t>(pc), width);
-+ formatter.AppendString(" ");
-+ formatter.AppendString(symbol);
-+ formatter.AppendString("\n");
-+ g_failure_writer(buf, formatter.num_bytes_written());
-+}
-+
-+// Argument is the number of frames to skip, excluding this function.
-+void DumpStackInfo(int frames) {
-+#ifdef HAVE_STACKTRACE
-+ // Get the stack traces.
-+ void *stack[32];
-+ // +1 to exclude this function.
-+ const int depth = GetStackTrace(stack, ARRAYSIZE(stack), frames + 1);
-+ // Dump the stack traces.
-+ for (int i = 0; i < depth; ++i) {
-+ DumpStackFrameInfo(" ", stack[i]);
-+ }
-+#endif
-+}
-+
-+// TOOD(hamaji): Use signal instead of sigaction?
-+#ifdef HAVE_SIGACTION
-+
-+// We'll install the failure signal handler for these signals. We could
-+// use strsignal() to get signal names, but we don't use it to avoid
-+// introducing yet another #ifdef complication.
-+//
-+// The list should be synced with the comment in signalhandler.h.
-+const struct {
-+ int number;
-+ const char *name;
-+} kFailureSignals[] = {
-+ { SIGSEGV, "SIGSEGV" },
-+ { SIGILL, "SIGILL" },
-+ { SIGFPE, "SIGFPE" },
-+ { SIGABRT, "SIGABRT" },
-+ { SIGBUS, "SIGBUS" },
-+ { SIGTERM, "SIGTERM" },
-+};
-+
-+// Returns the program counter from signal context, NULL if unknown.
-+void* GetPC(void* ucontext_in_void) {
-+#if (defined(HAVE_UCONTEXT_H) || defined(HAVE_SYS_UCONTEXT_H)) && defined(PC_FROM_UCONTEXT)
-+ if (ucontext_in_void != NULL) {
-+ ucontext_t *context = reinterpret_cast<ucontext_t *>(ucontext_in_void);
-+ return (void*)context->PC_FROM_UCONTEXT;
-+ }
-+#endif
-+ return NULL;
-+}
-+
- // Dumps information about the signal to STDERR.
- void DumpSignalInfo(int signal_number, siginfo_t *siginfo) {
- // Get the signal name.
-@@ -213,31 +256,6 @@ void DumpSignalInfo(int signal_number, siginfo_t *siginfo) {
- g_failure_writer(buf, formatter.num_bytes_written());
- }
-
--// Dumps information about the stack frame to STDERR.
--void DumpStackFrameInfo(const char* prefix, void* pc) {
-- // Get the symbol name.
-- const char *symbol = "(unknown)";
-- char symbolized[1024]; // Big enough for a sane symbol.
-- // Symbolizes the previous address of pc because pc may be in the
-- // next function.
-- if (Symbolize(reinterpret_cast<char *>(pc) - 1,
-- symbolized, sizeof(symbolized))) {
-- symbol = symbolized;
-- }
--
-- char buf[1024]; // Big enough for stack frame info.
-- MinimalFormatter formatter(buf, sizeof(buf));
--
-- formatter.AppendString(prefix);
-- formatter.AppendString("@ ");
-- const int width = 2 * sizeof(void*) + 2; // + 2 for "0x".
-- formatter.AppendHexWithPadding(reinterpret_cast<uintptr_t>(pc), width);
-- formatter.AppendString(" ");
-- formatter.AppendString(symbol);
-- formatter.AppendString("\n");
-- g_failure_writer(buf, formatter.num_bytes_written());
--}
--
- // Invoke the default signal handler.
- void InvokeDefaultSignalHandler(int signal_number) {
- struct sigaction sig_action;
-@@ -302,18 +320,14 @@ void FailureSignalHandler(int signal_number,
- void *pc = GetPC(ucontext);
- DumpStackFrameInfo("PC: ", pc);
-
--#ifdef HAVE_STACKTRACE
-- // Get the stack traces.
-- void *stack[32];
-- // +1 to exclude this function.
-- const int depth = GetStackTrace(stack, ARRAYSIZE(stack), 1);
-+ // Now dumb the signal info.
-+#ifdef HAVE_SIGACTION
- DumpSignalInfo(signal_number, signal_info);
-- // Dump the stack traces.
-- for (int i = 0; i < depth; ++i) {
-- DumpStackFrameInfo(" ", stack[i]);
-- }
- #endif
-
-+ // Now dump the stack trace.
-+ DumpStackInfo(0);
-+
- // *** TRANSITION ***
- //
- // BEFORE this point, all code must be async-termination-safe!
-@@ -330,12 +344,15 @@ void FailureSignalHandler(int signal_number,
- // Kill ourself by the default signal handler.
- InvokeDefaultSignalHandler(signal_number);
- }
--
--} // namespace
--
-+#elif defined(OS_WINDOWS)
-+void FailureSignalHandler(int signal) {
-+ if (signal != SIGABRT) {
-+ return;
-+ }
-+ exit(1);
-+}
- #endif // HAVE_SIGACTION
-
--namespace glog_internal_namespace_ {
-
- bool IsFailureSignalHandlerInstalled() {
- #ifdef HAVE_SIGACTION
-@@ -345,6 +362,9 @@ bool IsFailureSignalHandlerInstalled() {
- sigaction(SIGABRT, NULL, &sig_action);
- if (sig_action.sa_sigaction == &FailureSignalHandler)
- return true;
-+#elif defined(OS_WINDOWS)
-+ // TODO: check if we installed it
-+ return true;
- #endif // HAVE_SIGACTION
- return false;
- }
-@@ -363,11 +383,15 @@ void InstallFailureSignalHandler() {
- for (size_t i = 0; i < ARRAYSIZE(kFailureSignals); ++i) {
- CHECK_ERR(sigaction(kFailureSignals[i].number, &sig_action, NULL));
- }
-+#elif defined(OS_WINDOWS)
-+ typedef void (*SignalHandlerPointer)(int);
-+ SignalHandlerPointer previousHandler;
-+ previousHandler = signal(SIGABRT, &FailureSignalHandler);
- #endif // HAVE_SIGACTION
- }
-
- void InstallFailureWriter(void (*writer)(const char* data, int size)) {
--#ifdef HAVE_SIGACTION
-+#if defined(HAVE_SIGACTION) || defined(OS_WINDOWS)
- g_failure_writer = writer;
- #endif // HAVE_SIGACTION
- }
-diff --git c/src/stacktrace_unittest.cc w/src/stacktrace_unittest.cc
-index c1b3b36ff..ed95f8945 100644
---- c/src/stacktrace_unittest.cc
-+++ w/src/stacktrace_unittest.cc
-@@ -90,6 +90,32 @@ AddressRange expected_range[BACKTRACE_STEPS];
- (prange)->end = ra; \
- } \
- } while (0)
-+#elif defined(OS_WINDOWS)
-+// Compiler Intrinsic _ReturnAddress documentation:
-+// https://msdn.microsoft.com/en-us/library/64ez38eh(v=vs.140).aspx
-+// This is equivalent to __builtin_return_address.
-+#include <intrin.h>
-+#pragma intrinsic(_ReturnAddress)
-+#define INIT_ADDRESS_RANGE(fn, start_label, end_label, prange) \
-+ do { \
-+ (prange)->start = &fn; \
-+ (prange)->end = _ReturnAddress(); \
-+ CHECK_LT((prange)->start, (prange)->end); \
-+ } while (0)
-+#define DECLARE_ADDRESS_LABEL(a_label) do { } while (0)
-+// MSVC may do the same thing as GCC (as noted above).
-+// Adjust function range from _ReturnAddress.
-+#define ADJUST_ADDRESS_RANGE_FROM_RA(prange) \
-+ do { \
-+ void *ra = _ReturnAddress(); \
-+ CHECK_LT((prange)->start, ra); \
-+ if (ra > (prange)->end) { \
-+ printf("Adjusting range from %p..%p to %p..%p\n", \
-+ (prange)->start, (prange)->end, \
-+ (prange)->start, ra); \
-+ (prange)->end = ra; \
-+ } \
-+ } while (0)
- #else
- // Assume the Check* functions below are not longer than 256 bytes.
- #define INIT_ADDRESS_RANGE(fn, start_label, end_label, prange) \
-diff --git c/src/stacktrace_windows-inl.h w/src/stacktrace_windows-inl.h
-new file mode 100644
-index 000000000..dc23d109d
---- /dev/null
-+++ w/src/stacktrace_windows-inl.h
-@@ -0,0 +1,49 @@
-+// Copyright (c) 2000 - 2007, Google Inc.
-+// All rights reserved.
-+//
-+// Redistribution and use in source and binary forms, with or without
-+// modification, are permitted provided that the following conditions are
-+// met:
-+//
-+// * Redistributions of source code must retain the above copyright
-+// notice, this list of conditions and the following disclaimer.
-+// * Redistributions in binary form must reproduce the above
-+// copyright notice, this list of conditions and the following disclaimer
-+// in the documentation and/or other materials provided with the
-+// distribution.
-+// * Neither the name of Google Inc. nor the names of its
-+// contributors may be used to endorse or promote products derived from
-+// this software without specific prior written permission.
-+//
-+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+//
-+// Author: Andrew Schwartzmeyer
-+//
-+// Windows implementation - just use CaptureStackBackTrace
-+
-+#include "port.h"
-+#include "stacktrace.h"
-+#include "Dbghelp.h"
-+
-+_START_GOOGLE_NAMESPACE_
-+
-+int GetStackTrace(void** result, int max_depth, int skip_count) {
-+ if (max_depth > 64) {
-+ max_depth = 64;
-+ }
-+ skip_count++; // we want to skip the current frame as well
-+ // This API is thread-safe (moreover it walks only the current thread).
-+ return CaptureStackBackTrace(skip_count, max_depth, result, NULL);
-+}
-+
-+_END_GOOGLE_NAMESPACE_
-diff --git c/src/symbolize.cc w/src/symbolize.cc
-index f83c30973..0f10a86af 100644
---- c/src/symbolize.cc
-+++ w/src/symbolize.cc
-@@ -837,6 +837,57 @@ static ATTRIBUTE_NOINLINE bool SymbolizeAndDemangle(void *pc, char *out,
-
- _END_GOOGLE_NAMESPACE_
-
-+#elif defined(OS_WINDOWS)
-+
-+#include "Dbghelp.h"
-+
-+_START_GOOGLE_NAMESPACE_
-+
-+class SymInitializer {
-+public:
-+ HANDLE process = NULL;
-+ bool ready = false;
-+ SymInitializer() {
-+ // Initialize the symbol handler.
-+ // https://msdn.microsoft.com/en-us/library/windows/desktop/ms680344(v=vs.85).aspx
-+ process = GetCurrentProcess();
-+ // Defer symbol loading.
-+ // We do not request undecorated symbols with SYMOPT_UNDNAME
-+ // because the mangling library calls UnDecorateSymbolName.
-+ SymSetOptions(SYMOPT_DEFERRED_LOADS);
-+ if (SymInitialize(process, NULL, true)) {
-+ ready = true;
-+ }
-+ }
-+ ~SymInitializer() {
-+ SymCleanup(process);
-+ }
-+};
-+
-+__declspec(noinline) static bool SymbolizeAndDemangle(void *pc, char *out,
-+ int out_size) {
-+ const SymInitializer symInitializer;
-+ if (!symInitializer.ready) {
-+ return false;
-+ }
-+ // Resolve symbol information from address.
-+ // https://msdn.microsoft.com/en-us/library/windows/desktop/ms680578(v=vs.85).aspx
-+ char buf[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR)];
-+ SYMBOL_INFO *symbol = reinterpret_cast<SYMBOL_INFO*>(buf);
-+ symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
-+ symbol->MaxNameLen = MAX_SYM_NAME;
-+ bool ret = SymFromAddr(symInitializer.process, reinterpret_cast<DWORD64>(pc), 0, symbol);
-+ if (ret && static_cast<int>(symbol->NameLen) < out_size) {
-+ strncpy(out, symbol->Name, symbol->NameLen + 1);
-+ // Symbolization succeeded. Now we try to demangle the symbol.
-+ DemangleInplace(out, out_size);
-+ return true;
-+ }
-+ return false;
-+}
-+
-+_END_GOOGLE_NAMESPACE_
-+
- #else
- # error BUG: HAVE_SYMBOLIZE was wrongly set
- #endif
-diff --git c/src/symbolize_unittest.cc w/src/symbolize_unittest.cc
-index 05cb8a11c..348a71b43 100644
---- c/src/symbolize_unittest.cc
-+++ w/src/symbolize_unittest.cc
-@@ -49,10 +49,22 @@ using namespace GFLAGS_NAMESPACE;
- using namespace std;
- using namespace GOOGLE_NAMESPACE;
-
--#if defined(HAVE_STACKTRACE) && defined(__ELF__)
-+#if defined(HAVE_STACKTRACE)
-
- #define always_inline
-
-+// A wrapper function for Symbolize() to make the unit test simple.
-+static const char *TrySymbolize(void *pc) {
-+ static char symbol[4096];
-+ if (Symbolize(pc, symbol, sizeof(symbol))) {
-+ return symbol;
-+ } else {
-+ return NULL;
-+ }
-+}
-+
-+# if defined(__ELF__)
-+
- // This unit tests make sense only with GCC.
- // Uses lots of GCC specific features.
- #if defined(__GNUC__) && !defined(__OPENCC__)
-@@ -70,16 +82,6 @@ using namespace GOOGLE_NAMESPACE;
- # endif // defined(__i386__) || defined(__x86_64__)
- #endif
-
--// A wrapper function for Symbolize() to make the unit test simple.
--static const char *TrySymbolize(void *pc) {
-- static char symbol[4096];
-- if (Symbolize(pc, symbol, sizeof(symbol))) {
-- return symbol;
-- } else {
-- return NULL;
-- }
--}
--
- // Make them C linkage to avoid mangled names.
- extern "C" {
- void nonstatic_func() {
-@@ -340,11 +342,42 @@ void ATTRIBUTE_NOINLINE TestWithReturnAddress() {
- #endif
- }
-
-+# elif defined(OS_WINDOWS)
-+
-+#include <intrin.h>
-+#pragma intrinsic(_ReturnAddress)
-+
-+struct Foo {
-+ static void func(int x);
-+};
-+
-+__declspec(noinline) void Foo::func(int x) {
-+ volatile int a = x;
-+ ++a;
-+}
-+
-+TEST(Symbolize, SymbolizeWithDemangling) {
-+ Foo::func(100);
-+ const char* ret = TrySymbolize((void *)(&Foo::func));
-+ EXPECT_STREQ("public: static void __cdecl Foo::func(int)", ret);
-+}
-+
-+__declspec(noinline) void TestWithReturnAddress() {
-+ void *return_address = _ReturnAddress();
-+ const char *symbol = TrySymbolize(return_address);
-+ CHECK(symbol != NULL);
-+ CHECK_STREQ(symbol, "main");
-+ cout << "Test case TestWithReturnAddress passed." << endl;
-+}
-+# endif // __ELF__
-+#endif // HAVE_STACKTRACE
-+
- int main(int argc, char **argv) {
- FLAGS_logtostderr = true;
- InitGoogleLogging(argv[0]);
- InitGoogleTest(&argc, argv);
--#ifdef HAVE_SYMBOLIZE
-+#if defined(HAVE_SYMBOLIZE)
-+# if defined(__ELF__)
- // We don't want to get affected by the callback interface, that may be
- // used to install some callback function at InitGoogle() time.
- InstallSymbolizeCallback(NULL);
-@@ -353,18 +386,15 @@ int main(int argc, char **argv) {
- TestWithPCInsideNonInlineFunction();
- TestWithReturnAddress();
- return RUN_ALL_TESTS();
--#else
-- return 0;
--#endif
--}
--
--#else
--int main() {
--#ifdef HAVE_SYMBOLIZE
-+# elif defined(OS_WINDOWS)
-+ TestWithReturnAddress();
-+ return RUN_ALL_TESTS();
-+# else
- printf("PASS (no symbolize_unittest support)\n");
-+ return 0;
-+# endif // __ELF__
- #else
- printf("PASS (no symbolize support)\n");
--#endif
- return 0;
-+#endif
- }
--#endif // HAVE_STACKTRACE
-diff --git c/src/utilities.h w/src/utilities.h
-index 5f79968ef..10f98b24a 100644
---- c/src/utilities.h
-+++ w/src/utilities.h
-@@ -97,6 +97,8 @@
- // malloc() from the unwinder. This is a problem because we're
- // trying to use the unwinder to instrument malloc().
- //
-+// 4) The Windows API CaptureStackTrace.
-+//
- // Note: if you add a new implementation here, make sure it works
- // correctly when GetStackTrace() is called with max_depth == 0.
- // Some code may do that.
-@@ -110,6 +112,8 @@
- # define STACKTRACE_H "stacktrace_x86_64-inl.h"
- # elif (defined(__ppc__) || defined(__PPC__)) && __GNUC__ >= 2
- # define STACKTRACE_H "stacktrace_powerpc-inl.h"
-+# elif defined(OS_WINDOWS)
-+# define STACKTRACE_H "stacktrace_windows-inl.h"
- # endif
- #endif
-
-@@ -127,6 +131,9 @@
- #elif defined(OS_MACOSX) && defined(HAVE_DLADDR)
- // Use dladdr to symbolize.
- # define HAVE_SYMBOLIZE
-+#elif defined(OS_WINDOWS)
-+// Use Dbghelp.dll to symbolize
-+# define HAVE_SYMBOLIZE
- #endif
-
- #ifndef ARRAYSIZE
diff --git a/3rdparty/versions.am b/3rdparty/versions.am
index 54daf00..6f6195d 100644
--- a/3rdparty/versions.am
+++ b/3rdparty/versions.am
@@ -24,7 +24,7 @@ CONCURRENTQUEUE_VERSION = 7b69a8f
CSI_V0_VERSION = 0.2.0
CSI_V1_VERSION = 1.1.0
ELFIO_VERSION = 3.2
-GLOG_VERSION = 0.3.3
+GLOG_VERSION = 0.4.0
GOOGLETEST_VERSION = 1.8.0
GPERFTOOLS_VERSION = 2.5
GRPC_VERSION = 1.10.0
diff --git a/LICENSE b/LICENSE
index 8632389..1d9958d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -323,7 +323,7 @@ Agreement.
======================================================================
-For glog-0.3.3 (3rdparty/glog-0.3.3.tar.gz):
+For glog-0.4.0 (3rdparty/glog-0.4.0.tar.gz):
======================================================================
Copyright (c) 2008, Google Inc.
diff --git a/cmake/CompilationConfigure.cmake b/cmake/CompilationConfigure.cmake
index d9c1e40..c8da089 100644
--- a/cmake/CompilationConfigure.cmake
+++ b/cmake/CompilationConfigure.cmake
@@ -239,7 +239,6 @@ if (WIN32 AND REBUNDLED)
" * curl\n"
" * apr\n"
" * zlib\n"
- " * glog\n"
"do not come rebundled in the Mesos repository. They will be downloaded from "
"the Internet, even though the `REBUNDLED` flag was set.")
endif ()
diff --git a/src/python/native_common/ext_modules.py.in b/src/python/native_common/ext_modules.py.in
index eee56a9..ae05a8c 100644
--- a/src/python/native_common/ext_modules.py.in
+++ b/src/python/native_common/ext_modules.py.in
@@ -41,7 +41,7 @@ def _create_module(module_name):
# libraries when building the final result, we need to explicitly
# include them here (or more precisely, down where we actually include
# libev.a and libprofiler.a).
- glog = os.path.join('3rdparty', 'glog-0.3.3')
+ glog = os.path.join('3rdparty', 'glog-0.4.0')
gperftools = os.path.join('3rdparty', 'gperftools-2.5')
protobuf = os.path.join('3rdparty', 'protobuf-3.5.0')
diff --git a/support/mesos-tidy/entrypoint.sh b/support/mesos-tidy/entrypoint.sh
index 0d584b8..a840867 100755
--- a/support/mesos-tidy/entrypoint.sh
+++ b/support/mesos-tidy/entrypoint.sh
@@ -37,7 +37,7 @@ cmake -DCMAKE_BUILD_TYPE=Release \
# TODO(mpark): Use an external dependencies target once MESOS-6924 is resolved.
cmake --build 3rdparty --target boost-1.65.0 -- -j $(nproc)
cmake --build 3rdparty --target elfio-3.2 -- -j $(nproc)
-cmake --build 3rdparty --target glog-0.3.3 -- -j $(nproc)
+cmake --build 3rdparty --target glog-0.4.0 -- -j $(nproc)
cmake --build 3rdparty --target googletest-1.8.0 -- -j $(nproc)
cmake --build 3rdparty --target grpc-1.10.0 -- -j $(nproc)
cmake --build 3rdparty --target http_parser-2.6.2 -- -j $(nproc)