PageRenderTime 231ms CodeModel.GetById 19ms RepoModel.GetById 18ms app.codeStats 0ms

/thirdparty/breakpad/processor/stackwalker_ppc.h

http://github.com/tomahawk-player/tomahawk
C Header | 79 lines | 22 code | 14 blank | 43 comment | 0 complexity | 0cab47ce919c8aa65b6f25a09191211f MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause, GPL-3.0, GPL-2.0
  1. // Copyright (c) 2010 Google Inc.
  2. // All rights reserved.
  3. //
  4. // Redistribution and use in source and binary forms, with or without
  5. // modification, are permitted provided that the following conditions are
  6. // met:
  7. //
  8. // * Redistributions of source code must retain the above copyright
  9. // notice, this list of conditions and the following disclaimer.
  10. // * Redistributions in binary form must reproduce the above
  11. // copyright notice, this list of conditions and the following disclaimer
  12. // in the documentation and/or other materials provided with the
  13. // distribution.
  14. // * Neither the name of Google Inc. nor the names of its
  15. // contributors may be used to endorse or promote products derived from
  16. // this software without specific prior written permission.
  17. //
  18. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  28. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. // stackwalker_ppc.h: ppc-specific stackwalker.
  30. //
  31. // Provides stack frames given ppc register context and a memory region
  32. // corresponding to a ppc stack.
  33. //
  34. // Author: Mark Mentovai
  35. #ifndef PROCESSOR_STACKWALKER_PPC_H__
  36. #define PROCESSOR_STACKWALKER_PPC_H__
  37. #include "google_breakpad/common/breakpad_types.h"
  38. #include "google_breakpad/common/minidump_format.h"
  39. #include "google_breakpad/processor/stackwalker.h"
  40. namespace google_breakpad {
  41. class CodeModules;
  42. class StackwalkerPPC : public Stackwalker {
  43. public:
  44. // context is a ppc context object that gives access to ppc-specific
  45. // register state corresponding to the innermost called frame to be
  46. // included in the stack. The other arguments are passed directly through
  47. // to the base Stackwalker constructor.
  48. StackwalkerPPC(const SystemInfo *system_info,
  49. const MDRawContextPPC *context,
  50. MemoryRegion *memory,
  51. const CodeModules *modules,
  52. SymbolSupplier *supplier,
  53. SourceLineResolverInterface *resolver);
  54. private:
  55. // Implementation of Stackwalker, using ppc context (stack pointer in %r1,
  56. // saved program counter in %srr0) and stack conventions (saved stack
  57. // pointer at 0(%r1), return address at 8(0(%r1)).
  58. virtual StackFrame* GetContextFrame();
  59. virtual StackFrame* GetCallerFrame(const CallStack *stack);
  60. // Stores the CPU context corresponding to the innermost stack frame to
  61. // be returned by GetContextFrame.
  62. const MDRawContextPPC *context_;
  63. };
  64. } // namespace google_breakpad
  65. #endif // PROCESSOR_STACKWALKER_PPC_H__