1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/debug/stack_trace.h"
6
7#include "base/basictypes.h"
8
9#include <string.h>
10
11#include <algorithm>
12#include <sstream>
13
14namespace base {
15namespace debug {
16
17StackTrace::StackTrace(const void* const* trace, size_t count) {
18  count = std::min(count, arraysize(trace_));
19  if (count)
20    memcpy(trace_, trace, count * sizeof(trace_[0]));
21  count_ = count;
22}
23
24StackTrace::~StackTrace() {
25}
26
27const void *const *StackTrace::Addresses(size_t* count) const {
28  *count = count_;
29  if (count_)
30    return trace_;
31  return NULL;
32}
33
34std::string StackTrace::ToString() const {
35  std::stringstream stream;
36#if !defined(__UCLIBC__)
37  OutputToStream(&stream);
38#endif
39  return stream.str();
40}
41
42}  // namespace debug
43}  // namespace base
44