Remove stacktrace.cc.
git-svn-id: https://google-glog.googlecode.com/svn/trunk@17 eb4d4688-79bd-11dd-afb4-1d65580434c0
This commit is contained in:
parent
f9b58c5198
commit
32b7e7c1a4
@ -1,68 +0,0 @@
|
||||
// Copyright 2000 - 2007 Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Produce stack trace.
|
||||
//
|
||||
// There are three different ways we can try to get the stack trace:
|
||||
//
|
||||
// 1) 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.
|
||||
//
|
||||
// 2) The libunwind library. This is still in development, and as a
|
||||
// separate library adds a new dependency, abut doesn't need a frame
|
||||
// pointer. It also doesn't call malloc.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#include "config.h"
|
||||
|
||||
// First, the i386 case.
|
||||
#if defined(__i386__) && __GNUC__ >= 2
|
||||
# if defined(HAVE_EXECINFO_H)
|
||||
# include "stacktrace_generic-inl.h"
|
||||
# elif !defined(NO_FRAME_POINTER)
|
||||
# include "stacktrace_x86-inl.h"
|
||||
# endif
|
||||
|
||||
// Now, the x86_64 case.
|
||||
#elif defined(__x86_64__) && __GNUC__ >= 2
|
||||
# if defined(HAVE_EXECINFO_H)
|
||||
# include "stacktrace_generic-inl.h"
|
||||
# elif !defined(NO_FRAME_POINTER)
|
||||
# include "stacktrace_x86-inl.h"
|
||||
# elif 1
|
||||
// This is the unwinder used by gdb, which can call malloc (see above).
|
||||
# include "stacktrace_x86_64-inl.h"
|
||||
# elif 0 // We assume libunwind is installed on this machine
|
||||
// Use the libunwind library.
|
||||
// There's no way to enable it except for manually
|
||||
// editing this file (by replacing this "elif 0" with "elif 1", e.g.).
|
||||
# define UNW_LOCAL_ONLY
|
||||
# include "stacktrace_libunwind-inl.h"
|
||||
# elif defined(__linux)
|
||||
# error Cannnot calculate stack trace: need either libunwind or frame-pointers
|
||||
# else
|
||||
# error Cannnot calculate stack trace: need libunwind
|
||||
# endif
|
||||
|
||||
// The PowerPC case
|
||||
#elif (defined(__ppc__) || defined(__PPC__)) && __GNUC__ >= 2
|
||||
# if defined(HAVE_EXECINFO_H)
|
||||
# include "stacktrace_generic-inl.h"
|
||||
# elif defined(STACKTRACE_WITH_FRAME_POINTER)
|
||||
# include "stacktrace_powerpc-inl.h"
|
||||
# endif
|
||||
|
||||
// OK, those are all the processors we know how to deal with.
|
||||
#else
|
||||
# error Cannot calculate stack trace: will need to write for your environment
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user