summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2019-10-07 08:33:22 +0200
committerGitHub <noreply@github.com>2019-10-07 08:33:22 +0200
commit57c52c1183d8d5e11e725fc9886263dfca11f22c (patch)
tree9b01dce0eeda3cb5180c22b023bcd0cb6346a131
parent1881b42c239c75498f75b0e14f71ebb5c5ec4b1d (diff)
parentd9d6d1ed5f8b17f6120eaec3dbd2251eb7d697e1 (diff)
downloadATCD-57c52c1183d8d5e11e725fc9886263dfca11f22c.tar.gz
Merge pull request #969 from ORDIS-Co-Ltd/ARM_ARM64
Extend Stack_Trace to support ARM/ARM64 on Windows
-rw-r--r--ACE/ace/Stack_Trace.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/ACE/ace/Stack_Trace.cpp b/ACE/ace/Stack_Trace.cpp
index cd6f154adef..d4be2196252 100644
--- a/ACE/ace/Stack_Trace.cpp
+++ b/ACE/ace/Stack_Trace.cpp
@@ -663,6 +663,22 @@ cs_operate(int (*func)(struct frame_state const *, void *), void *usrarg,
fs.sf.AddrFrame.Mode = AddrModeFlat;
fs.sf.AddrBStore.Mode = AddrModeFlat;
fs.sf.AddrStack.Mode = AddrModeFlat;
+# elif defined (_M_ARM)
+ DWORD machine = IMAGE_FILE_MACHINE_ARM;
+ fs.sf.AddrPC.Offset = c.Pc;
+ fs.sf.AddrFrame.Offset = c.R11;
+ fs.sf.AddrStack.Offset = c.Sp;
+ fs.sf.AddrPC.Mode = AddrModeFlat;
+ fs.sf.AddrFrame.Mode = AddrModeFlat;
+ fs.sf.AddrStack.Mode = AddrModeFlat;
+# elif defined (_M_ARM64)
+ DWORD machine = IMAGE_FILE_MACHINE_ARM64;
+ fs.sf.AddrPC.Offset = c.Pc;
+ fs.sf.AddrFrame.Offset = c.Fp;
+ fs.sf.AddrStack.Offset = c.Sp;
+ fs.sf.AddrPC.Mode = AddrModeFlat;
+ fs.sf.AddrFrame.Mode = AddrModeFlat;
+ fs.sf.AddrStack.Mode = AddrModeFlat;
# endif
fs.pSym = (PSYMBOL_INFO) GlobalAlloc (GMEM_FIXED,