http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/glog/src/windows/raw_logging.cc ---------------------------------------------------------------------- diff --git a/third_party/glog/src/windows/raw_logging.cc b/third_party/glog/src/windows/raw_logging.cc deleted file mode 100644 index 7a7409b..0000000 --- a/third_party/glog/src/windows/raw_logging.cc +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright (c) 2006, 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: Maxim Lifantsev -// -// logging_unittest.cc covers the functionality herein - -#include "utilities.h" - -#include <stdarg.h> -#include <stdio.h> -#include <errno.h> -#ifdef HAVE_UNISTD_H -# include <unistd.h> // for close() and write() -#endif -#include <fcntl.h> // for open() -#include <time.h> -#include "config.h" -#include "glog/logging.h" // To pick up flag settings etc. -#include "glog/raw_logging.h" -#include "base/commandlineflags.h" - -#ifdef HAVE_STACKTRACE -# include "stacktrace.h" -#endif - -#if defined(HAVE_SYSCALL_H) -#include <syscall.h> // for syscall() -#elif defined(HAVE_SYS_SYSCALL_H) -#include <sys/syscall.h> // for syscall() -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif - -#if defined(HAVE_SYSCALL_H) || defined(HAVE_SYS_SYSCALL_H) -# define safe_write(fd, s, len) syscall(SYS_write, fd, s, len) -#else - // Not so safe, but what can you do? -# define safe_write(fd, s, len) write(fd, s, len) -#endif - -_START_GOOGLE_NAMESPACE_ - -// Data for RawLog__ below. We simply pick up the latest -// time data created by a normal log message to avoid calling -// localtime_r which can allocate memory. -static struct ::tm last_tm_time_for_raw_log; -static int last_usecs_for_raw_log; - -void RawLog__SetLastTime(const struct ::tm& t, int usecs) { - memcpy(&last_tm_time_for_raw_log, &t, sizeof(last_tm_time_for_raw_log)); - last_usecs_for_raw_log = usecs; -} - -// CAVEAT: vsnprintf called from *DoRawLog below has some (exotic) code paths -// that invoke malloc() and getenv() that might acquire some locks. -// If this becomes a problem we should reimplement a subset of vsnprintf -// that does not need locks and malloc. - -// Helper for RawLog__ below. -// *DoRawLog writes to *buf of *size and move them past the written portion. -// It returns true iff there was no overflow or error. -static bool DoRawLog(char** buf, int* size, const char* format, ...) { - va_list ap; - va_start(ap, format); - int n = vsnprintf(*buf, *size, format, ap); - va_end(ap); - if (n < 0 || n > *size) return false; - *size -= n; - *buf += n; - return true; -} - -// Helper for RawLog__ below. -inline static bool VADoRawLog(char** buf, int* size, - const char* format, va_list ap) { - int n = vsnprintf(*buf, *size, format, ap); - if (n < 0 || n > *size) return false; - *size -= n; - *buf += n; - return true; -} - -static const int kLogBufSize = 3000; -static bool crashed = false; -static CrashReason crash_reason; -static char crash_buf[kLogBufSize + 1] = { 0 }; // Will end in '\0' - -void RawLog__(LogSeverity severity, const char* file, int line, - const char* format, ...) { - if (!(FLAGS_logtostderr || severity >= FLAGS_stderrthreshold || - FLAGS_alsologtostderr || !IsGoogleLoggingInitialized())) { - return; // this stderr log message is suppressed - } - // can't call localtime_r here: it can allocate - struct ::tm& t = last_tm_time_for_raw_log; - char buffer[kLogBufSize]; - char* buf = buffer; - int size = sizeof(buffer); - - // NOTE: this format should match the specification in base/logging.h - DoRawLog(&buf, &size, "%c%02d%02d %02d:%02d:%02d.%06d %5u %s:%d] RAW: ", - LogSeverityNames[severity][0], - 1 + t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, - last_usecs_for_raw_log, - static_cast<unsigned int>(GetTID()), - const_basename(const_cast<char *>(file)), line); - - // Record the position and size of the buffer after the prefix - const char* msg_start = buf; - const int msg_size = size; - - va_list ap; - va_start(ap, format); - bool no_chop = VADoRawLog(&buf, &size, format, ap); - va_end(ap); - if (no_chop) { - DoRawLog(&buf, &size, "\n"); - } else { - DoRawLog(&buf, &size, "RAW_LOG ERROR: The Message was too long!\n"); - } - // We make a raw syscall to write directly to the stderr file descriptor, - // avoiding FILE buffering (to avoid invoking malloc()), and bypassing - // libc (to side-step any libc interception). - // We write just once to avoid races with other invocations of RawLog__. - safe_write(STDERR_FILENO, buffer, strlen(buffer)); - if (severity == GLOG_FATAL) { - if (!sync_val_compare_and_swap(&crashed, false, true)) { - crash_reason.filename = file; - crash_reason.line_number = line; - memcpy(crash_buf, msg_start, msg_size); // Don't include prefix - crash_reason.message = crash_buf; -#ifdef HAVE_STACKTRACE - crash_reason.depth = - GetStackTrace(crash_reason.stack, ARRAYSIZE(crash_reason.stack), 1); -#else - crash_reason.depth = 0; -#endif - SetCrashReason(&crash_reason); - } - LogMessage::Fail(); // abort() - } -} - -_END_GOOGLE_NAMESPACE_
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/glog/src/windows/utilities.cc ---------------------------------------------------------------------- diff --git a/third_party/glog/src/windows/utilities.cc b/third_party/glog/src/windows/utilities.cc deleted file mode 100644 index a6d1961..0000000 --- a/third_party/glog/src/windows/utilities.cc +++ /dev/null @@ -1,347 +0,0 @@ -// Copyright (c) 2008, 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: Shinichiro Hamaji - -#include "utilities.h" - -#include <stdio.h> -#include <stdlib.h> - -#include <signal.h> -#ifdef HAVE_SYS_TIME_H -# include <sys/time.h> -#endif -#include <time.h> -#if defined(HAVE_SYSCALL_H) -#include <syscall.h> // for syscall() -#elif defined(HAVE_SYS_SYSCALL_H) -#include <sys/syscall.h> // for syscall() -#endif -#ifdef HAVE_SYSLOG_H -# include <syslog.h> -#endif - -#include "base/googleinit.h" - -using std::string; - -_START_GOOGLE_NAMESPACE_ - -static const char* g_program_invocation_short_name = NULL; -static pthread_t g_main_thread_id; - -_END_GOOGLE_NAMESPACE_ - -// The following APIs are all internal. -#ifdef HAVE_STACKTRACE - -#include "stacktrace.h" -#include "symbolize.h" -#include "base/commandlineflags.h" - -GLOG_DEFINE_bool(symbolize_stacktrace, true, - "Symbolize the stack trace in the tombstone"); - -_START_GOOGLE_NAMESPACE_ - -typedef void DebugWriter(const char*, void*); - -// The %p field width for printf() functions is two characters per byte. -// For some environments, add two extra bytes for the leading "0x". -static const int kPrintfPointerFieldWidth = 2 + 2 * sizeof(void*); - -static void DebugWriteToStderr(const char* data, void *) { - // This one is signal-safe. - if (write(STDERR_FILENO, data, strlen(data)) < 0) { - // Ignore errors. - } -} - -void DebugWriteToString(const char* data, void *arg) { - reinterpret_cast<string*>(arg)->append(data); -} - -#ifdef HAVE_SYMBOLIZE -// Print a program counter and its symbol name. -static void DumpPCAndSymbol(DebugWriter *writerfn, void *arg, void *pc, - const char * const prefix) { - char tmp[1024]; - const char *symbol = "(unknown)"; - // Symbolizes the previous address of pc because pc may be in the - // next function. The overrun happens when the function ends with - // a call to a function annotated noreturn (e.g. CHECK). - if (Symbolize(reinterpret_cast<char *>(pc) - 1, tmp, sizeof(tmp))) { - symbol = tmp; - } - char buf[1024]; - snprintf(buf, sizeof(buf), "%s@ %*p %s\n", - prefix, kPrintfPointerFieldWidth, pc, symbol); - writerfn(buf, arg); -} -#endif - -static void DumpPC(DebugWriter *writerfn, void *arg, void *pc, - const char * const prefix) { - char buf[100]; - snprintf(buf, sizeof(buf), "%s@ %*p\n", - prefix, kPrintfPointerFieldWidth, pc); - writerfn(buf, arg); -} - -// Dump current stack trace as directed by writerfn -static void DumpStackTrace(int skip_count, DebugWriter *writerfn, void *arg) { - // Print stack trace - void* stack[32]; - int depth = GetStackTrace(stack, ARRAYSIZE(stack), skip_count+1); - for (int i = 0; i < depth; i++) { -#if defined(HAVE_SYMBOLIZE) - if (FLAGS_symbolize_stacktrace) { - DumpPCAndSymbol(writerfn, arg, stack[i], " "); - } else { - DumpPC(writerfn, arg, stack[i], " "); - } -#else - DumpPC(writerfn, arg, stack[i], " "); -#endif - } -} - -static void DumpStackTraceAndExit() { - DumpStackTrace(1, DebugWriteToStderr, NULL); - - // Set the default signal handler for SIGABRT, to avoid invoking our - // own signal handler installed by InstallFailedSignalHandler(). - struct sigaction sig_action; - memset(&sig_action, 0, sizeof(sig_action)); - sigemptyset(&sig_action.sa_mask); - sig_action.sa_handler = SIG_DFL; - sigaction(SIGABRT, &sig_action, NULL); - - abort(); -} - -_END_GOOGLE_NAMESPACE_ - -#endif // HAVE_STACKTRACE - -_START_GOOGLE_NAMESPACE_ - -namespace glog_internal_namespace_ { - -const char* ProgramInvocationShortName() { - if (g_program_invocation_short_name != NULL) { - return g_program_invocation_short_name; - } else { - // TODO(hamaji): Use /proc/self/cmdline and so? - return "UNKNOWN"; - } -} - -bool IsGoogleLoggingInitialized() { - return g_program_invocation_short_name != NULL; -} - -bool is_default_thread() { - if (g_program_invocation_short_name == NULL) { - // InitGoogleLogging() not yet called, so unlikely to be in a different - // thread - return true; - } else { - return pthread_equal(pthread_self(), g_main_thread_id); - } -} - -#ifdef OS_WINDOWS -struct timeval { - long tv_sec, tv_usec; -}; - -// Based on: http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/os_win32.c&q=GetSystemTimeAsFileTime%20license:bsd -// See COPYING for copyright information. -static int gettimeofday(struct timeval *tv, void* tz) { -#define EPOCHFILETIME (116444736000000000ULL) - FILETIME ft; - LARGE_INTEGER li; - uint64 tt; - - GetSystemTimeAsFileTime(&ft); - li.LowPart = ft.dwLowDateTime; - li.HighPart = ft.dwHighDateTime; - tt = (li.QuadPart - EPOCHFILETIME) / 10; - tv->tv_sec = tt / 1000000; - tv->tv_usec = tt % 1000000; - - return 0; -} -#endif - -int64 CycleClock_Now() { - // TODO(hamaji): temporary impementation - it might be too slow. - struct timeval tv; - gettimeofday(&tv, NULL); - return static_cast<int64>(tv.tv_sec) * 1000000 + tv.tv_usec; -} - -int64 UsecToCycles(int64 usec) { - return usec; -} - -WallTime WallTime_Now() { - // Now, cycle clock is retuning microseconds since the epoch. - return CycleClock_Now() * 0.000001; -} - -static int32 g_main_thread_pid = getpid(); -int32 GetMainThreadPid() { - return g_main_thread_pid; -} - -bool PidHasChanged() { - int32 pid = getpid(); - if (g_main_thread_pid == pid) { - return false; - } - g_main_thread_pid = pid; - return true; -} - -pid_t GetTID() { - // On Linux and MacOSX, we try to use gettid(). -#if defined OS_LINUX || defined OS_MACOSX -#ifndef __NR_gettid -#ifdef OS_MACOSX -#define __NR_gettid SYS_gettid -#elif ! defined __i386__ -#error "Must define __NR_gettid for non-x86 platforms" -#else -#define __NR_gettid 224 -#endif -#endif - static bool lacks_gettid = false; - if (!lacks_gettid) { - pid_t tid = syscall(__NR_gettid); - if (tid != -1) { - return tid; - } - // Technically, this variable has to be volatile, but there is a small - // performance penalty in accessing volatile variables and there should - // not be any serious adverse effect if a thread does not immediately see - // the value change to "true". - lacks_gettid = true; - } -#endif // OS_LINUX || OS_MACOSX - - // If gettid() could not be used, we use one of the following. -#if defined OS_LINUX - return getpid(); // Linux: getpid returns thread ID when gettid is absent -#elif defined OS_WINDOWS || defined OS_CYGWIN - return GetCurrentThreadId(); -#else - // If none of the techniques above worked, we use pthread_self(). - return (pid_t)(uintptr_t)pthread_self(); -#endif -} - -const char* const_basename(const char* filepath) { - const char* base = strrchr(filepath, '/'); -#ifdef OS_WINDOWS // Look for either path separator in Windows - if (!base) - base = strrchr(filepath, '\\'); -#endif - return base ? (base+1) : filepath; -} - -static string g_my_user_name; -const string& MyUserName() { - return g_my_user_name; -} -static void MyUserNameInitializer() { - // TODO(hamaji): Probably this is not portable. -#if defined(OS_WINDOWS) - const char* user = getenv("USERNAME"); -#else - const char* user = getenv("USER"); -#endif - if (user != NULL) { - g_my_user_name = user; - } else { - g_my_user_name = "invalid-user"; - } -} -REGISTER_MODULE_INITIALIZER(utilities, MyUserNameInitializer()); - -#ifdef HAVE_STACKTRACE -void DumpStackTraceToString(string* stacktrace) { - DumpStackTrace(1, DebugWriteToString, stacktrace); -} -#endif - -// We use an atomic operation to prevent problems with calling CrashReason -// from inside the Mutex implementation (potentially through RAW_CHECK). -static const CrashReason* g_reason = 0; - -void SetCrashReason(const CrashReason* r) { - sync_val_compare_and_swap(&g_reason, - reinterpret_cast<const CrashReason*>(0), - r); -} - -void InitGoogleLoggingUtilities(const char* argv0) { - CHECK(!IsGoogleLoggingInitialized()) - << "You called InitGoogleLogging() twice!"; - const char* slash = strrchr(argv0, '/'); -#ifdef OS_WINDOWS - if (!slash) slash = strrchr(argv0, '\\'); -#endif - g_program_invocation_short_name = slash ? slash + 1 : argv0; - g_main_thread_id = pthread_self(); - -#ifdef HAVE_STACKTRACE - InstallFailureFunction(&DumpStackTraceAndExit); -#endif -} - -void ShutdownGoogleLoggingUtilities() { - CHECK(IsGoogleLoggingInitialized()) - << "You called ShutdownGoogleLogging() without calling InitGoogleLogging() first!"; - g_program_invocation_short_name = NULL; -#ifdef HAVE_SYSLOG_H - closelog(); -#endif -} - -} // namespace glog_internal_namespace_ - -_END_GOOGLE_NAMESPACE_ - -// Make an implementation of stacktrace compiled. -#ifdef STACKTRACE_H -# include STACKTRACE_H -#endif http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/glog/src/windows/utilities.h ---------------------------------------------------------------------- diff --git a/third_party/glog/src/windows/utilities.h b/third_party/glog/src/windows/utilities.h deleted file mode 100644 index 5f79968..0000000 --- a/third_party/glog/src/windows/utilities.h +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright (c) 2008, 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: Shinichiro Hamaji -// -// Define utilties for glog internal usage. - -#ifndef UTILITIES_H__ -#define UTILITIES_H__ - -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) -# define OS_WINDOWS -#elif defined(__CYGWIN__) || defined(__CYGWIN32__) -# define OS_CYGWIN -#elif defined(linux) || defined(__linux) || defined(__linux__) -# define OS_LINUX -#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) -# define OS_MACOSX -#elif defined(__FreeBSD__) -# define OS_FREEBSD -#elif defined(__NetBSD__) -# define OS_NETBSD -#elif defined(__OpenBSD__) -# define OS_OPENBSD -#else -// TODO(hamaji): Add other platforms. -#endif - -// printf macros for size_t, in the style of inttypes.h -#ifdef _LP64 -#define __PRIS_PREFIX "z" -#else -#define __PRIS_PREFIX -#endif - -// Use these macros after a % in a printf format string -// to get correct 32/64 bit behavior, like this: -// size_t size = records.size(); -// printf("%"PRIuS"\n", size); - -#define PRIdS __PRIS_PREFIX "d" -#define PRIxS __PRIS_PREFIX "x" -#define PRIuS __PRIS_PREFIX "u" -#define PRIXS __PRIS_PREFIX "X" -#define PRIoS __PRIS_PREFIX "o" - -#include "base/mutex.h" // This must go first so we get _XOPEN_SOURCE - -#include <string> - -#if defined(OS_WINDOWS) -# include "port.h" -#endif - -#include "config.h" -#include "glog/logging.h" - -// There are three different ways we can try to get the stack trace: -// -// 1) The libunwind library. This is still in development, and as a -// separate library adds a new dependency, but doesn't need a frame -// pointer. It also doesn't call malloc. -// -// 2) Our hand-coded stack-unwinder. This depends on a certain stack -// layout, which is used by gcc (and those systems using a -// gcc-compatible ABI) on x86 systems, at least since gcc 2.95. -// It uses the frame pointer to do its work. -// -// 3) The gdb unwinder -- also the one used by the c++ exception code. -// It's obviously well-tested, but has a fatal flaw: it can call -// malloc() from the unwinder. This is a problem because we're -// trying to use the unwinder to instrument malloc(). -// -// 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. - -#if defined(HAVE_LIB_UNWIND) -# define STACKTRACE_H "stacktrace_libunwind-inl.h" -#elif !defined(NO_FRAME_POINTER) -# if defined(__i386__) && __GNUC__ >= 2 -# define STACKTRACE_H "stacktrace_x86-inl.h" -# elif defined(__x86_64__) && __GNUC__ >= 2 && HAVE_UNWIND_H -# define STACKTRACE_H "stacktrace_x86_64-inl.h" -# elif (defined(__ppc__) || defined(__PPC__)) && __GNUC__ >= 2 -# define STACKTRACE_H "stacktrace_powerpc-inl.h" -# endif -#endif - -#if !defined(STACKTRACE_H) && defined(HAVE_EXECINFO_H) -# define STACKTRACE_H "stacktrace_generic-inl.h" -#endif - -#if defined(STACKTRACE_H) -# define HAVE_STACKTRACE -#endif - -// defined by gcc -#if defined(__ELF__) && defined(OS_LINUX) -# define HAVE_SYMBOLIZE -#elif defined(OS_MACOSX) && defined(HAVE_DLADDR) -// Use dladdr to symbolize. -# define HAVE_SYMBOLIZE -#endif - -#ifndef ARRAYSIZE -// There is a better way, but this is good enough for our purpose. -# define ARRAYSIZE(a) (sizeof(a) / sizeof(*(a))) -#endif - -_START_GOOGLE_NAMESPACE_ - -namespace glog_internal_namespace_ { - -#ifdef HAVE___ATTRIBUTE__ -# define ATTRIBUTE_NOINLINE __attribute__ ((noinline)) -# define HAVE_ATTRIBUTE_NOINLINE -#else -# define ATTRIBUTE_NOINLINE -#endif - -const char* ProgramInvocationShortName(); - -bool IsGoogleLoggingInitialized(); - -bool is_default_thread(); - -int64 CycleClock_Now(); - -int64 UsecToCycles(int64 usec); - -typedef double WallTime; -WallTime WallTime_Now(); - -int32 GetMainThreadPid(); -bool PidHasChanged(); - -pid_t GetTID(); - -const std::string& MyUserName(); - -// Get the part of filepath after the last path separator. -// (Doesn't modify filepath, contrary to basename() in libgen.h.) -const char* const_basename(const char* filepath); - -// Wrapper of __sync_val_compare_and_swap. If the GCC extension isn't -// defined, we try the CPU specific logics (we only support x86 and -// x86_64 for now) first, then use a naive implementation, which has a -// race condition. -template<typename T> -inline T sync_val_compare_and_swap(T* ptr, T oldval, T newval) { -#if defined(HAVE___SYNC_VAL_COMPARE_AND_SWAP) - return __sync_val_compare_and_swap(ptr, oldval, newval); -#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - T ret; - __asm__ __volatile__("lock; cmpxchg %1, (%2);" - :"=a"(ret) - // GCC may produces %sil or %dil for - // constraint "r", but some of apple's gas - // dosn't know the 8 bit registers. - // We use "q" to avoid these registers. - :"q"(newval), "q"(ptr), "a"(oldval) - :"memory", "cc"); - return ret; -#else - T ret = *ptr; - if (ret == oldval) { - *ptr = newval; - } - return ret; -#endif -} - -void DumpStackTraceToString(std::string* stacktrace); - -struct CrashReason { - CrashReason() : filename(0), line_number(0), message(0), depth(0) {} - - const char* filename; - int line_number; - const char* message; - - // We'll also store a bit of stack trace context at the time of crash as - // it may not be available later on. - void* stack[32]; - int depth; -}; - -void SetCrashReason(const CrashReason* r); - -void InitGoogleLoggingUtilities(const char* argv0); -void ShutdownGoogleLoggingUtilities(); - -} // namespace glog_internal_namespace_ - -_END_GOOGLE_NAMESPACE_ - -using namespace GOOGLE_NAMESPACE::glog_internal_namespace_; - -#endif // UTILITIES_H__ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/glog/src/windows/vlog_is_on.cc ---------------------------------------------------------------------- diff --git a/third_party/glog/src/windows/vlog_is_on.cc b/third_party/glog/src/windows/vlog_is_on.cc deleted file mode 100644 index 8a79df5..0000000 --- a/third_party/glog/src/windows/vlog_is_on.cc +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright (c) 1999, 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: Ray Sidney and many others -// -// Broken out from logging.cc by Soren Lassen -// logging_unittest.cc covers the functionality herein - -#include "utilities.h" - -#include <string.h> -#include <stdlib.h> -#include <errno.h> -#include <cstdio> -#include <string> -#include "base/commandlineflags.h" -#include "glog/logging.h" -#include "glog/raw_logging.h" -#include "base/googleinit.h" - -// glog doesn't have annotation -#define ANNOTATE_BENIGN_RACE(address, description) - -using std::string; - -GLOG_DEFINE_int32(v, 0, "Show all VLOG(m) messages for m <= this." -" Overridable by --vmodule."); - -GLOG_DEFINE_string(vmodule, "", "per-module verbose level." -" Argument is a comma-separated list of <module name>=<log level>." -" <module name> is a glob pattern, matched against the filename base" -" (that is, name ignoring .cc/.h./-inl.h)." -" <log level> overrides any value given by --v."); - -_START_GOOGLE_NAMESPACE_ - -namespace glog_internal_namespace_ { - -// Implementation of fnmatch that does not need 0-termination -// of arguments and does not allocate any memory, -// but we only support "*" and "?" wildcards, not the "[...]" patterns. -// It's not a static function for the unittest. -GOOGLE_GLOG_DLL_DECL bool SafeFNMatch_(const char* pattern, - size_t patt_len, - const char* str, - size_t str_len) { - size_t p = 0; - size_t s = 0; - while (1) { - if (p == patt_len && s == str_len) return true; - if (p == patt_len) return false; - if (s == str_len) return p+1 == patt_len && pattern[p] == '*'; - if (pattern[p] == str[s] || pattern[p] == '?') { - p += 1; - s += 1; - continue; - } - if (pattern[p] == '*') { - if (p+1 == patt_len) return true; - do { - if (SafeFNMatch_(pattern+(p+1), patt_len-(p+1), str+s, str_len-s)) { - return true; - } - s += 1; - } while (s != str_len); - return false; - } - return false; - } -} - -} // namespace glog_internal_namespace_ - -using glog_internal_namespace_::SafeFNMatch_; - -int32 kLogSiteUninitialized = 1000; - -// List of per-module log levels from FLAGS_vmodule. -// Once created each element is never deleted/modified -// except for the vlog_level: other threads will read VModuleInfo blobs -// w/o locks and we'll store pointers to vlog_level at VLOG locations -// that will never go away. -// We can't use an STL struct here as we wouldn't know -// when it's safe to delete/update it: other threads need to use it w/o locks. -struct VModuleInfo { - string module_pattern; - mutable int32 vlog_level; // Conceptually this is an AtomicWord, but it's - // too much work to use AtomicWord type here - // w/o much actual benefit. - const VModuleInfo* next; -}; - -// This protects the following global variables. -static Mutex vmodule_lock; -// Pointer to head of the VModuleInfo list. -// It's a map from module pattern to logging level for those module(s). -static VModuleInfo* vmodule_list = 0; -// Boolean initialization flag. -static bool inited_vmodule = false; - -// L >= vmodule_lock. -static void VLOG2Initializer() { - vmodule_lock.AssertHeld(); - // Can now parse --vmodule flag and initialize mapping of module-specific - // logging levels. - inited_vmodule = false; - const char* vmodule = FLAGS_vmodule.c_str(); - const char* sep; - VModuleInfo* head = NULL; - VModuleInfo* tail = NULL; - while ((sep = strchr(vmodule, '=')) != NULL) { - string pattern(vmodule, sep - vmodule); - int module_level; - if (sscanf(sep, "=%d", &module_level) == 1) { - VModuleInfo* info = new VModuleInfo; - info->module_pattern = pattern; - info->vlog_level = module_level; - if (head) tail->next = info; - else head = info; - tail = info; - } - // Skip past this entry - vmodule = strchr(sep, ','); - if (vmodule == NULL) break; - vmodule++; // Skip past "," - } - if (head) { // Put them into the list at the head: - tail->next = vmodule_list; - vmodule_list = head; - } - inited_vmodule = true; -} - -// This can be called very early, so we use SpinLock and RAW_VLOG here. -int SetVLOGLevel(const char* module_pattern, int log_level) { - int result = FLAGS_v; - int const pattern_len = strlen(module_pattern); - bool found = false; - MutexLock l(&vmodule_lock); // protect whole read-modify-write - for (const VModuleInfo* info = vmodule_list; - info != NULL; info = info->next) { - if (info->module_pattern == module_pattern) { - if (!found) { - result = info->vlog_level; - found = true; - } - info->vlog_level = log_level; - } else if (!found && - SafeFNMatch_(info->module_pattern.c_str(), - info->module_pattern.size(), - module_pattern, pattern_len)) { - result = info->vlog_level; - found = true; - } - } - if (!found) { - VModuleInfo* info = new VModuleInfo; - info->module_pattern = module_pattern; - info->vlog_level = log_level; - info->next = vmodule_list; - vmodule_list = info; - } - RAW_VLOG(1, "Set VLOG level for \"%s\" to %d", module_pattern, log_level); - return result; -} - -// NOTE: Individual VLOG statements cache the integer log level pointers. -// NOTE: This function must not allocate memory or require any locks. -bool InitVLOG3__(int32** site_flag, int32* site_default, - const char* fname, int32 verbose_level) { - MutexLock l(&vmodule_lock); - bool read_vmodule_flag = inited_vmodule; - if (!read_vmodule_flag) { - VLOG2Initializer(); - } - - // protect the errno global in case someone writes: - // VLOG(..) << "The last error was " << strerror(errno) - int old_errno = errno; - - // site_default normally points to FLAGS_v - int32* site_flag_value = site_default; - - // Get basename for file - const char* base = strrchr(fname, '/'); - base = base ? (base+1) : fname; - const char* base_end = strchr(base, '.'); - size_t base_length = base_end ? size_t(base_end - base) : strlen(base); - - // Trim out trailing "-inl" if any - if (base_length >= 4 && (memcmp(base+base_length-4, "-inl", 4) == 0)) { - base_length -= 4; - } - - // TODO: Trim out _unittest suffix? Perhaps it is better to have - // the extra control and just leave it there. - - // find target in vector of modules, replace site_flag_value with - // a module-specific verbose level, if any. - for (const VModuleInfo* info = vmodule_list; - info != NULL; info = info->next) { - if (SafeFNMatch_(info->module_pattern.c_str(), info->module_pattern.size(), - base, base_length)) { - site_flag_value = &info->vlog_level; - // value at info->vlog_level is now what controls - // the VLOG at the caller site forever - break; - } - } - - // Cache the vlog value pointer if --vmodule flag has been parsed. - ANNOTATE_BENIGN_RACE(site_flag, - "*site_flag may be written by several threads," - " but the value will be the same"); - if (read_vmodule_flag) *site_flag = site_flag_value; - - // restore the errno in case something recoverable went wrong during - // the initialization of the VLOG mechanism (see above note "protect the..") - errno = old_errno; - return *site_flag_value >= verbose_level; -} - -_END_GOOGLE_NAMESPACE_ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/googletest ---------------------------------------------------------------------- diff --git a/third_party/googletest b/third_party/googletest deleted file mode 160000 index d225acc..0000000 --- a/third_party/googletest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d225acc90bc3a8c420a9bcd1f033033c1ccd7fe0 http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/AUTHORS ---------------------------------------------------------------------- diff --git a/third_party/gperftools/AUTHORS b/third_party/gperftools/AUTHORS deleted file mode 100644 index 3995ed4..0000000 --- a/third_party/gperftools/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -google-perfto...@googlegroups.com - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/COPYING ---------------------------------------------------------------------- diff --git a/third_party/gperftools/COPYING b/third_party/gperftools/COPYING deleted file mode 100644 index e4956cf..0000000 --- a/third_party/gperftools/COPYING +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2005, 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. http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/ChangeLog ---------------------------------------------------------------------- diff --git a/third_party/gperftools/ChangeLog b/third_party/gperftools/ChangeLog deleted file mode 100644 index 4b334be..0000000 --- a/third_party/gperftools/ChangeLog +++ /dev/null @@ -1,646 +0,0 @@ -Fri Feb 03 15:40:45 2012 Google Inc. <google-perfto...@googlegroups.com> - - * gperftools: version 2.0 - * Renamed the project from google-perftools to gperftools (csilvers) - * Renamed the .deb/.rpm packagse from google-perftools to gperftools too - * Renamed include directory from google/ to gperftools/ (csilvers) - * Changed the 'official' perftools email in setup.py/etc - * Renamed google-perftools.sln to gperftools.sln - * PORTING: Removed bash-isms & grep -q in heap-checker-death_unittest.sh - * Changed copyright text to reflect Google's relinquished ownership - -Tue Jan 31 10:43:50 2012 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.10 release - * PORTING: Support for patching assembly on win x86_64! (scott.fr...) - * PORTING: Work around atexit-execution-order bug on freebsd (csilvers) - * PORTING: Patch _calloc_crt for windows (roger orr) - * PORTING: Add C++11 compatibility method for stl allocator (jdennett) - * PORTING: use MADV_FREE, not MADV_DONTNEED, on freebsd (csilvers) - * PORTING: Don't use SYS_open when not supported on solaris (csilvers) - * PORTING: Do not assume uname() returns 0 on success (csilvers) - * LSS: Improved ARM support in linux-syscall-support (dougkwan) - * LSS: Get rid of unused syscalls in linux-syscall-support (csilvers) - * LSS: Fix broken mmap wrapping for ppc (markus) - * LSS: Emit .cfi_adjust_cfa_offset when appropriate (ppluzhnikov) - * LSS: Be more accurate in register use in __asm__ (markus) - * LSS: Fix __asm__ calls to compile under clang (chandlerc) - * LSS: Fix ARM inline assembly bug around r7 and swi (lcwu) - * No longer log when an allocator fails (csilvers) - * void* -> const void* for MallocExtension methods (llib) - * Improve HEAP_PROFILE_MMAP and fix bugs with it (dmikurube) - * Replace int-based abs with more correct fabs in a test (pmurin) - -Thu Dec 22 16:22:45 2011 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.9 release - * Lightweight check for double-frees (blount) - * BUGFIX: Fix pprof to exit properly if run with no args (dagitses) - * Suggest ASan as a way to diagnose buggy code (ppluzhnikov) - * Get rid of unused CACHELINE_SIZE (csilvers) - * Replace atexit() calls with global dtors; helps freebsd (csilvers) - * Disable heap-checker under AddressSanitizer (kcc) - * Fix bug in powerpc stacktracing (ppluzhnikov) - * PERF: Use exponential backoff waiting for spinlocks (m3b) - * Fix 64-bit nm on 32-bit binaries in pprof (csilvers) - * Add ProfileHandlerDisallowForever (rsc) - * BUGFIX: Shell escape when forking in pprof (csilvers) - * No longer combine overloaded functions in pprof (csilvers) - * Fix address-normalizing bug in pprof (csilvers) - * More consistently call abort() instead of exit() on failure (csilvers) - * Allow NoGlobalLeaks to be safely called more than once (csilvers) - * PORTING/BUGFIX: Fix ARM cycleclock to use volatile asm (dougkwan) - * PORTING: 64-bit atomic ops for ARMv7 (dougkwan) - * PORTING: Implement stacktrace for ARM (dougkwan) - * PORTING: Fix malloc_hook_mmap_linux for ARM (dougkwan) - * PORTING: Update linux_syscall_support.h for ARM/etc (evannier, sanek) - * PORTING: Fix freebsd to work on x86_64 (chapp...@gmail.com) - * PORTING: Added additional SYS_mmap fixes for FreeBSD (chappedm) - * PORTING: Allow us to compile on OS X 10.6 and run on 10.5 (raltherr) - * PORTING: Check for mingw compilers that *do* define timespec - * PORTING: Add "support" for MIPS cycletimer - * PORTING: Fix fallback cycle-timer to work with Now (dougkwan) - * PERF: Move stack trace collecting out of the mutex (taylorc) - * PERF: Get the deallocation stack trace outside the mutex (sean) - * Make PageHeap dynamically allocated for leak checks (maxim) - * BUGFIX: Fix probing of nm -f behavior in pprof (dpeng) - * BUGFIX: Fix a race with the CentralFreeList lock before main (sanjay) - * Support /pprof/censusprofile url arguments (rajatjain) - * Change IgnoreObject to return its argument (nlewycky) - * Update malloc-hook files to support more CPUs - * BUGFIX: write our own strstr to avoid libc problems (csilvers) - * Use simple callgrind compression facility in pprof - * Print an error message when we can't run pprof to symbolize (csilvers) - * Die in configure when g++ is't installed (csilvers) - * DOC: Beef up the documentation a bit about using libunwind (csilvers) - -Fri Aug 26 13:29:25 2011 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.8.3 release - * Added back the 'pthreads unsafe early' #define, needed for FreeBSD - -Thu Aug 11 15:01:47 2011 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.8.2 release - * Fixed calculation of patchlevel, 'make check' should all pass again - -Tue Jul 26 20:57:51 2011 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.8.1 release - * Added an #include to fix compile breakage on latest gcc's - * Removed an extra , in the configure.ac script - -Fri Jul 15 16:10:51 2011 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.8 release - * PORTING: (Disabled) support for patching mmap on freebsd (chapp...) - * PORTING: Support volatile __malloc_hook for glibc 2.14 (csilvers) - * PORTING: Use _asm rdtsc and __rdtsc to get cycleclock in windows (koda) - * PORTING: Fix fd vs. HANDLE compiler error on cygwin (csilvers) - * PORTING: Do not test memalign or double-linking on OS X (csilvers) - * PORTING: Actually enable TLS on windows (jontra) - * PORTING: Some work to compile under Native Client (krasin) - * PORTING: deal with pthread_once w/o -pthread on freebsd (csilvers) - * Rearrange libc-overriding to make it easier to port (csilvers) - * Display source locations in pprof disassembly (sanjay) - * BUGFIX: Actually initialize allocator name (mec) - * BUGFIX: Keep track of 'overhead' bytes in malloc reporting (csilvers) - * Allow ignoring one object twice in the leak checker (glider) - * BUGFIX: top10 in pprof should print 10 lines, not 11 (rsc) - * Refactor vdso source files (tipp) - * Some documentation cleanups - * Document MAX_TOTAL_THREAD_CACHE_SIZE <= 1Gb (nsethi) - * Add MallocExtension::GetOwnership(ptr) (csilvers) - * BUGFIX: We were leaving out a needed $(top_srcdir) in the Makefile - * PORTING: Support getting argv0 on OS X - * Add 'weblist' command to pprof: like 'list' but html (sanjay) - * Improve source listing in pprof (sanjay) - * Cap cache sizes to reduce fragmentation (ruemmler) - * Improve performance by capping or increasing sizes (ruemmler) - * Add M{,un}mapReplacmenet hooks into MallocHook (ribrdb) - * Refactored system allocator logic (gangren) - * Include cleanups (csilvers) - * Add TCMALLOC_SMALL_BUT_SLOW support (ruemmler) - * Clarify that tcmalloc stats are MiB (robinson) - * Remove support for non-tcmalloc debugallocation (blount) - * Add a new test: malloc_hook_test (csilvers) - * Change the configure script to be more crosstool-friendly (mcgrathr) - * PORTING: leading-underscore changes to support win64 (csilvers) - * Improve debugallocation tc_malloc_size (csilvers) - * Extend atomicops.h and cyceclock to use ARM V6+ optimized code (sanek) - * Change malloc-hook to use a list-like structure (llib) - * Add flag to use MAP_PRIVATE in memfs_malloc (gangren) - * Windows support for pprof: nul and /usr/bin/file (csilvers) - * TESTING: add test on strdup to tcmalloc_test (csilvers) - * Augment heap-checker to deal with no-inode maps (csilvers) - * Count .dll/.dylib as shared libs in heap-checker (csilvers) - * Disable sys_futex for arm; it's not always reliable (sanek) - * PORTING: change lots of windows/port.h macros to functions - * BUGFIX: Generate correct version# in tcmalloc.h on windows (csilvers) - * PORTING: Some casting to make solaris happier about types (csilvers) - * TESTING: Disable debugallocation_test in 'minimal' mode (csilvers) - * Rewrite debugallocation to be more modular (csilvers) - * Don't try to run the heap-checker under valgrind (ppluzhnikov) - * BUGFIX: Make focused stat %'s relative, not absolute (sanjay) - * BUGFIX: Don't use '//' comments in a C file (csilvers) - * Quiet new-gcc compiler warnings via -Wno-unused-result, etc (csilvers) - -Fri Feb 04 15:54:31 2011 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.7 release - * Reduce page map key size under x86_64 by 4.4MB (rus) - * Remove a flaky malloc-extension test (fdabek) - * Improve the performance of PageHeap::New (ond..., csilvers) - * Improve sampling_test with no-inline additions/etc (fdabek) - * 16-byte align debug allocs (jyasskin) - * Change FillProcSelfMaps to detect out-of-buffer-space (csilvers) - * Document the need for sampling to use GetHeapSample (csilvers) - * Try to read TSC frequency from tsc_freq_khs (adurbin) - * Do better at figuring out if tests are running under gdb (ppluzhnikov) - * Improve spinlock contention performance (ruemmler) - * Better internal-function list for pprof's /contention (ruemmler) - * Speed up GoogleOnce (m3b) - * Limit number of incoming/outgoing edges in pprof (sanjay) - * Add pprof --evince to go along with --gv (csilvers) - * Document the various ways to get heap-profiling information (csilvers) - * Separate out synchronization profiling routines (ruemmler) - * Improve malloc-stats output to be more understandable (csilvers) - * Add support for census profiler in pporf (nabeelmian) - * Document how pprof's /symbol must support GET requests (csilvers) - * Improve acx_pthread.m4 (ssuomi, liujisi) - * Speed up pprof's ExtractSymbols (csilvers) - * Ignore some known-leaky (java) libraries in the heap checker (davidyu) - * Make kHideMask use all 64 bits in tests (ppluzhnikov) - * Clean up pprof input-file handling (csilvers) - * BUGFIX: Don't crash if __environ is NULL (csilvers) - * BUGFIX: Fix totally broken debugallocation tests (csilvers) - * BUGFIX: Fix up fake_VDSO handling for unittest (ppluzhnikov) - * BUGFIX: Suppress all large allocs when report threshold is 0 (lexie) - * BUGFIX: mmap2 on i386 takes an off_t, not off64_t (csilvers) - * PORTING: Add missing PERFTOOLS_DLL_DECL (csilvers) - * PORTING: Add stddef.h to make newer gcc's happy (csilvers) - * PORTING: Document some tricks for working under OS X (csilvers) - * PORTING: Don't try to check valgrind for windows (csilvers) - * PORTING: Make array-size a var to compile under clang (chandlerc) - * PORTING: No longer hook _aligned_malloc and _aligned_free (csilvers) - * PORTING: Quiet some gcc warnings (csilvers) - * PORTING: Replace %PRIxPTR with %p to be more portable (csilvers) - * PORTING: Support systems that capitalize /proc weirdly (sanek) - * PORTING: Treat arm3 the same as arm5t in cycletimer (csilvers) - * PORTING: Update windows logging to not allocate memory (csilvers) - * PORTING: avoid double-patching newer windows DLLs (roger.orr) - * PORTING: get dynamic_annotations.c to work on windows (csilvers) - * Add pkg-config .pc files for the 5 libraries we produce (csilvers) - * Added proper libtool versioning, so this lib will be 0.1.0 (csilvers) - * Moved from autoconf 2.64 to 2.65 - -Thu Aug 5 12:48:03 PDT 2010 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.6 release - * Add tc_malloc_usable_size for compatibility with glibc (csilvers) - * Override malloc_usable_size with tc_malloc_usable_size (csilvers) - * Default to no automatic heap sampling in tcmalloc (csilvers) - * Add -DTCMALLOC_LARGE_PAGES, a possibly faster tcmalloc (rus) - * Make some functions extern "C" to avoid false ODR warnings (jyasskin) - * pprof: Add SVG-based output (rsc) - * pprof: Extend pprof --tools to allow per-tool configs (csilvers) - * pprof: Improve support of 64-bit and big-endian profiles (csilvers) - * pprof: Add interactive callgrind suport (weidenri...) - * pprof: Improve address->function mapping a bit (dpeng) - * Better detection of when we're running under valgrind (csilvers) - * Better CPU-speed detection under valgrind (saito) - * Use, and recommend, -fno-builtin-malloc when compiling (csilvers) - * Avoid false-sharing of memory between caches (bmaurer) - * BUGFIX: Fix heap sampling to use correct alloc size (bmauer) - * BUGFIX: Avoid gcc 4.0.x bug by making hook-clearing atomic (csilvers) - * BUGFIX: Avoid gcc 4.5.x optimization bug (csilvers) - * BUGFIX: Work around deps-determining bug in libtool 1.5.26 (csilvers) - * BUGFIX: Fixed test to use HAVE_PTHREAD, not HAVE_PTHREADS (csilvers) - * BUGFIX: Fix tls callback behavior on windows when using wpo (wtc) - * BUGFIX: properly align allocation sizes on Windows (antonm) - * BUGFIX: Fix prototypes for tcmalloc/debugalloc wrt throw() (csilvers) - * DOC: Updated heap-checker doc to match reality better (fischman) - * DOC: Document ProfilerFlush, ProfilerStartWithOptions (csilvers) - * DOC: Update docs for heap-profiler functions (csilvers) - * DOC: Clean up documentation around tcmalloc.slack_bytes (fikes) - * DOC: Renamed README.windows to README_windows.txt (csilvers) - * DOC: Update the NEWS file to be non-empty (csilvers) - * PORTING: Fix windows addr2line and nm with proper rc code (csilvers) - * PORTING: Add CycleClock and atomicops support for arm 5 (sanek) - * PORTING: Improve PC finding on cygwin and redhat 7 (csilvers) - * PORTING: speed up function-patching under windows (csilvers) - -Tue Jan 19 14:46:12 2010 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.5 release - * Add tc_set_new_mode (willchan) - * Make memalign functions + realloc respect tc_set_new_mode (willchan) - * Add ReleaseToSystem(num_bytes) (kash) - * Handle zero-length symbols a bit better in pprof (csilvers) - * Prefer __environ to /proc/self/environ in cpu profiler (csilvers) - * Add HEAP_CHECK_MAX_LEAKS flag to control #leaks to report (glider) - * Add two new numeric pageheap properties to MallocExtension (fikes) - * Print alloc size when mmap fails (hakon) - * Add ITIMER_REAL support to cpu profiler (csilvers, nabeelmian) - * Speed up symbolizer in heap-checker reporting (glider) - * Speed up futexes with FUTEX_PRIVATE_FLAG (m3b) - * Speed up tcmalloc but doing better span coalescing (sanjay) - * Better support for different wget's and addr2maps in pprof (csilvres) - * Implement a nothrow version of delete and delete[] (csilvers) - * BUGFIX: fix a race on module_libcs[i] in windows patching (csilvers) - * BUGFIX: Fix debugallocation to call cpp_alloc for new (willchan) - * BUGFIX: A simple bugfix for --raw mode (mrabkin) - * BUGFIX: Fix C shims to actually be valid C (csilvers) - * BUGFIX: Fix recursively-unmapped-region accounting (ppluzhnikov) - * BUGFIX: better distinguish real and fake vdso (ppluzhnikov) - * WINDOWS: replace debugmodule with more reliable psai (andrey) - * PORTING: Add .bundle as another shared library extension (csilvers) - * PORTING: Fixed a typo bug in the ocnfigure PRIxx m4 macro (csilvers) - * PORTING: Augment sysinfo to work on 64-bit OS X (csilvers) - * PORTING: Use sys/ucontext.h to fix compiing on OS X 10.6 (csilvers) - * PORTING: Fix sysinfo libname reporting for solaris x86 (jeffrey) - * PORTING: Use libunwind for i386 when using --omitfp (ppluzhnikov) - -Thu Sep 10 13:51:15 2009 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.4 release - * Add debugallocation library, to catch memory leaks, stomping, etc - * Add --raw mode to allow for delayed processing of pprof files - * Use less memory when reading CPU profiles - * New environment variables to control kernel-allocs (sbrk, memfs, etc) - * Add MarkThreadBusy(): performance improvement - * Remove static thread-cache-size code; all is dynamic now - * Add new HiddenPointer class to heap checker - * BUGFIX: pvalloc(0) allocates now (found by new debugalloc library) - * BUGFIX: valloc test (not implementation) no longer overruns memory - * BUGFIX: GetHeapProfile no longer deadlocks - * BUGFIX: Support unmapping memory regions before main - * BUGFIX: Fix some malloc-stats formatting - * BUGFIX: Don't crash as often when freeing libc-allocated memory - * BUGFIX: Deal better with incorrect PPROF_PATH when symbolizing - * BUGFIX: weaken new/delete/etc in addition to malloc/free/etc - * BUGFIX: Fix return value of GetAllocatedSize - * PORTING: Fix mmap-#define problem on some 64-bit systems - * PORTING: Call ranlib again (some OS X versions need it) - * PORTING: Fix a leak when building with LLVM - * PORTING: Remove some unneeded bash-ishs from testing scripts - * WINDOWS: Support library unloading as well as loading - * WINDOWS/BUGFIX: Set page to 'xrw' instead of 'rw' when patching - -Tue Jun 9 18:19:06 2009 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.3 release - * Provide our own name for memory functions: tc_malloc, etc (csilvers) - * Weaken memory-alloc functions so user can override them (csilvers) - * Remove meaningless delete(nothrow) and delete[](nothrow) (csilvers) - * BUILD: replace clever libtcmalloc/profiler.a with a new .a (csilvers) - * PORTING: improve windows port by using google spinlocks (csilvers) - * PORTING: Fix RedHat 9 memory allocation in heapchecker (csilvers) - * PORTING: Rename OS_WINDOWS macro to PLATFORM_WINDOWS (mbelshe) - * PORTING/BUGFIX: Make sure we don't clobber GetLastError (mbelshe) - * BUGFIX: get rid of useless data for callgrind (weidenrinde) - * BUGFIX: Modify windows patching to deadlock sometimes (csilvers) - * BUGFIX: an improved fix for hook handling during fork (csilvers) - * BUGFIX: revamp profiler_unittest.sh, which was very broken (csilvers) - -Fri Apr 17 16:40:48 2009 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.2 release - * Allow large_alloc_threshold=0 to turn it off entirely (csilvers) - * Die more helpfully when out of memory for internal data (csilvers) - * Refactor profile-data gathering, add a new unittest (cgd, nabeelmian) - * BUGFIX: fix rounding errors with static thread-size caches (addi) - * BUGFIX: disable hooks better when forking in leak-checker (csilvers) - * BUGFIX: fix realloc of crt pointers on windows (csilvers) - * BUGFIX: do a better job of finding binaries in .sh tests (csilvers) - * WINDOWS: allow overriding malloc/etc instead of patching (mbelshe) - * PORTING: fix compilation error in a ppc-specific file (csilvers) - * PORTING: deal with quirks in cygwin's /proc/self/maps (csilvers) - * PORTING: use 'A' version of functions for ascii input (mbelshe) - * PORTING: generate .so's on cygwin and mingw (ajenjo) - * PORTING: disable profiler methods on cygwin (jperkins) - * Updated autoconf version to 2.61 and libtool version to 1.5.26 - -Wed Mar 11 11:25:34 2009 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.1 release - * Dynamically resize thread caches -- nice perf. improvement (kash) - * Add VDSO support to give better stacktraces in linux (ppluzhnikov) - * Improve heap-profiling sampling algorithm (ford) - * Rewrite leak-checking code: should be faster and more robust (sanjay) - * Use ps2 instead of ps for dot: better page cropping for gv (csilvers) - * Disable malloc-failure warning messages by default (csilvers) - * Update config/Makefile to disable tests on a per-OS basis (csilvers) - * PORTING: Get perftools compiling under MSVC 7.1 again (csilvers) - * PORTING: Get perftools compiling under cygwin again (csilvers) - * PORTING: automatically set library flags for solaris x86 (csilvers) - * Add TCMALLOC_SKIP_SBRK to mirror TCMALLOC_SKIP_MMAP (csilvers) - * Add --enable flags to allow selective building (csilvers) - * Put addr2line-pdb and nm-pdb in proper output directory (csilvers) - * Remove deprecated DisableChecksIn (sanjay) - * DOCUMENTATION: Document most MallocExtension routines (csilvers) - -Tue Jan 6 13:58:56 2009 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.0 release - * Exactly the same as 1.0rc2 - -Sun Dec 14 17:10:35 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.0rc2 release - * Fix compile error on 64-bit systems (casting ptr to int) (csilvers) - -Thu Dec 11 16:01:32 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 1.0rc1 release - * Replace API for selectively disabling heap-checker in code (sanjay) - * Add a pre-mmap hook (daven, adlr) - * Add MallocExtension interface to set memory-releasing rate (fikes) - * Augment pprof to allow any string ending in /pprof/profile (csilvers) - * PORTING: Rewrite -- and fix -- malloc patching for windows (dvitek) - * PORTING: Add nm-pdb and addr2line-pdb for use by pprof (dvitek) - * PORTING: Improve cygwin and mingw support (jperkins, csilvers) - * PORTING: Fix pprof for mac os x, other pprof improvements (csilvers) - * PORTING: Fix some PPC bugs in our locking code (anton.blanchard) - * A new unittest, smapling_test, to verify tcmalloc-profiles (csilvers) - * Turn off TLS for gcc < 4.1.2, due to a TLS + -fPIC bug (csilvers) - * Prefer __builtin_frame_address to assembly for stacktraces (nlewycky) - * Separate tcmalloc.cc out into multiple files -- finally! (kash) - * Make our locking code work with -fPIC on 32-bit x86 (aruns) - * Fix an initialization-ordering bug for tcmalloc/profiling (csilvers) - * Use "initial exec" model of TLS to speed up tcmalloc (csilvers) - * Enforce 16-byte alignment for tcmalloc, for SSE (sanjay) - -Tue Sep 23 08:56:31 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.99.2 release - * COMPILE FIX: add #include needed for FreeBSD and OS X (csilvers) - -Sat Sep 20 09:37:18 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.99.1 release - * BUG FIX: look for nm, etc in /usr/bin, not /usr/crosstool (csilvers) - -Thu Sep 18 16:00:27 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.99 release - * Add IsHeapProfileRunning (csilvers) - * Add C shims for some of the C++ header files (csilvers) - * Fix heap profile file clean-up logic (maxim) - * Rename linuxthreads.c to .cc for better compiler support (csilvers) - * Add source info to disassembly in pprof (sanjay) - * Use open instead of fopen to avoid memory alloc (csilvers) - * Disable malloc extensions when running under valgrind (kcc) - * BUG FIX: Fix out-of-bound error by reordering a check (larryz) - * Add Options struct to ProfileData (cgd) - * Correct PC-handling of --base in pprof (csilvers) - * Handle 1 function occurring twice in an image (sanjay) - * Improve stack-data cleaning (maxim) - * Use 'struct Foo' to make header C compatible (csilvers) - * Add 'total' line to pprof --text (csilvers) - * Pre-allocate buffer for heap-profiler to avoid OOM errors (csilvers) - * Allow a few more env-settings to control tcmalloc (csilvers) - * Document some of the issues involving thread-local storage (csilvers) - * BUG FIX: Define strtoll and friends for windows (csilvers) - -Mon Jun 9 16:47:03 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.98 release - * Add ProfilerStartWithOptions() (cgd) - * Change tcmalloc_minimal to not do any stack-tracing at all (csilvers) - * Prefer mmap to sbrk for 64-buit debug mode (sanjay) - * Fix accounting for some tcmalloc stats (sanjay) - * Use setrlimit() to keep unittests from killing the machine (odo) - * Fix a bug when sbrk-ing near address 4G (csilvers) - * Make MallocHook thread-safe (jyasskin) - * Fix windows build for MemoryBarrier (jyasskin) - * Fix CPU-profiler docs to mention correct libs (csilvers) - * Fix for GetHeapProfile() when heap-profiling is off (maxim) - * Avoid realloc resizing ping-pongs using hysteresis (csilvers) - * Add --callgrind output support to pprof (klimek) - * Fix profiler.h and heap-profiler.h to be C-compatible (csilvers) - * Break malloc_hook.h into two parts to reduce dependencies (csilvers) - * Better handle systems that don't implement mmap (csilvers) - * PORTING: disable system_alloc_unittest for msvc (csilvers) - * PORTING: Makefile tweaks to build better on cygwin (csilvers) - -Mon Apr 21 15:20:52 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.97 release - * Refactor GetHeapProfile to avoid using malloc (maxim) - * Fix heap-checker and heap-profiler hook interactions (maxim) - * Fix a data race in MemoryRegionMap::Lock (jyasskin) - * Improve thread-safety of leak checker (maxim) - * Fix mmap profile to no longer deadlock (maxim) - * Fix rpm to have devel package depend on non-devel (csilvers) - * PORTING: Fix clock-speed detection for Mac OS X (csilvers) - -Tue Mar 18 14:30:44 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.96 release - * major atomicops rewrite; fixed atomic ops code for linux/ppc (vchen) - * nix the stacktrace library; now build structure is simpler (csilvers) - * Speed up heap-checker, and reduce extraneous logging (maxim) - * Improve itimer code for NPTL case (cgd) - * Add source code annotations for use by valgrind, etc (kcc) - * PORTING: Fix high resolution timers for Mac OS X (adlr) - -Tue Feb 19 12:01:31 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.95.1 release (bugfix release) - * x86_64 compile-fix: nix pread64 and pwrite64 (csilvers) - * more heap-checker debug logging (maxim) - * minor improvement to x86_64 CycleClock (gpike) - -Tue Feb 12 12:28:32 2008 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.95 release - * Better -- not perfect -- support for linux-ppc (csilvers) - * Fix race condition in libunwind stacktrace (aruns) - * Speed up x86 spinlock locking (m3b) - * Improve heap-checker performance (maxim) - * Heap checker traverses more ptrs inside heap-alloced objects (maxim) - * Remove deprecated ProfilerThreadState function (cgd) - * Update libunwind documentation for statically linked binaries (aruns) - -Mon Dec 3 23:51:54 2007 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.94.1 release (bugfix release) - * Fix missing #includes for x86_64 compile using libunwind (csilvers) - -Thu Nov 29 07:59:43 2007 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.94 release - * PORTING: MinGW/Msys support -- runs same code as MSVC does (csilvers) - * PORTING: Add NumCPUs support for Mac OS X (csilvers) - * Work around a sscanf bug in glibc(?) (waldemar) - * Fix Windows MSVC bug triggered by thread deletion (csilvers) - * Fix bug that triggers in MSVC /O2: missing volatile (gpike) - * March-of-time support: quiet warnings/errors for gcc 4.2, OS X 10.5 - * Modify pprof so it works without nm: useful for windows (csilvers) - * pprof: Support filtering for CPU profiles (cgd) - * Bugfix: have realloc report to hooks in all situations (maxim) - * Speed improvement: replace slow memcpy with std::copy (soren) - * Speed: better iterator efficiency in RecordRegionRemoval (soren) - * Speed: minor speed improvements via better bitfield alignment (gpike) - * Documentation: add documentation of binary profile output (cgd) - -Fri Aug 17 12:32:56 2007 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.93 release - * PORTING: everything compiles on Solaris, OS X, FreeBSD (see INSTALL) - * PORTING: cpu-profiler works on most platforms (much better GetPC()) - * PORTING: heap-profiler works on most platforms - * PORTING: improved windows support, including release builds - * No longer build or run ptmalloc tests by default - * Add support for using memfs filesystem to allocate memory in linux - * WINDOWS: give debug library and release library different names - -Tue Jul 17 22:26:27 2007 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.92 release - * PERFORMANCE: use a packed cache to speed up tcmalloc - * PORTING: preliminary windows support! (see README.windows) - * PORTING: better support for solaris, OS X, FreeBSD (see INSTALL) - * Envvar support for running the heap-checker under gdb - * Add weak declarations to maybe_threads to fix no-pthreads compile bugs - * Some 64bit fixes, especially with pprof - * Better heap-checker support for some low-level allocations - * Fix bug where heap-profiles would sometimes get truncated - * New documentation about how to handle common heap leak situations - * Use computed includes for hash_map/set: easier config - * Added all used .m4 templates to the distribution - -Wed Apr 18 16:43:55 2007 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.91 release - * Brown-paper-bag bugfix: compilation error on some x86-64 machines - -Fri Apr 13 14:50:51 2007 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.90 release - * (As the version-number jump hints, this is a major new release: - almost every piece of functionality was rewritten. I can't do - justice to all the changes, but will concentrate on highlights.) - *** USER-VISIBLE CHANGES: - * Ability to "release" unused memory added to tcmalloc - * Exposed more tweaking knobs via environment variables (see docs) - * pprof tries harder to map addresses to functions - * tcmalloc_minimal compiles and runs on FreeBSD 6.0 and Solaris 10 - *** INTERNAL CHANGES: - * Much better 64-bit support - * Better multiple-processor support (e.g. multicore contention tweaks) - * Support for recent kernel ABI changes (e.g. new arg to mremap) - * Addition of spinlocks to tcmalloc to reduce contention cost - * Speed up tcmalloc by using __thread on systems that support TLS - * Total redesign of heap-checker to improve liveness checking - * More portable stack-frame analysis -- no more hard-coded constants! - * Disentangled heap-profiler code and heap-checker code - * Several new unittests to test, e.g., thread-contention costs - * Lots of small (but important!) bug fixes: e.g., fixing GetPC on amd64 - *** KNOWN PROBLEMS: - * CPU-profiling may crash on x86_64 (64-bit) systems. See the README - * Profiling/heap-checking may deadlock on x86_64 systems. See README - -Wed Jun 14 15:11:14 2006 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.8 release - * Experimental support for remote profiling added to pprof (many) - * Fixed race condition in ProfileData::FlushTable (etune) - * Better support for weird /proc maps (maxim, mec) - * Fix heap-checker interaction with gdb (markus) - * Better 64-bit support in pprof (aruns) - * Reduce scavenging cost in tcmalloc by capping NumMoveSize (sanjay) - * Cast syscall(SYS_mmap); works on more 64-bit systems now (menage) - * Document the text output of pprof! (csilvers) - * Better compiler support for no-THREADS and for old compilers (csilvers) - * Make libunwind the default stack unwinder for x86-64 (aruns) - * Somehow the COPYING file got erased. Regenerate it (csilvers) - -Thu Apr 13 20:59:09 2006 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.7 release - * Major rewrite of thread introspection for new kernels (markus) - * Major rewrite of heap-checker to use new thread tools (maxim) - * Add proper support for following data in thread registers (maxim) - * Syscall support for older kernels, including _syscall6 (markus) - * Support PIC mode (markus, mbland, iant) - * Better support for running in non-threaded contexts (csilvers) - -Fri Jan 27 14:04:27 2006 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.6 release - * More sophisticated stacktrace usage, possibly using libunwind (aruns) - * Update pprof to handle 64-bit profiles (dehnert) - * Fix GetStackTrace to correctly return top stackframe (sanjay) - * Add ANSI compliance for new and new[], including new_handler (jkearney) - * More accuracy by reading ELF files directly rather than objdump (mec) - * Add readline support for pprof (addi) - * Add #includes for PPC (csilvers) - * New PC-detection routine for ibook powerpc (asbestoshead) - * Vastly improved tcmalloc unittest (csilvers) - * Move documentation from /usr/doc to /usr/share/doc - -Mon Nov 14 17:28:59 2005 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.5 release - * Add va_start/va_end calls around vsnprintf() (csilvers) - * Write our own __syscall_return(), since it's not defined - consistently on all 64-bit linux distros (markus) - -Wed Oct 26 15:19:16 2005 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.4 release - * Decrease fragmentation in tcmalloc (lefevere) - * Support for ARM in some of the thread-specific code (markus) - * Turn off heap-checker for statically-linked binaries, which - cause error leak reports now (etune) - * Many pprof improvements, including a command-line interface (jeff) - * CPU profiling now automatically affects all threads in linux 2.6. - (Kernel bugs break CPU profiling and threads in linux 2.4 a bit.) - ProfilerEnable() and ProfilerDisable() are deprecated. (sanjay) - * tcmalloc now correctly intercepts memalign (m3b, maxim) - * Syntax fix: added missing va_end()s. Helps non-gcc compiling (etune) - * Fixed a few coredumper bugs: race condition after PTRACE_DETACH, - ignore non-aligned stackframe pointers (markus, menage) - * 64-bit cleanup, especially for spinlock code (etune) and mmap (sanjay) - * Better support for finding threads in linux (markus) - * tcmalloc now tracks those stack traces that allocate memory (sanjay) - * Work around a weird setspecific problem (sanjay) - * Fix tcmalloc overflow problems when an alloc is close to 2G/4G (sanjay) - -Fri Jun 24 18:02:26 2005 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.3 release - * Add missing errno include for one of the unittests (csilvers) - * Reduce tcmalloc startup memory from 5M to 256K (sanjay) - * Add support for mallopt() and mallinfo (sanjay) - * Improve stacktrace's performance on some 64-bit systems (etune) - * Improve the stacktrace unittest (etune) - -Tue May 31 08:14:38 2005 Google Inc. <opensou...@google.com> - - * google-perftools: version 0.2 release - * Use mmap2() instead of mmap(), to map more memory (menage) - * Do correct pthread-local checking in heap-checker! (maxim) - * Avoid overflow on 64-bit machines in pprof (sanjay) - * Add a few more GetPC() functions, including for AMD (csilvers) - * Better method for overriding pthread functions (menage) - * (Hacky) fix to avoid overwriting profile files after fork() (csilvers) - * Crashing bugfix involving dumping heaps on small-stack threads (tudor) - * Allow library versions with letters at the end (csilvers) - * Config fixes for systems that don't define PATH_MAX (csilvers) - * Confix fixes so we no longer need config.h after install (csilvers) - * Fix to pprof to correctly read very big cpu profiles (csilvers) - * Fix to pprof to deal with new commandline flags in modern gv's - * Better error reporting when we can't access /proc/maps (etune) - * Get rid of the libc-preallocate code (which could crash on some - systems); no longer needed with local-threads fix (csilvers) - -Tue Feb 8 09:57:17 2005 Google Inc. <opensou...@google.com> - - * google-perftools: initial release: - The google-perftools package contains some utilities to improve - and analyze the performance of C++ programs. This includes an - optimized thread-caching malloc() and cpu and heap profiling - utilities.