aboutsummaryrefslogtreecommitdiff
path: root/dep/acelite/ace/Stack_Trace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/acelite/ace/Stack_Trace.cpp')
-rw-r--r--dep/acelite/ace/Stack_Trace.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/dep/acelite/ace/Stack_Trace.cpp b/dep/acelite/ace/Stack_Trace.cpp
index 6c04e192886..353be81067b 100644
--- a/dep/acelite/ace/Stack_Trace.cpp
+++ b/dep/acelite/ace/Stack_Trace.cpp
@@ -2,7 +2,7 @@
/**
* @file Stack_Trace.cpp
*
- * $Id: Stack_Trace.cpp 91286 2010-08-05 09:04:31Z johnnyw $
+ * $Id: Stack_Trace.cpp 96017 2012-08-08 22:18:09Z mitza $
*
* @brief Encapsulate string representation of stack trace.
*
@@ -197,7 +197,7 @@ ACE_Stack_Trace::generate_trace (ssize_t starting_frame_offset,
// See memEdrLib.c in VxWorks RTP sources for an example of stack tracing.
-static STATUS ace_vx_rtp_pc_validate (INSTR *pc, TRC_OS_CTX *pOsCtx)
+static STATUS ace_vx_rtp_pc_validate (INSTR *pc, TRC_OS_CTX *)
{
return ALIGNED (pc, sizeof (INSTR)) ? OK : ERROR;
}
@@ -222,7 +222,12 @@ ACE_Stack_Trace::generate_trace (ssize_t starting_frame_offset,
TRC_OS_CTX osCtx;
osCtx.stackBase = desc.td_pStackBase;
osCtx.stackEnd = desc.td_pStackEnd;
+#if (ACE_VXWORKS < 0x690)
osCtx.pcValidateRtn = reinterpret_cast<FUNCPTR> (ace_vx_rtp_pc_validate);
+#else
+ // reinterpret_cast causes an error
+ osCtx.pcValidateRtn = ace_vx_rtp_pc_validate;
+#endif
char *fp = _WRS_FRAMEP_FROM_JMP_BUF (regs);
INSTR *pc = _WRS_RET_PC_FROM_JMP_BUF (regs);
@@ -250,8 +255,19 @@ ACE_Stack_Trace::generate_trace (ssize_t starting_frame_offset,
const char *fnName = "(no symbols)";
static const int N_ARGS = 12;
- int buf[N_ARGS];
- int *pArgs = 0;
+#if (ACE_VXWORKS < 0x690)
+# define ACE_VX_USR_ARG_T int
+# define ACE_VX_ARG_FORMAT "%x"
+#else
+# define ACE_VX_USR_ARG_T _Vx_usr_arg_t
+# ifdef _WRS_CONFIG_LP64
+# define ACE_VX_ARG_FORMAT "%lx"
+# else
+# define ACE_VX_ARG_FORMAT "%x"
+# endif
+#endif
+ ACE_VX_USR_ARG_T buf[N_ARGS];
+ ACE_VX_USR_ARG_T *pArgs = 0;
int numArgs =
trcLibFuncs.lvlArgsGet (prevPc, prevFn, prevFp,
buf, N_ARGS, &pArgs);
@@ -262,7 +278,7 @@ ACE_Stack_Trace::generate_trace (ssize_t starting_frame_offset,
size_t len = ACE_OS::strlen (this->buf_);
size_t space = SYMBUFSIZ - len - 1;
char *cursor = this->buf_ + len;
- size_t written = ACE_OS::snprintf (cursor, space, "%x %s",
+ size_t written = ACE_OS::snprintf (cursor, space, "%p %s",
prevFn, fnName);
cursor += written;
space -= written;
@@ -272,7 +288,9 @@ ACE_Stack_Trace::generate_trace (ssize_t starting_frame_offset,
{
if (arg == 0) *cursor++ = '(', --space;
written = ACE_OS::snprintf (cursor, space,
- (arg < numArgs - 1) ? "%x, " : "%x",
+ (arg < numArgs - 1) ?
+ ACE_VX_ARG_FORMAT ", " :
+ ACE_VX_ARG_FORMAT,
pArgs[arg]);
cursor += written;
space -= written;