From 84a55c5a722c26304498b3fc2546a98cbc30a2e0 Mon Sep 17 00:00:00 2001 From: "mark@chromium.org" Date: Thu, 23 Feb 2012 22:56:53 +0000 Subject: Support for .raSearch in the x86 stackwalker Patch by Benjamin Smedberg git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@927 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/google_breakpad/processor/stackwalker.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/google_breakpad/processor') diff --git a/src/google_breakpad/processor/stackwalker.h b/src/google_breakpad/processor/stackwalker.h index 6822f16a..614e31b5 100644 --- a/src/google_breakpad/processor/stackwalker.h +++ b/src/google_breakpad/processor/stackwalker.h @@ -108,6 +108,15 @@ class Stackwalker { // Returns false otherwise. bool InstructionAddressSeemsValid(u_int64_t address); + template + bool ScanForReturnAddress(InstructionType location_start, + InstructionType *location_found, + InstructionType *ip_found) { + const int kRASearchWords = 30; + return ScanForReturnAddress(location_start, location_found, ip_found, + kRASearchWords); + } + // Scan the stack starting at location_start, looking for an address // that looks like a valid instruction pointer. Addresses must // 1) be contained in the current stack memory @@ -120,10 +129,10 @@ class Stackwalker { template bool ScanForReturnAddress(InstructionType location_start, InstructionType *location_found, - InstructionType *ip_found) { - const int kRASearchWords = 30; + InstructionType *ip_found, + int searchwords) { for (InstructionType location = location_start; - location <= location_start + kRASearchWords * sizeof(InstructionType); + location <= location_start + searchwords * sizeof(InstructionType); location += sizeof(InstructionType)) { InstructionType ip; if (!memory_->GetMemoryAtAddress(location, &ip)) -- cgit v1.2.1