You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by je...@apache.org on 2010/11/13 16:59:33 UTC

svn commit: r1034787 - /trafficserver/traffic/trunk/libinktomi++/ink_stack_trace.cc

Author: jesus
Date: Sat Nov 13 15:59:32 2010
New Revision: 1034787

URL: http://svn.apache.org/viewvc?rev=1034787&view=rev
Log:
TS-533 stack tracks on ARM, this needs review

Modified:
    trafficserver/traffic/trunk/libinktomi++/ink_stack_trace.cc

Modified: trafficserver/traffic/trunk/libinktomi++/ink_stack_trace.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/libinktomi%2B%2B/ink_stack_trace.cc?rev=1034787&r1=1034786&r2=1034787&view=diff
==============================================================================
--- trafficserver/traffic/trunk/libinktomi++/ink_stack_trace.cc (original)
+++ trafficserver/traffic/trunk/libinktomi++/ink_stack_trace.cc Sat Nov 13 15:59:32 2010
@@ -45,7 +45,6 @@ struct sigframe
   int sig;
 #ifdef HAVE_SIGCONTEXT
   struct sigcontext sc;
-  struct _fpstate fpstate;
 #endif
 };
 
@@ -58,19 +57,23 @@ ink_restore_signal_handler_frame(void **
   struct sigframe *sf;
   struct sigcontext *scxt;
 
-#ifdef __i386__
+#if defined(__i386__)
   asm volatile ("movl %%ebp,%0":"=r" (fp));
-#else
+#elif defined(__x86_64__)
   asm volatile ("mov %%rbp,%0":"=r" (fp));
+#elif defined(__arm__)
+  asm volatile ("mov %%r9,%0":"=r" (fp));
 #endif
   for (i = 0; i < signalhandler_frame; i++)
     fp = (void **) (*fp);
   sf = (struct sigframe *) (fp + 1);
   scxt = &(sf->sc);
-#ifdef __i386__
+#if defined(__i386__)
   stack[signalhandler_frame + 1] = (void *) scxt->eip;
-#else
+#elif defined(__x86_64__)
   stack[signalhandler_frame + 1] = (void *) scxt->rip;
+#elif defined(__arm__)
+  stack[signalhandler_frame + 1] = (void *) scxt->arm_ip;
 #endif
   for (i = signalhandler_frame + 2; i < len - 1; i++)
     stack[i] = stack[i + 1];