Index: execution_monitor.ipp =================================================================== --- execution_monitor.ipp (Revision 56628) +++ execution_monitor.ipp (Revision 56629) @@ -331,7 +331,7 @@ case SI_USER: report_error( execution_exception::system_error, "signal: generated by kill() (or family); uid=%d; pid=%d", - (int)m_sig_info->si_uid, (int)m_sig_info->si_pid ); + (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_PID(*m_sig_info) ); break; case SI_QUEUE: report_error( execution_exception::system_error, @@ -360,48 +360,48 @@ case ILL_ILLOPC: report_error( execution_exception::system_fatal_error, "signal: illegal opcode; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case ILL_ILLTRP: report_error( execution_exception::system_fatal_error, "signal: illegal trap; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case ILL_PRVREG: report_error( execution_exception::system_fatal_error, "signal: privileged register; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case ILL_BADSTK: report_error( execution_exception::system_fatal_error, "signal: internal stack error; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; #endif case ILL_ILLOPN: report_error( execution_exception::system_fatal_error, "signal: illegal operand; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case ILL_ILLADR: report_error( execution_exception::system_fatal_error, "signal: illegal addressing mode; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case ILL_PRVOPC: report_error( execution_exception::system_fatal_error, "signal: privileged opcode; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case ILL_COPROC: report_error( execution_exception::system_fatal_error, "signal: co-processor error; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; default: report_error( execution_exception::system_fatal_error, "signal: SIGILL, si_code: %d (illegal instruction; address of failing instruction: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); + BOOST_TEST_SI_ADDR(*m_sig_info), m_sig_info->si_code ); break; } break; @@ -411,47 +411,47 @@ case FPE_INTDIV: report_error( execution_exception::system_error, "signal: integer divide by zero; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_INTOVF: report_error( execution_exception::system_error, "signal: integer overflow; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_FLTDIV: report_error( execution_exception::system_error, "signal: floating point divide by zero; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_FLTOVF: report_error( execution_exception::system_error, "signal: floating point overflow; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_FLTUND: report_error( execution_exception::system_error, "signal: floating point underflow; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_FLTRES: report_error( execution_exception::system_error, "signal: floating point inexact result; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_FLTINV: report_error( execution_exception::system_error, "signal: invalid floating point operation; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case FPE_FLTSUB: report_error( execution_exception::system_error, "signal: subscript out of range; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; default: report_error( execution_exception::system_error, "signal: SIGFPE, si_code: %d (errnoneous arithmetic operations; address of failing instruction: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); + BOOST_TEST_SI_ADDR(*m_sig_info), m_sig_info->si_code ); break; } break; @@ -462,18 +462,18 @@ case SEGV_MAPERR: report_error( execution_exception::system_fatal_error, "memory access violation at address: 0x%08lx: no mapping at fault address", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case SEGV_ACCERR: report_error( execution_exception::system_fatal_error, "memory access violation at address: 0x%08lx: invalid permissions", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; #endif default: report_error( execution_exception::system_fatal_error, "signal: SIGSEGV, si_code: %d (memory access violation at address: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); + BOOST_TEST_SI_ADDR(*m_sig_info), m_sig_info->si_code ); break; } break; @@ -484,23 +484,23 @@ case BUS_ADRALN: report_error( execution_exception::system_fatal_error, "memory access violation at address: 0x%08lx: invalid address alignment", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case BUS_ADRERR: report_error( execution_exception::system_fatal_error, "memory access violation at address: 0x%08lx: non-existent physical address", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; case BUS_OBJERR: report_error( execution_exception::system_fatal_error, "memory access violation at address: 0x%08lx: object specific hardware error", - m_sig_info->si_addr ); + BOOST_TEST_SI_ADDR(*m_sig_info) ); break; #endif default: report_error( execution_exception::system_fatal_error, "signal: SIGSEGV, si_code: %d (memory access violation at address: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); + BOOST_TEST_SI_ADDR(*m_sig_info), m_sig_info->si_code ); break; } break; @@ -511,38 +511,38 @@ case CLD_EXITED: report_error( execution_exception::system_error, "child has exited; pid: %d; uid: %d; exit value: %d", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info) ); break; case CLD_KILLED: report_error( execution_exception::system_error, "child was killed; pid: %d; uid: %d; exit value: %d", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info) ); break; case CLD_DUMPED: report_error( execution_exception::system_error, "child terminated abnormally; pid: %d; uid: %d; exit value: %d", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info) ); break; case CLD_TRAPPED: report_error( execution_exception::system_error, "traced child has trapped; pid: %d; uid: %d; exit value: %d", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info) ); break; case CLD_STOPPED: report_error( execution_exception::system_error, "child has stopped; pid: %d; uid: %d; exit value: %d", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info) ); break; case CLD_CONTINUED: report_error( execution_exception::system_error, "stopped child had continued; pid: %d; uid: %d; exit value: %d", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info) ); break; #endif default: report_error( execution_exception::system_error, "signal: SIGCHLD, si_code: %d (child process has terminated; pid: %d; uid: %d; exit value: %d)", - (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status, m_sig_info->si_code ); + (int)BOOST_TEST_SI_PID(*m_sig_info), (int)BOOST_TEST_SI_UID(*m_sig_info), (int)BOOST_TEST_SI_STATUS(*m_sig_info), m_sig_info->si_code ); break; } break; @@ -555,40 +555,40 @@ case POLL_IN: report_error( execution_exception::system_error, "data input available; band event %d", - (int)m_sig_info->si_band ); + (int)BOOST_TEST_SI_BAND(*m_sig_info) ); break; case POLL_OUT: report_error( execution_exception::system_error, "output buffers available; band event %d", - (int)m_sig_info->si_band ); + (int)BOOST_TEST_SI_BAND(*m_sig_info) ); break; case POLL_MSG: report_error( execution_exception::system_error, "input message available; band event %d", - (int)m_sig_info->si_band ); + (int)BOOST_TEST_SI_BAND(*m_sig_info) ); break; case POLL_ERR: report_error( execution_exception::system_error, "i/o error; band event %d", - (int)m_sig_info->si_band ); + (int)BOOST_TEST_SI_BAND(*m_sig_info) ); break; case POLL_PRI: report_error( execution_exception::system_error, "high priority input available; band event %d", - (int)m_sig_info->si_band ); + (int)BOOST_TEST_SI_BAND(*m_sig_info) ); break; #if defined(POLL_ERR) && defined(POLL_HUP) && (POLL_ERR - POLL_HUP) case POLL_HUP: report_error( execution_exception::system_error, "device disconnected; band event %d", - (int)m_sig_info->si_band ); + (int)BOOST_TEST_SI_BAND(*m_sig_info) ); break; #endif #endif default: report_error( execution_exception::system_error, "signal: SIGPOLL, si_code: %d (asynchronous I/O event occured; band event %d)", - (int)m_sig_info->si_band, m_sig_info->si_code ); + (int)BOOST_TEST_SI_BAND(*m_sig_info), m_sig_info->si_code ); break; } break; @@ -822,7 +822,7 @@ #ifdef BOOST_TEST_IGNORE_NON_ZERO_CHILD_CODE ; #else - && (int)info->si_status == 0; + && (int)BOOST_TEST_SI_STATUS(*info) == 0; #endif }