| Index: webrtc/base/checks.cc
|
| diff --git a/webrtc/base/checks.cc b/webrtc/base/checks.cc
|
| deleted file mode 100644
|
| index 32c2f58373658bf985d28b1e122bc0b42b044c54..0000000000000000000000000000000000000000
|
| --- a/webrtc/base/checks.cc
|
| +++ /dev/null
|
| @@ -1,141 +0,0 @@
|
| -/*
|
| - * Copyright 2006 The WebRTC Project Authors. All rights reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -// Most of this was borrowed (with minor modifications) from V8's and Chromium's
|
| -// src/base/logging.cc.
|
| -
|
| -// Use the C++ version to provide __GLIBCXX__.
|
| -#include <cstdarg>
|
| -#include <cstdio>
|
| -#include <cstdlib>
|
| -
|
| -#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
|
| -#include <cxxabi.h>
|
| -#include <execinfo.h>
|
| -#endif
|
| -
|
| -#if defined(WEBRTC_ANDROID)
|
| -#define RTC_LOG_TAG "rtc"
|
| -#include <android/log.h> // NOLINT
|
| -#endif
|
| -
|
| -#if defined(WEBRTC_WIN)
|
| -#include <windows.h>
|
| -#endif
|
| -
|
| -#include "webrtc/base/checks.h"
|
| -#include "webrtc/base/logging.h"
|
| -
|
| -#if defined(_MSC_VER)
|
| -// Warning C4722: destructor never returns, potential memory leak.
|
| -// FatalMessage's dtor very intentionally aborts.
|
| -#pragma warning(disable:4722)
|
| -#endif
|
| -
|
| -namespace rtc {
|
| -
|
| -void VPrintError(const char* format, va_list args) {
|
| -#if defined(WEBRTC_ANDROID)
|
| - __android_log_vprint(ANDROID_LOG_ERROR, RTC_LOG_TAG, format, args);
|
| -#else
|
| - vfprintf(stderr, format, args);
|
| -#endif
|
| -}
|
| -
|
| -void PrintError(const char* format, ...) {
|
| - va_list args;
|
| - va_start(args, format);
|
| - VPrintError(format, args);
|
| - va_end(args);
|
| -}
|
| -
|
| -// TODO(ajm): This works on Mac (although the parsing fails) but I don't seem
|
| -// to get usable symbols on Linux. This is copied from V8. Chromium has a more
|
| -// advanced stace trace system; also more difficult to copy.
|
| -void DumpBacktrace() {
|
| -#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
|
| - void* trace[100];
|
| - int size = backtrace(trace, sizeof(trace) / sizeof(*trace));
|
| - char** symbols = backtrace_symbols(trace, size);
|
| - PrintError("\n==== C stack trace ===============================\n\n");
|
| - if (size == 0) {
|
| - PrintError("(empty)\n");
|
| - } else if (symbols == nullptr) {
|
| - PrintError("(no symbols)\n");
|
| - } else {
|
| - for (int i = 1; i < size; ++i) {
|
| - char mangled[201];
|
| - if (sscanf(symbols[i], "%*[^(]%*[(]%200[^)+]", mangled) == 1) { // NOLINT
|
| - PrintError("%2d: ", i);
|
| - int status;
|
| - size_t length;
|
| - char* demangled =
|
| - abi::__cxa_demangle(mangled, nullptr, &length, &status);
|
| - PrintError("%s\n", demangled != nullptr ? demangled : mangled);
|
| - free(demangled);
|
| - } else {
|
| - // If parsing failed, at least print the unparsed symbol.
|
| - PrintError("%s\n", symbols[i]);
|
| - }
|
| - }
|
| - }
|
| - free(symbols);
|
| -#endif
|
| -}
|
| -
|
| -FatalMessage::FatalMessage(const char* file, int line) {
|
| - Init(file, line);
|
| -}
|
| -
|
| -FatalMessage::FatalMessage(const char* file, int line, std::string* result) {
|
| - Init(file, line);
|
| - stream_ << "Check failed: " << *result << std::endl << "# ";
|
| - delete result;
|
| -}
|
| -
|
| -NO_RETURN FatalMessage::~FatalMessage() {
|
| - fflush(stdout);
|
| - fflush(stderr);
|
| - stream_ << std::endl << "#" << std::endl;
|
| - PrintError(stream_.str().c_str());
|
| - DumpBacktrace();
|
| - fflush(stderr);
|
| - abort();
|
| -}
|
| -
|
| -void FatalMessage::Init(const char* file, int line) {
|
| - stream_ << std::endl << std::endl
|
| - << "#" << std::endl
|
| - << "# Fatal error in " << file << ", line " << line << std::endl
|
| - << "# last system error: " << LAST_SYSTEM_ERROR << std::endl
|
| - << "# ";
|
| -}
|
| -
|
| -// MSVC doesn't like complex extern templates and DLLs.
|
| -#if !defined(COMPILER_MSVC)
|
| -// Explicit instantiations for commonly used comparisons.
|
| -template std::string* MakeCheckOpString<int, int>(
|
| - const int&, const int&, const char* names);
|
| -template std::string* MakeCheckOpString<unsigned long, unsigned long>(
|
| - const unsigned long&, const unsigned long&, const char* names);
|
| -template std::string* MakeCheckOpString<unsigned long, unsigned int>(
|
| - const unsigned long&, const unsigned int&, const char* names);
|
| -template std::string* MakeCheckOpString<unsigned int, unsigned long>(
|
| - const unsigned int&, const unsigned long&, const char* names);
|
| -template std::string* MakeCheckOpString<std::string, std::string>(
|
| - const std::string&, const std::string&, const char* name);
|
| -#endif
|
| -
|
| -} // namespace rtc
|
| -
|
| -// Function to call from the C version of the RTC_CHECK and RTC_DCHECK macros.
|
| -NO_RETURN void rtc_FatalMessage(const char* file, int line, const char* msg) {
|
| - rtc::FatalMessage(file, line).stream() << msg;
|
| -}
|
|
|