RTEMS-6
Annotated Report
libstackchk
Sun Feb 28 22:32:28 2021
40004290 <rtems_stack_checker_begin_extension>:
void rtems_stack_checker_begin_extension( Thread_Control *executing )
{
40004290: 9d e3 bf a0 save %sp, -96, %sp
#endif
cpu_self_index = _Per_CPU_Get_index( cpu_self );
stack = &Stack_check_Interrupt_stack[ cpu_self_index ];
if ( stack->area == NULL ) {
40004294: 03 10 00 6a sethi %hi(0x4001a800), %g1
40004298: 84 10 62 20 or %g1, 0x220, %g2 ! 4001aa20 <Stack_check_Interrupt_stack>
4000429c: c6 00 a0 04 ld [ %g2 + 4 ], %g3
400042a0: 80 a0 e0 00 cmp %g3, 0
400042a4: 22 80 00 04 be,a 400042b4 <rtems_stack_checker_begin_extension+0x24>
400042a8: f0 01 a0 08 ld [ %g6 + 8 ], %i0
}
#if defined(RTEMS_SMP)
_Thread_Dispatch_enable( cpu_self );
#endif
}
400042ac: 81 c7 e0 08 ret
400042b0: 81 e8 00 00 restore
stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -
400042b4: f4 01 a0 0c ld [ %g6 + 0xc ], %i2
stack->area = cpu_self->interrupt_stack_low;
400042b8: f0 20 a0 04 st %i0, [ %g2 + 4 ]
stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -
400042bc: b4 26 80 18 sub %i2, %i0, %i2
return memcmp(
400042c0: 94 10 20 10 mov 0x10, %o2
stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -
400042c4: f4 20 62 20 st %i2, [ %g1 + 0x220 ]
return memcmp(
400042c8: 90 10 00 18 mov %i0, %o0
400042cc: 13 10 00 4e sethi %hi(0x40013800), %o1
400042d0: 40 00 39 05 call 400126e4 <memcmp>
400042d4: 92 12 60 28 or %o1, 0x28, %o1 ! 40013828 <Stack_check_Sanity_pattern>
if ( !Stack_check_Is_sanity_pattern_valid( stack ) ) {
400042d8: 80 a2 20 00 cmp %o0, 0
400042dc: 12 80 00 05 bne 400042f0 <rtems_stack_checker_begin_extension+0x60> <== NEVER TAKEN
400042e0: b4 06 bf f0 add %i2, -16, %i2
memset(
400042e4: b2 10 20 a5 mov 0xa5, %i1
400042e8: 40 00 39 60 call 40012868 <memset>
400042ec: 91 ee 20 10 restore %i0, 0x10, %o0
400042f0: 13 12 53 95 sethi %hi(0x494e5400), %o1 <== NOT EXECUTED
400042f4: 90 10 20 08 mov 8, %o0 <== NOT EXECUTED
400042f8: 40 00 03 0f call 40004f34 <_Terminate> <== NOT EXECUTED
400042fc: 92 12 60 52 or %o1, 0x52, %o1 <== NOT EXECUTED
40004300: 01 00 00 00 nop <== NOT EXECUTED
40011370 <rtems_stack_checker_report_usage_with_plugin>:
*/
void rtems_stack_checker_report_usage_with_plugin(
const rtems_printer* printer
)
{
40011370: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED
uint32_t cpu_max;
uint32_t cpu_index;
rtems_printf(
40011374: 13 10 02 16 sethi %hi(0x40085800), %o1 <== NOT EXECUTED
40011378: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED
4001137c: 7f ff cb 83 call 40004188 <rtems_printf> <== NOT EXECUTED
40011380: 92 12 63 78 or %o1, 0x378, %o1 <== NOT EXECUTED
" STACK USAGE BY THREAD\n"
"ID NAME LOW HIGH CURRENT AVAIL USED\n"
);
/* iterate over all threads and dump the usage */
rtems_task_iterate(
40011384: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED
40011388: 11 10 00 44 sethi %hi(0x40011000), %o0 <== NOT EXECUTED
4001138c: 40 00 08 ba call 40013674 <rtems_task_iterate> <== NOT EXECUTED
40011390: 90 12 23 34 or %o0, 0x334, %o0 ! 40011334 <Stack_check_Dump_threads_usage><== NOT EXECUTED
Stack_check_Dump_stack_usage(
40011394: 03 10 02 6a sethi %hi(0x4009a800), %g1 <== NOT EXECUTED
{
40011398: ba 10 00 18 mov %i0, %i5 <== NOT EXECUTED
Stack_check_Dump_stack_usage(
4001139c: 84 10 61 28 or %g1, 0x128, %g2 <== NOT EXECUTED
400113a0: f0 00 61 28 ld [ %g1 + 0x128 ], %i0 <== NOT EXECUTED
400113a4: f2 00 a0 04 ld [ %g2 + 4 ], %i1 <== NOT EXECUTED
400113a8: 37 10 02 17 sethi %hi(0x40085c00), %i3 <== NOT EXECUTED
400113ac: b8 10 20 00 clr %i4 <== NOT EXECUTED
400113b0: b6 16 e0 00 mov %i3, %i3 <== NOT EXECUTED
400113b4: 7f ff ff b3 call 40011280 <Stack_check_Dump_stack_usage.isra.0> <== NOT EXECUTED
400113b8: 95 e8 20 00 restore %g0, 0, %o2 <== NOT EXECUTED
40004304 <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running,
Thread_Control *heir
)
{
40004304: 9d e3 bf 80 save %sp, -128, %sp
if ( sp < the_stack->area ) {
40004308: fa 06 20 d0 ld [ %i0 + 0xd0 ], %i5
4000430c: 80 a7 40 1e cmp %i5, %fp
40004310: 18 80 00 19 bgu 40004374 <rtems_stack_checker_switch_extension+0x70> <== NEVER TAKEN
40004314: 94 10 20 10 mov 0x10, %o2
return memcmp(
40004318: 39 10 00 4e sethi %hi(0x40013800), %i4
4000431c: 90 10 00 1d mov %i5, %o0
40004320: 40 00 38 f1 call 400126e4 <memcmp>
40004324: 92 17 20 28 or %i4, 0x28, %o1
if ( sp > (the_stack->area + the_stack->size) ) {
40004328: c2 06 20 cc ld [ %i0 + 0xcc ], %g1
4000432c: 82 07 40 01 add %i5, %g1, %g1
40004330: 80 a7 80 01 cmp %fp, %g1
40004334: 18 80 00 15 bgu 40004388 <rtems_stack_checker_switch_extension+0x84> <== NEVER TAKEN
40004338: b6 10 00 08 mov %o0, %i3
#else
sp_ok = Stack_check_Frame_pointer_in_range( running );
pattern_ok = Stack_check_Is_sanity_pattern_valid( &running->Start.Initial_stack );
if ( !sp_ok || !pattern_ok ) {
4000433c: 80 a2 20 00 cmp %o0, 0
40004340: 12 80 00 38 bne 40004420 <rtems_stack_checker_switch_extension+0x11c>
40004344: 03 10 00 6a sethi %hi(0x4001a800), %g1
}
#endif
stack = &Stack_check_Interrupt_stack[ _SMP_Get_current_processor() ];
if ( stack->area != NULL && !Stack_check_Is_sanity_pattern_valid( stack ) ) {
40004348: d0 00 62 24 ld [ %g1 + 0x224 ], %o0 ! 4001aa24 <Stack_check_Interrupt_stack+0x4>
4000434c: 80 a2 20 00 cmp %o0, 0
40004350: 02 80 00 07 be 4000436c <rtems_stack_checker_switch_extension+0x68> <== NEVER TAKEN
40004354: 94 10 20 10 mov 0x10, %o2
return memcmp(
40004358: 40 00 38 e3 call 400126e4 <memcmp>
4000435c: 92 17 20 28 or %i4, 0x28, %o1
if ( stack->area != NULL && !Stack_check_Is_sanity_pattern_valid( stack ) ) {
40004360: 80 a2 20 00 cmp %o0, 0
40004364: 12 80 00 2c bne 40004414 <rtems_stack_checker_switch_extension+0x110> <== NEVER TAKEN
40004368: 13 12 53 95 sethi %hi(0x494e5400), %o1
rtems_fatal(
RTEMS_FATAL_SOURCE_STACK_CHECKER,
rtems_build_name( 'I', 'N', 'T', 'R' )
);
}
}
4000436c: 81 c7 e0 08 ret
40004370: 81 e8 00 00 restore
return memcmp(
40004374: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED
40004378: 13 10 00 4e sethi %hi(0x40013800), %o1 <== NOT EXECUTED
4000437c: 40 00 38 da call 400126e4 <memcmp> <== NOT EXECUTED
40004380: 92 12 60 28 or %o1, 0x28, %o1 ! 40013828 <Stack_check_Sanity_pattern> <== NOT EXECUTED
40004384: b6 10 00 08 mov %o0, %i3 <== NOT EXECUTED
printk("BLOWN STACK!!!\n");
40004388: 11 10 00 4d sethi %hi(0x40013400), %o0 <== NOT EXECUTED
4000438c: 40 00 11 fc call 40008b7c <printk> <== NOT EXECUTED
40004390: 90 12 23 80 or %o0, 0x380, %o0 ! 40013780 <IMFS_node_control_sym_link+0x48><== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", (intptr_t) running);
40004394: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED
40004398: 11 10 00 4d sethi %hi(0x40013400), %o0 <== NOT EXECUTED
4000439c: 40 00 11 f8 call 40008b7c <printk> <== NOT EXECUTED
400043a0: 90 12 23 90 or %o0, 0x390, %o0 ! 40013790 <IMFS_node_control_sym_link+0x58><== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
400043a4: d2 06 20 08 ld [ %i0 + 8 ], %o1 <== NOT EXECUTED
400043a8: 11 10 00 4d sethi %hi(0x40013400), %o0 <== NOT EXECUTED
400043ac: 40 00 11 f4 call 40008b7c <printk> <== NOT EXECUTED
400043b0: 90 12 23 b0 or %o0, 0x3b0, %o0 ! 400137b0 <IMFS_node_control_sym_link+0x78><== NOT EXECUTED
printk(
400043b4: d2 06 20 0c ld [ %i0 + 0xc ], %o1 <== NOT EXECUTED
400043b8: 11 10 00 4d sethi %hi(0x40013400), %o0 <== NOT EXECUTED
400043bc: 40 00 11 f0 call 40008b7c <printk> <== NOT EXECUTED
400043c0: 90 12 23 c8 or %o0, 0x3c8, %o0 ! 400137c8 <IMFS_node_control_sym_link+0x90><== NOT EXECUTED
_Thread_Get_name(running, name, sizeof(name));
400043c4: 94 10 20 20 mov 0x20, %o2 <== NOT EXECUTED
400043c8: 92 07 bf e0 add %fp, -32, %o1 <== NOT EXECUTED
400043cc: 40 00 08 92 call 40006614 <_Thread_Get_name> <== NOT EXECUTED
400043d0: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED
printk("task name string: %s\n", name);
400043d4: 92 07 bf e0 add %fp, -32, %o1 <== NOT EXECUTED
400043d8: 11 10 00 4d sethi %hi(0x40013400), %o0 <== NOT EXECUTED
400043dc: 40 00 11 e8 call 40008b7c <printk> <== NOT EXECUTED
400043e0: 90 12 23 e0 or %o0, 0x3e0, %o0 ! 400137e0 <IMFS_node_control_sym_link+0xa8><== NOT EXECUTED
(unsigned long) stack->size,
400043e4: d2 06 20 cc ld [ %i0 + 0xcc ], %o1 <== NOT EXECUTED
(intptr_t) stack->area,
400043e8: d4 06 20 d0 ld [ %i0 + 0xd0 ], %o2 <== NOT EXECUTED
printk(
400043ec: 96 02 80 09 add %o2, %o1, %o3 <== NOT EXECUTED
400043f0: 11 10 00 4d sethi %hi(0x40013400), %o0 <== NOT EXECUTED
400043f4: 40 00 11 e2 call 40008b7c <printk> <== NOT EXECUTED
400043f8: 90 12 23 f8 or %o0, 0x3f8, %o0 ! 400137f8 <IMFS_node_control_sym_link+0xc0><== NOT EXECUTED
if (!pattern_ok) {
400043fc: 80 a6 e0 00 cmp %i3, 0 <== NOT EXECUTED
40004400: 12 80 00 26 bne 40004498 <rtems_stack_checker_switch_extension+0x194> <== NOT EXECUTED
40004404: 96 07 60 10 add %i5, 0x10, %o3 <== NOT EXECUTED
40004408: d2 06 20 0c ld [ %i0 + 0xc ], %o1 <== NOT EXECUTED
4000440c: 40 00 02 ca call 40004f34 <_Terminate>
40004410: 90 10 20 08 mov 8, %o0
40004414: 90 10 20 08 mov 8, %o0 <== NOT EXECUTED
40004418: 40 00 02 c7 call 40004f34 <_Terminate> <== NOT EXECUTED
4000441c: 92 12 60 52 or %o1, 0x52, %o1 <== NOT EXECUTED
printk("BLOWN STACK!!!\n");
40004420: 11 10 00 4d sethi %hi(0x40013400), %o0
40004424: 40 00 11 d6 call 40008b7c <printk>
40004428: 90 12 23 80 or %o0, 0x380, %o0 ! 40013780 <IMFS_node_control_sym_link+0x48>
printk("task control block: 0x%08" PRIxPTR "\n", (intptr_t) running);
4000442c: 92 10 00 18 mov %i0, %o1
40004430: 11 10 00 4d sethi %hi(0x40013400), %o0
40004434: 40 00 11 d2 call 40008b7c <printk>
40004438: 90 12 23 90 or %o0, 0x390, %o0 ! 40013790 <IMFS_node_control_sym_link+0x58>
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
4000443c: d2 06 20 08 ld [ %i0 + 8 ], %o1
40004440: 11 10 00 4d sethi %hi(0x40013400), %o0
40004444: 40 00 11 ce call 40008b7c <printk>
40004448: 90 12 23 b0 or %o0, 0x3b0, %o0 ! 400137b0 <IMFS_node_control_sym_link+0x78>
printk(
4000444c: d2 06 20 0c ld [ %i0 + 0xc ], %o1
40004450: 11 10 00 4d sethi %hi(0x40013400), %o0
40004454: 40 00 11 ca call 40008b7c <printk>
40004458: 90 12 23 c8 or %o0, 0x3c8, %o0 ! 400137c8 <IMFS_node_control_sym_link+0x90>
_Thread_Get_name(running, name, sizeof(name));
4000445c: 94 10 20 20 mov 0x20, %o2
40004460: 92 07 bf e0 add %fp, -32, %o1
40004464: 40 00 08 6c call 40006614 <_Thread_Get_name>
40004468: 90 10 00 18 mov %i0, %o0
printk("task name string: %s\n", name);
4000446c: 92 07 bf e0 add %fp, -32, %o1
40004470: 11 10 00 4d sethi %hi(0x40013400), %o0
40004474: 40 00 11 c2 call 40008b7c <printk>
40004478: 90 12 23 e0 or %o0, 0x3e0, %o0 ! 400137e0 <IMFS_node_control_sym_link+0xa8>
(unsigned long) stack->size,
4000447c: d2 06 20 cc ld [ %i0 + 0xcc ], %o1
(intptr_t) stack->area,
40004480: d4 06 20 d0 ld [ %i0 + 0xd0 ], %o2
printk(
40004484: 11 10 00 4d sethi %hi(0x40013400), %o0
40004488: 96 02 80 09 add %o2, %o1, %o3
4000448c: 40 00 11 bc call 40008b7c <printk>
40004490: 90 12 23 f8 or %o0, 0x3f8, %o0
printk(
40004494: 96 07 60 10 add %i5, 0x10, %o3
40004498: 94 10 00 1d mov %i5, %o2
4000449c: 92 10 20 10 mov 0x10, %o1
400044a0: 11 10 00 4d sethi %hi(0x40013400), %o0
400044a4: 40 00 11 b6 call 40008b7c <printk>
400044a8: 90 12 23 48 or %o0, 0x348, %o0 ! 40013748 <IMFS_node_control_sym_link+0x10>
400044ac: 10 bf ff d8 b 4000440c <rtems_stack_checker_switch_extension+0x108>
400044b0: d2 06 20 0c ld [ %i0 + 0xc ], %o1