Ticket #2993: die-on-assert.patch

File die-on-assert.patch, 2.5 KB (added by Chris Johns, on Apr 14, 2017 at 6:02:48 AM)

Die on assert patch to test.

  • cpukit/libdebugger/rtems-debugger-arm.c

    diff --git a/cpukit/libdebugger/rtems-debugger-arm.c b/cpukit/libdebugger/rtems-debugger-arm.c
    index 8126c1471e..225416d1f9 100644
    a b  
    2323 * SUCH DAMAGE.
    2424 */
    2525
    26 #define TARGET_DEBUG 0
     26#define TARGET_DEBUG 1
    2727
    2828#ifdef HAVE_CONFIG_H
    2929#include "config.h"
    target_exception(CPU_Exception_frame* frame) 
    717717    "mov  r3, #0\n"                                                     \
    718718    "str  r3, [r2]\n"                 /* clear the FPU frame pointer */ \
    719719    EXCEPTION_ENTRY_FPU(frame_fpu_size)                                 \
    720     "msr  cpsr, r1\n"                        /* restore the irq mask */ \
     720    "bic  r1, r1, %[psr_i]\n"        /* clear irq mask, debug checks */ \
     721    "msr  cpsr, r1\n"       /* restore the state with irq mask clear */ \
    721722    ASM_THUMB_MODE                                                      \
    722723    : ARM_SWITCH_REG_ASM,                                               \
    723724      [o_frame] "=r" (_frame)                                           \
  • cpukit/libdebugger/rtems-debugger-target.c

    diff --git a/cpukit/libdebugger/rtems-debugger-target.c b/cpukit/libdebugger/rtems-debugger-target.c
    index cd1565463e..2f348fec67 100644
    a b  
    2323 * SUCH DAMAGE.
    2424 */
    2525
    26 #define TARGET_DEBUG 0
     26#define TARGET_DEBUG 1
    2727
    2828#ifdef HAVE_CONFIG_H
    2929#include "config.h"
    rtems_debugger_target_swbreak_remove(void) 
    273273  return r;
    274274}
    275275
     276#define DIE_ON_ASSERT 0
     277
    276278rtems_debugger_target_exc_action
    277279rtems_debugger_target_exception(CPU_Exception_frame* frame)
    278280{
    279281  volatile const uint32_t magic[3] = {
    280282    (uint32_t) frame, TARGET_FRAME_MAGIC
    281283  };
     284  const Per_CPU_Control *cpu = _Per_CPU_Get_snapshot();
    282285
    283286  (void) magic;
    284287
     288  target_printk("[} target exception: %lu %lu %d\n",
     289                cpu->thread_dispatch_disable_level,
     290                _ISR_Get_level(),
     291                rtems_interrupt_is_in_progress());
     292
    285293  if (!rtems_interrupt_is_in_progress()) {
    286294    rtems_debugger_threads*              threads = rtems_debugger->threads;
    287     Thread_Control*                      thread = _Thread_Executing;
     295    #if DIE_ON_ASSERT
     296     Thread_Control*                     thread = _Thread_Executing;
     297    #else
     298     Thread_Control*                     thread = _Per_CPU_Get_executing(cpu);
     299    #endif
    288300    rtems_id*                            excludes;
    289301    const rtems_id                       tid = thread->Object.id;
    290302    DB_UINT                              pc;