diff --git a/xpcom/base/nsStackWalk.cpp b/xpcom/base/nsStackWalk.cpp index a99b260de9f9..621acad5e708 100644 --- a/xpcom/base/nsStackWalk.cpp +++ b/xpcom/base/nsStackWalk.cpp @@ -52,7 +52,7 @@ #include "nsMemory.h" // for NS_ARRAY_LENGTH #include "nspr.h" -#ifdef _M_IX86 +#if defined(_M_IX86) || defined(_M_AMD64) #include // We need a way to know if we are building for WXP (or later), as if we are, we // need to use the newer 64-bit APIs. API_VERSION_NUMBER seems to fit the bill. @@ -196,7 +196,9 @@ struct WalkStackData { void PrintError(char *prefix, WalkStackData* data); unsigned int WINAPI WalkStackThread(void* data); void WalkStackMain64(struct WalkStackData* data); +#if !defined(_WIN64) void WalkStackMain(struct WalkStackData* data); +#endif // Define these as static pointers so that we can load the DLL on the @@ -495,6 +497,7 @@ WalkStackMain64(struct WalkStackData* data) } +#if !defined(_WIN64) void WalkStackMain(struct WalkStackData* data) { @@ -575,6 +578,7 @@ WalkStackMain(struct WalkStackData* data) return; } +#endif unsigned int WINAPI WalkStackThread(void* aData) @@ -611,10 +615,14 @@ WalkStackThread(void* aData) PrintError("ThreadSuspend"); } else { +#if defined(_WIN64) + WalkStackMain64(data); +#else if (_StackWalk64) WalkStackMain64(data); else WalkStackMain(data); +#endif ret = ::ResumeThread(data->thread); if (ret == -1) { diff --git a/xpcom/base/nsStackWalk.h b/xpcom/base/nsStackWalk.h index a41bd941a1be..3df812baa33d 100644 --- a/xpcom/base/nsStackWalk.h +++ b/xpcom/base/nsStackWalk.h @@ -79,7 +79,7 @@ typedef struct { * string and zero if unknown. */ char library[256]; - unsigned long loffset; + PRUptrdiff loffset; /* * The name of the file name and line number of the code * corresponding to the address, or empty string and zero if @@ -92,7 +92,7 @@ typedef struct { * offset within that function, or empty string and zero if unknown. */ char function[256]; - unsigned long foffset; + PRUptrdiff foffset; } nsCodeAddressDetails; /**