=============================================================================== 4000a77c <_rtld_linkmap_add>: int _rtld_linkmap_add (rtems_rtl_obj* obj) { 4000a77c: 9d e3 bf a0 save %sp, -96, %sp struct link_map* l = obj->linkmap; struct link_map* prev; uint32_t obj_num = obj->obj_num; int i; if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000a780: 90 10 20 01 mov 1, %o0 struct link_map* l = obj->linkmap; 4000a784: f4 06 20 88 ld [ %i0 + 0x88 ], %i2 if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000a788: 40 00 17 9f call 40010604 4000a78c: fa 06 20 84 ld [ %i0 + 0x84 ], %i5 4000a790: 80 a2 20 00 cmp %o0, 0 4000a794: 12 80 00 23 bne 4000a820 <_rtld_linkmap_add+0xa4> 4000a798: 11 10 00 c1 sethi %hi(0x40030400), %o0 printf ("rtl: linkmap_add\n"); for (i = 0; i < obj_num; ++i) 4000a79c: 80 a7 60 00 cmp %i5, 0 4000a7a0: 02 80 00 10 be 4000a7e0 <_rtld_linkmap_add+0x64> <== NEVER TAKEN 4000a7a4: 84 5f 60 34 smul %i5, 0x34, %g2 { l[i].sec_addr[rap_text] = obj->text_base; 4000a7a8: f6 06 20 54 ld [ %i0 + 0x54 ], %i3 l[i].sec_addr[rap_const] = obj->const_base; 4000a7ac: f8 06 20 5c ld [ %i0 + 0x5c ], %i4 l[i].sec_addr[rap_data] = obj->data_base; 4000a7b0: c8 06 20 68 ld [ %i0 + 0x68 ], %g4 l[i].sec_addr[rap_bss] = obj->bss_base; 4000a7b4: c6 06 20 6c ld [ %i0 + 0x6c ], %g3 4000a7b8: 82 06 a0 0c add %i2, 0xc, %g1 4000a7bc: 84 06 80 02 add %i2, %g2, %g2 4000a7c0: 84 00 a0 0c add %g2, 0xc, %g2 l[i].sec_addr[rap_text] = obj->text_base; 4000a7c4: f6 20 40 00 st %i3, [ %g1 ] 4000a7c8: 82 00 60 34 add %g1, 0x34, %g1 l[i].sec_addr[rap_const] = obj->const_base; 4000a7cc: f8 20 7f d0 st %i4, [ %g1 + -48 ] for (i = 0; i < obj_num; ++i) 4000a7d0: 80 a0 40 02 cmp %g1, %g2 l[i].sec_addr[rap_data] = obj->data_base; 4000a7d4: c8 20 7f dc st %g4, [ %g1 + -36 ] for (i = 0; i < obj_num; ++i) 4000a7d8: 12 bf ff fb bne 4000a7c4 <_rtld_linkmap_add+0x48> 4000a7dc: c6 20 7f e0 st %g3, [ %g1 + -32 ] } if (_rtld_debug.r_map == NULL) 4000a7e0: 03 10 00 d9 sethi %hi(0x40036400), %g1 4000a7e4: 82 10 63 c0 or %g1, 0x3c0, %g1 ! 400367c0 <_rtld_debug> 4000a7e8: c4 00 60 04 ld [ %g1 + 4 ], %g2 4000a7ec: 80 a0 a0 00 cmp %g2, 0 4000a7f0: 32 80 00 05 bne,a 4000a804 <_rtld_linkmap_add+0x88> 4000a7f4: c2 00 a0 2c ld [ %g2 + 0x2c ], %g1 4000a7f8: 10 80 00 0e b 4000a830 <_rtld_linkmap_add+0xb4> 4000a7fc: f4 20 60 04 st %i2, [ %g1 + 4 ] { _rtld_debug.r_map = l; return true; } for (prev = _rtld_debug.r_map; prev->l_next != NULL; prev = prev->l_next); 4000a800: c2 00 a0 2c ld [ %g2 + 0x2c ], %g1 <== NOT EXECUTED 4000a804: 80 a0 60 00 cmp %g1, 0 4000a808: 32 bf ff fe bne,a 4000a800 <_rtld_linkmap_add+0x84> <== NEVER TAKEN 4000a80c: 84 10 00 01 mov %g1, %g2 <== NOT EXECUTED l->l_prev = prev; 4000a810: c4 26 a0 30 st %g2, [ %i2 + 0x30 ] prev->l_next = l; 4000a814: f4 20 a0 2c st %i2, [ %g2 + 0x2c ] return true; } 4000a818: 81 c7 e0 08 ret 4000a81c: 91 e8 20 01 restore %g0, 1, %o0 printf ("rtl: linkmap_add\n"); 4000a820: 40 00 38 59 call 40018984 <__wrap_puts> 4000a824: 90 12 22 58 or %o0, 0x258, %o0 for (i = 0; i < obj_num; ++i) 4000a828: 10 bf ff de b 4000a7a0 <_rtld_linkmap_add+0x24> 4000a82c: 80 a7 60 00 cmp %i5, 0 } 4000a830: 81 c7 e0 08 ret 4000a834: 91 e8 20 01 restore %g0, 1, %o0 =============================================================================== 4000a838 <_rtld_linkmap_delete>: void _rtld_linkmap_delete (rtems_rtl_obj* obj) { struct link_map* l = obj->linkmap; 4000a838: c4 02 20 88 ld [ %o0 + 0x88 ], %g2 /* * link_maps are allocated together if not 1 */ struct link_map* e = l + obj->obj_num - 1; 4000a83c: c2 02 20 84 ld [ %o0 + 0x84 ], %g1 4000a840: 82 58 60 34 smul %g1, 0x34, %g1 4000a844: 82 00 7f cc add %g1, -52, %g1 while (e && e->l_next) e = e->l_next; 4000a848: 82 80 80 01 addcc %g2, %g1, %g1 4000a84c: 02 80 00 0c be 4000a87c <_rtld_linkmap_delete+0x44> <== NEVER TAKEN 4000a850: c6 00 a0 30 ld [ %g2 + 0x30 ], %g3 4000a854: c2 00 60 2c ld [ %g1 + 0x2c ], %g1 4000a858: 80 a0 60 00 cmp %g1, 0 4000a85c: 32 bf ff ff bne,a 4000a858 <_rtld_linkmap_delete+0x20> 4000a860: c2 00 60 2c ld [ %g1 + 0x2c ], %g1 if (l->l_prev == NULL) 4000a864: 80 a0 e0 00 cmp %g3, 0 4000a868: 22 80 00 14 be,a 4000a8b8 <_rtld_linkmap_delete+0x80> 4000a86c: 03 10 00 d9 sethi %hi(0x40036400), %g1 if ((_rtld_debug.r_map = e->l_next) != NULL) e->l_next->l_prev = NULL; return; } if ((l->l_prev->l_next = e->l_next) != NULL) 4000a870: c0 20 e0 2c clr [ %g3 + 0x2c ] e->l_next->l_prev = l->l_prev; } 4000a874: 81 c3 e0 08 retl 4000a878: 01 00 00 00 nop if (l->l_prev == NULL) 4000a87c: 80 a0 e0 00 cmp %g3, 0 <== NOT EXECUTED 4000a880: 02 80 00 08 be 4000a8a0 <_rtld_linkmap_delete+0x68> <== NOT EXECUTED 4000a884: c2 00 20 2c ld [ 0x2c ], %g1 <== NOT EXECUTED if ((l->l_prev->l_next = e->l_next) != NULL) 4000a888: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000a88c: 02 bf ff fa be 4000a874 <_rtld_linkmap_delete+0x3c> <== NOT EXECUTED 4000a890: c2 20 e0 2c st %g1, [ %g3 + 0x2c ] <== NOT EXECUTED e->l_next->l_prev = l->l_prev; 4000a894: c2 00 20 2c ld [ 0x2c ], %g1 <== NOT EXECUTED 4000a898: 81 c3 e0 08 retl <== NOT EXECUTED 4000a89c: c6 20 60 30 st %g3, [ %g1 + 0x30 ] <== NOT EXECUTED if ((_rtld_debug.r_map = e->l_next) != NULL) 4000a8a0: 05 10 00 d9 sethi %hi(0x40036400), %g2 <== NOT EXECUTED 4000a8a4: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000a8a8: 02 bf ff f3 be 4000a874 <_rtld_linkmap_delete+0x3c> <== NOT EXECUTED 4000a8ac: c2 20 a3 c4 st %g1, [ %g2 + 0x3c4 ] <== NOT EXECUTED e->l_next->l_prev = NULL; 4000a8b0: 81 c3 e0 08 retl <== NOT EXECUTED 4000a8b4: c0 20 60 30 clr [ %g1 + 0x30 ] <== NOT EXECUTED if ((_rtld_debug.r_map = e->l_next) != NULL) 4000a8b8: 81 c3 e0 08 retl 4000a8bc: c0 20 63 c4 clr [ %g1 + 0x3c4 ] =============================================================================== 40009e2c : int dlclose (void* handle) { 40009e2c: 9d e3 bf 98 save %sp, -104, %sp rtems_rtl_obj* obj; int r; if (!rtems_rtl_lock ()) 40009e30: 40 00 09 81 call 4000c434 40009e34: 01 00 00 00 nop 40009e38: 80 a2 20 00 cmp %o0, 0 40009e3c: 02 80 00 17 be 40009e98 <== NEVER TAKEN 40009e40: 01 00 00 00 nop return -1; obj = rtems_rtl_check_handle (handle); 40009e44: 40 00 0a 86 call 4000c85c 40009e48: 90 10 00 18 mov %i0, %o0 if (!obj) 40009e4c: 80 a2 20 00 cmp %o0, 0 40009e50: 02 80 00 14 be 40009ea0 <== NEVER TAKEN 40009e54: 82 10 20 02 mov 2, %g1 40009e58: d0 27 bf fc st %o0, [ %fp + -4 ] { rtems_rtl_unlock (); return -1; } _rtld_debug.r_state = RT_DELETE; 40009e5c: 3b 10 00 d9 sethi %hi(0x40036400), %i5 40009e60: ba 17 63 c0 or %i5, 0x3c0, %i5 ! 400367c0 <_rtld_debug> _rtld_debug_state (); 40009e64: 40 00 02 44 call 4000a774 <_rtld_debug_state> 40009e68: c2 27 60 08 st %g1, [ %i5 + 8 ] r = rtems_rtl_unload_object (obj) ? 0 : -1; 40009e6c: 40 00 0b 21 call 4000caf0 40009e70: d0 07 bf fc ld [ %fp + -4 ], %o0 _rtld_debug.r_state = RT_CONSISTENT; 40009e74: c0 27 60 08 clr [ %i5 + 8 ] r = rtems_rtl_unload_object (obj) ? 0 : -1; 40009e78: b0 1a 20 01 xor %o0, 1, %i0 40009e7c: b0 0e 20 ff and %i0, 0xff, %i0 _rtld_debug_state (); 40009e80: 40 00 02 3d call 4000a774 <_rtld_debug_state> 40009e84: b0 20 00 18 neg %i0 rtems_rtl_unlock (); 40009e88: 40 00 0a 70 call 4000c848 40009e8c: 01 00 00 00 nop return r; 40009e90: 81 c7 e0 08 ret 40009e94: 81 e8 00 00 restore } 40009e98: 81 c7 e0 08 ret <== NOT EXECUTED 40009e9c: 91 e8 3f ff restore %g0, -1, %o0 <== NOT EXECUTED rtems_rtl_unlock (); 40009ea0: 40 00 0a 6a call 4000c848 <== NOT EXECUTED 40009ea4: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED return -1; 40009ea8: 81 c7 e0 08 ret <== NOT EXECUTED 40009eac: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40009f70 : int dlinfo (void* handle, int request, void* p) { 40009f70: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_obj* obj; int rc = -1; if (!rtems_rtl_lock () || !p) 40009f74: 40 00 09 30 call 4000c434 40009f78: 01 00 00 00 nop 40009f7c: 80 a6 a0 00 cmp %i2, 0 40009f80: 02 80 00 1d be 40009ff4 <== NEVER TAKEN 40009f84: 80 a2 20 00 cmp %o0, 0 40009f88: 02 80 00 1b be 40009ff4 <== NEVER TAKEN 40009f8c: 82 06 20 03 add %i0, 3, %g1 if ((handle == RTLD_DEFAULT) || (handle == RTLD_SELF)) 40009f90: 80 a0 60 01 cmp %g1, 1 40009f94: 08 80 00 14 bleu 40009fe4 <== NEVER TAKEN 40009f98: 01 00 00 00 nop obj = rtems_rtl_check_handle (handle); 40009f9c: 40 00 0a 30 call 4000c85c 40009fa0: 90 10 00 18 mov %i0, %o0 int rc = -1; 40009fa4: b0 10 3f ff mov -1, %i0 return -1; obj = dl_get_obj_from_handle (handle); if (obj) 40009fa8: 80 a2 20 00 cmp %o0, 0 40009fac: 02 80 00 04 be 40009fbc <== NEVER TAKEN 40009fb0: 80 a6 60 0a cmp %i1, 0xa { switch (request) 40009fb4: 02 80 00 06 be 40009fcc <== ALWAYS TAKEN 40009fb8: 01 00 00 00 nop default: break; } } rtems_rtl_unlock (); 40009fbc: 40 00 0a 23 call 4000c848 <== NOT EXECUTED 40009fc0: 01 00 00 00 nop <== NOT EXECUTED return rc; 40009fc4: 81 c7 e0 08 ret <== NOT EXECUTED 40009fc8: 81 e8 00 00 restore <== NOT EXECUTED *((int*) p) = rtems_rtl_obj_unresolved (obj) ? 1 : 0; 40009fcc: 40 00 0f 20 call 4000dc4c 40009fd0: b0 10 20 00 clr %i0 rtems_rtl_unlock (); 40009fd4: 40 00 0a 1d call 4000c848 40009fd8: d0 26 80 00 st %o0, [ %i2 ] return rc; 40009fdc: 81 c7 e0 08 ret 40009fe0: 81 e8 00 00 restore obj = rtems_rtl_baseimage (); 40009fe4: 40 00 0b 1d call 4000cc58 <== NOT EXECUTED 40009fe8: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED if (obj) 40009fec: 10 bf ff f0 b 40009fac <== NOT EXECUTED 40009ff0: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED } 40009ff4: 81 c7 e0 08 ret <== NOT EXECUTED 40009ff8: 91 e8 3f ff restore %g0, -1, %o0 <== NOT EXECUTED =============================================================================== 40009da8 : return obj; } void* dlopen (const char* name, int mode) { 40009da8: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_obj* obj = NULL; if (!rtems_rtl_lock ()) 40009dac: 40 00 09 a2 call 4000c434 40009db0: 01 00 00 00 nop 40009db4: 80 a2 20 00 cmp %o0, 0 40009db8: 02 80 00 1b be 40009e24 <== NEVER TAKEN 40009dbc: 82 10 20 01 mov 1, %g1 return NULL; _rtld_debug.r_state = RT_ADD; 40009dc0: 3b 10 00 d9 sethi %hi(0x40036400), %i5 40009dc4: ba 17 63 c0 or %i5, 0x3c0, %i5 ! 400367c0 <_rtld_debug> _rtld_debug_state (); 40009dc8: 40 00 02 6b call 4000a774 <_rtld_debug_state> 40009dcc: c2 27 60 08 st %g1, [ %i5 + 8 ] if (name) 40009dd0: 80 a6 20 00 cmp %i0, 0 40009dd4: 02 80 00 0b be 40009e00 <== NEVER TAKEN 40009dd8: 92 10 00 19 mov %i1, %o1 obj = rtems_rtl_load_object (name, mode); 40009ddc: 40 00 0a f6 call 4000c9b4 40009de0: 90 10 00 18 mov %i0, %o0 else obj = rtems_rtl_baseimage (); _rtld_debug.r_state = RT_CONSISTENT; 40009de4: c0 27 60 08 clr [ %i5 + 8 ] _rtld_debug_state(); 40009de8: 40 00 02 63 call 4000a774 <_rtld_debug_state> 40009dec: b0 10 00 08 mov %o0, %i0 rtems_rtl_unlock (); 40009df0: 40 00 0a 96 call 4000c848 40009df4: 01 00 00 00 nop return obj; 40009df8: 81 c7 e0 08 ret 40009dfc: 81 e8 00 00 restore obj = rtems_rtl_baseimage (); 40009e00: 40 00 0b 96 call 4000cc58 <== NOT EXECUTED 40009e04: 01 00 00 00 nop <== NOT EXECUTED _rtld_debug.r_state = RT_CONSISTENT; 40009e08: c0 27 60 08 clr [ %i5 + 8 ] <== NOT EXECUTED _rtld_debug_state(); 40009e0c: 40 00 02 5a call 4000a774 <_rtld_debug_state> <== NOT EXECUTED 40009e10: b0 10 00 08 mov %o0, %i0 <== NOT EXECUTED rtems_rtl_unlock (); 40009e14: 40 00 0a 8d call 4000c848 <== NOT EXECUTED 40009e18: 01 00 00 00 nop <== NOT EXECUTED return obj; 40009e1c: 81 c7 e0 08 ret <== NOT EXECUTED 40009e20: 81 e8 00 00 restore <== NOT EXECUTED } 40009e24: 81 c7 e0 08 ret <== NOT EXECUTED 40009e28: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED =============================================================================== 40009eb0 : void* dlsym (void* handle, const char *symbol) { 40009eb0: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_obj* obj; rtems_rtl_obj_sym* sym = NULL; void* symval = NULL; if (!rtems_rtl_lock ()) 40009eb4: 40 00 09 60 call 4000c434 40009eb8: 01 00 00 00 nop 40009ebc: 80 a2 20 00 cmp %o0, 0 40009ec0: 02 80 00 22 be 40009f48 <== NEVER TAKEN 40009ec4: 80 a6 3f fe cmp %i0, -2 return NULL; /* * If the handle is "default" search the global symbol table. */ if (handle == RTLD_DEFAULT) 40009ec8: 02 80 00 1c be 40009f38 40009ecc: 82 06 20 03 add %i0, 3, %g1 if ((handle == RTLD_DEFAULT) || (handle == RTLD_SELF)) 40009ed0: 80 a0 60 01 cmp %g1, 1 40009ed4: 08 80 00 10 bleu 40009f14 <== NEVER TAKEN 40009ed8: 01 00 00 00 nop obj = rtems_rtl_check_handle (handle); 40009edc: 40 00 0a 60 call 4000c85c 40009ee0: 90 10 00 18 mov %i0, %o0 sym = rtems_rtl_symbol_global_find (symbol); } else { obj = dl_get_obj_from_handle (handle); if (obj) 40009ee4: 80 a2 20 00 cmp %o0, 0 40009ee8: 02 80 00 10 be 40009f28 <== NEVER TAKEN 40009eec: 01 00 00 00 nop sym = rtems_rtl_symbol_obj_find (obj, symbol); 40009ef0: 40 00 19 5a call 40010458 40009ef4: 92 10 00 19 mov %i1, %o1 } if (sym) 40009ef8: 80 a2 20 00 cmp %o0, 0 40009efc: 02 80 00 0b be 40009f28 <== NEVER TAKEN 40009f00: 01 00 00 00 nop symval = sym->value; rtems_rtl_unlock (); 40009f04: 40 00 0a 51 call 4000c848 40009f08: f0 02 20 0c ld [ %o0 + 0xc ], %i0 return symval; 40009f0c: 81 c7 e0 08 ret 40009f10: 81 e8 00 00 restore obj = rtems_rtl_baseimage (); 40009f14: 40 00 0b 51 call 4000cc58 <== NOT EXECUTED 40009f18: 01 00 00 00 nop <== NOT EXECUTED if (obj) 40009f1c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40009f20: 12 bf ff f4 bne 40009ef0 <== NOT EXECUTED 40009f24: 01 00 00 00 nop <== NOT EXECUTED rtems_rtl_unlock (); 40009f28: 40 00 0a 48 call 4000c848 <== NOT EXECUTED 40009f2c: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED return symval; 40009f30: 81 c7 e0 08 ret <== NOT EXECUTED 40009f34: 81 e8 00 00 restore <== NOT EXECUTED sym = rtems_rtl_symbol_global_find (symbol); 40009f38: 40 00 18 6f call 400100f4 40009f3c: 90 10 00 19 mov %i1, %o0 40009f40: 10 bf ff ef b 40009efc 40009f44: 80 a2 20 00 cmp %o0, 0 } 40009f48: 81 c7 e0 08 ret <== NOT EXECUTED 40009f4c: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED =============================================================================== 40009ffc : /* else... */ return fastlz2_compress(input, length, output); } int fastlz_decompress(const void* input, int length, void* output, int maxout) { 40009ffc: 9d e3 bf a0 save %sp, -96, %sp /* magic identifier for compression level */ int level = ((*(const flzuint8*)input) >> 5) + 1; 4000a000: c4 0e 00 00 ldub [ %i0 ], %g2 4000a004: 83 30 a0 05 srl %g2, 5, %g1 4000a008: 82 00 60 01 inc %g1 if(level == 1) 4000a00c: 80 a0 60 01 cmp %g1, 1 4000a010: 02 80 00 6f be 4000a1cc <== ALWAYS TAKEN 4000a014: 80 a0 60 02 cmp %g1, 2 return fastlz1_decompress(input, length, output, maxout); if(level == 2) 4000a018: 02 80 00 04 be 4000a028 <== NOT EXECUTED 4000a01c: b2 06 00 19 add %i0, %i1, %i1 <== NOT EXECUTED } #endif #ifdef FASTLZ_SAFE if (FASTLZ_UNEXPECT_CONDITIONAL(op + len + 3 > op_limit)) return 0; 4000a020: 81 c7 e0 08 ret <== NOT EXECUTED 4000a024: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED flzuint32 ofs = (ctrl & 31) << 8; 4000a028: 39 00 00 07 sethi %hi(0x1c00), %i4 <== NOT EXECUTED ref = op - ofs - MAX_DISTANCE; 4000a02c: 1f 3f ff f8 sethi %hi(0xffffe000), %o7 <== NOT EXECUTED flzuint8* op_limit = op + maxout; 4000a030: b6 06 80 1b add %i2, %i3, %i3 <== NOT EXECUTED flzuint32 ctrl = (*ip++) & 31; 4000a034: b0 06 20 01 inc %i0 <== NOT EXECUTED 4000a038: 84 08 a0 1f and %g2, 0x1f, %g2 <== NOT EXECUTED 4000a03c: 82 10 00 1a mov %i2, %g1 <== NOT EXECUTED flzuint32 ofs = (ctrl & 31) << 8; 4000a040: b8 17 23 00 or %i4, 0x300, %i4 <== NOT EXECUTED ref = op - ofs - MAX_DISTANCE; 4000a044: 9e 13 e0 01 or %o7, 1, %o7 <== NOT EXECUTED if(ctrl >= 32) 4000a048: 80 a0 a0 1f cmp %g2, 0x1f <== NOT EXECUTED 4000a04c: 08 80 00 44 bleu 4000a15c <== NOT EXECUTED 4000a050: 87 30 a0 05 srl %g2, 5, %g3 <== NOT EXECUTED len--; 4000a054: 86 00 ff ff add %g3, -1, %g3 <== NOT EXECUTED if (len == 7-1) 4000a058: 80 a0 e0 06 cmp %g3, 6 <== NOT EXECUTED 4000a05c: 22 80 00 35 be,a 4000a130 <== NOT EXECUTED 4000a060: c8 0e 00 00 ldub [ %i0 ], %g4 <== NOT EXECUTED ref -= code; 4000a064: c8 0e 00 00 ldub [ %i0 ], %g4 <== NOT EXECUTED flzuint32 ofs = (ctrl & 31) << 8; 4000a068: bb 28 a0 08 sll %g2, 8, %i5 <== NOT EXECUTED if(FASTLZ_EXPECT_CONDITIONAL(ofs==(31 << 8))) 4000a06c: 80 a1 20 ff cmp %g4, 0xff <== NOT EXECUTED flzuint32 ofs = (ctrl & 31) << 8; 4000a070: ba 0f 40 1c and %i5, %i4, %i5 <== NOT EXECUTED code = *ip++; 4000a074: 9a 06 20 01 add %i0, 1, %o5 <== NOT EXECUTED ref -= code; 4000a078: 88 01 00 1d add %g4, %i5, %g4 <== NOT EXECUTED if(FASTLZ_EXPECT_CONDITIONAL(ofs==(31 << 8))) 4000a07c: 12 80 00 05 bne 4000a090 <== NOT EXECUTED 4000a080: 88 20 40 04 sub %g1, %g4, %g4 <== NOT EXECUTED 4000a084: 80 a7 40 1c cmp %i5, %i4 <== NOT EXECUTED 4000a088: 22 80 00 ca be,a 4000a3b0 <== NOT EXECUTED 4000a08c: c8 0e 20 02 ldub [ %i0 + 2 ], %g4 <== NOT EXECUTED if (FASTLZ_UNEXPECT_CONDITIONAL(op + len + 3 > op_limit)) 4000a090: ba 00 e0 03 add %g3, 3, %i5 <== NOT EXECUTED 4000a094: ba 00 40 1d add %g1, %i5, %i5 <== NOT EXECUTED 4000a098: 80 a6 c0 1d cmp %i3, %i5 <== NOT EXECUTED 4000a09c: 0a bf ff e1 bcs 4000a020 <== NOT EXECUTED 4000a0a0: ba 01 3f ff add %g4, -1, %i5 <== NOT EXECUTED if (FASTLZ_UNEXPECT_CONDITIONAL(ref-1 < (flzuint8 *)output)) 4000a0a4: 80 a6 80 1d cmp %i2, %i5 <== NOT EXECUTED 4000a0a8: 18 bf ff de bgu 4000a020 <== NOT EXECUTED 4000a0ac: 80 a6 40 0d cmp %i1, %o5 <== NOT EXECUTED return 0; #endif if(FASTLZ_EXPECT_CONDITIONAL(ip < ip_limit)) 4000a0b0: 08 80 00 c7 bleu 4000a3cc <== NOT EXECUTED 4000a0b4: b0 10 00 0d mov %o5, %i0 <== NOT EXECUTED ctrl = *ip++; 4000a0b8: c4 0b 40 00 ldub [ %o5 ], %g2 <== NOT EXECUTED 4000a0bc: b0 03 60 01 add %o5, 1, %i0 <== NOT EXECUTED 4000a0c0: 98 10 20 01 mov 1, %o4 <== NOT EXECUTED else loop = 0; if(ref == op) 4000a0c4: 80 a0 40 04 cmp %g1, %g4 <== NOT EXECUTED 4000a0c8: 02 80 00 9c be 4000a338 <== NOT EXECUTED 4000a0cc: ba 00 60 03 add %g1, 3, %i5 <== NOT EXECUTED const flzuint16* p; flzuint16* q; #endif /* copy from reference */ ref--; *op++ = *ref++; 4000a0d0: da 09 3f ff ldub [ %g4 + -1 ], %o5 <== NOT EXECUTED 4000a0d4: da 28 40 00 stb %o5, [ %g1 ] <== NOT EXECUTED *op++ = *ref++; *op++ = *ref++; 4000a0d8: 9a 01 20 02 add %g4, 2, %o5 <== NOT EXECUTED *op++ = *ref++; 4000a0dc: d6 09 00 00 ldub [ %g4 ], %o3 <== NOT EXECUTED 4000a0e0: d6 28 60 01 stb %o3, [ %g1 + 1 ] <== NOT EXECUTED *q++ = *p++; } for(; len; --len) *q++ = *p++; #else for(; len; --len) 4000a0e4: 80 a0 e0 00 cmp %g3, 0 <== NOT EXECUTED *op++ = *ref++; 4000a0e8: c8 09 20 01 ldub [ %g4 + 1 ], %g4 <== NOT EXECUTED for(; len; --len) 4000a0ec: 02 80 00 ad be 4000a3a0 <== NOT EXECUTED 4000a0f0: c8 28 60 02 stb %g4, [ %g1 + 2 ] <== NOT EXECUTED 4000a0f4: 82 10 20 00 clr %g1 <== NOT EXECUTED *op++ = *ref++; 4000a0f8: c8 0b 40 01 ldub [ %o5 + %g1 ], %g4 <== NOT EXECUTED 4000a0fc: c8 2f 40 01 stb %g4, [ %i5 + %g1 ] <== NOT EXECUTED 4000a100: 82 00 60 01 inc %g1 <== NOT EXECUTED for(; len; --len) 4000a104: 80 a0 c0 01 cmp %g3, %g1 <== NOT EXECUTED 4000a108: 32 bf ff fd bne,a 4000a0fc <== NOT EXECUTED 4000a10c: c8 0b 40 01 ldub [ %o5 + %g1 ], %g4 <== NOT EXECUTED 4000a110: 82 07 40 03 add %i5, %g3, %g1 <== NOT EXECUTED loop = FASTLZ_EXPECT_CONDITIONAL(ip < ip_limit); if(loop) ctrl = *ip++; } } while(FASTLZ_EXPECT_CONDITIONAL(loop)); 4000a114: 80 a3 20 00 cmp %o4, 0 <== NOT EXECUTED 4000a118: 12 bf ff cd bne 4000a04c <== NOT EXECUTED 4000a11c: 80 a0 a0 1f cmp %g2, 0x1f <== NOT EXECUTED return op - (flzuint8*)output; 4000a120: b0 20 40 1a sub %g1, %i2, %i0 <== NOT EXECUTED } 4000a124: 81 c7 e0 08 ret 4000a128: 81 e8 00 00 restore len += code; 4000a12c: c8 0e 00 00 ldub [ %i0 ], %g4 <== NOT EXECUTED 4000a130: 86 00 c0 04 add %g3, %g4, %g3 <== NOT EXECUTED } while (code==255); 4000a134: 80 a1 20 ff cmp %g4, 0xff <== NOT EXECUTED 4000a138: 12 bf ff cb bne 4000a064 <== NOT EXECUTED 4000a13c: b0 06 20 01 inc %i0 <== NOT EXECUTED len += code; 4000a140: c8 0e 00 00 ldub [ %i0 ], %g4 <== NOT EXECUTED 4000a144: 86 00 c0 04 add %g3, %g4, %g3 <== NOT EXECUTED } while (code==255); 4000a148: 80 a1 20 ff cmp %g4, 0xff <== NOT EXECUTED 4000a14c: 02 bf ff f8 be 4000a12c <== NOT EXECUTED 4000a150: b0 06 20 01 inc %i0 <== NOT EXECUTED ref -= code; 4000a154: 10 bf ff c5 b 4000a068 <== NOT EXECUTED 4000a158: c8 0e 00 00 ldub [ %i0 ], %g4 <== NOT EXECUTED ctrl++; 4000a15c: ba 00 a0 01 add %g2, 1, %i5 <== NOT EXECUTED if (FASTLZ_UNEXPECT_CONDITIONAL(op + ctrl > op_limit)) 4000a160: 86 00 40 1d add %g1, %i5, %g3 <== NOT EXECUTED 4000a164: 80 a6 c0 03 cmp %i3, %g3 <== NOT EXECUTED 4000a168: 0a bf ff ae bcs 4000a020 <== NOT EXECUTED 4000a16c: 86 06 00 1d add %i0, %i5, %g3 <== NOT EXECUTED if (FASTLZ_UNEXPECT_CONDITIONAL(ip + ctrl > ip_limit)) 4000a170: 80 a6 40 03 cmp %i1, %g3 <== NOT EXECUTED 4000a174: 0a bf ff ab bcs 4000a020 <== NOT EXECUTED 4000a178: 9a 06 20 01 add %i0, 1, %o5 <== NOT EXECUTED *op++ = *ip++; 4000a17c: c6 0e 00 00 ldub [ %i0 ], %g3 <== NOT EXECUTED 4000a180: c6 28 40 00 stb %g3, [ %g1 ] <== NOT EXECUTED for(--ctrl; ctrl; ctrl--) 4000a184: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4000a188: 02 80 00 95 be 4000a3dc <== NOT EXECUTED 4000a18c: 98 00 60 01 add %g1, 1, %o4 <== NOT EXECUTED 4000a190: 88 10 20 01 mov 1, %g4 <== NOT EXECUTED *op++ = *ip++; 4000a194: c6 0e 00 04 ldub [ %i0 + %g4 ], %g3 <== NOT EXECUTED 4000a198: c6 28 40 04 stb %g3, [ %g1 + %g4 ] <== NOT EXECUTED 4000a19c: 88 01 20 01 inc %g4 <== NOT EXECUTED for(--ctrl; ctrl; ctrl--) 4000a1a0: 80 a7 40 04 cmp %i5, %g4 <== NOT EXECUTED 4000a1a4: 32 bf ff fd bne,a 4000a198 <== NOT EXECUTED 4000a1a8: c6 0e 00 04 ldub [ %i0 + %g4 ], %g3 <== NOT EXECUTED 4000a1ac: 9a 03 40 02 add %o5, %g2, %o5 <== NOT EXECUTED 4000a1b0: 82 03 00 02 add %o4, %g2, %g1 <== NOT EXECUTED if(loop) 4000a1b4: 80 a6 40 0d cmp %i1, %o5 <== NOT EXECUTED 4000a1b8: 28 bf ff db bleu,a 4000a124 <== NOT EXECUTED 4000a1bc: b0 20 40 1a sub %g1, %i2, %i0 <== NOT EXECUTED ctrl = *ip++; 4000a1c0: b0 03 60 01 add %o5, 1, %i0 <== NOT EXECUTED 4000a1c4: 10 bf ff a1 b 4000a048 <== NOT EXECUTED 4000a1c8: c4 0b 40 00 ldub [ %o5 ], %g2 <== NOT EXECUTED const flzuint8* ip_limit = ip + length; 4000a1cc: b2 06 00 19 add %i0, %i1, %i1 flzuint32 ofs = (ctrl & 31) << 8; 4000a1d0: 1b 00 00 07 sethi %hi(0x1c00), %o5 flzuint8* op_limit = op + maxout; 4000a1d4: b6 06 80 1b add %i2, %i3, %i3 flzuint32 ctrl = (*ip++) & 31; 4000a1d8: b0 06 20 01 inc %i0 4000a1dc: 84 08 a0 1f and %g2, 0x1f, %g2 4000a1e0: 86 10 00 1a mov %i2, %g3 flzuint32 ofs = (ctrl & 31) << 8; 4000a1e4: 9a 13 63 00 or %o5, 0x300, %o5 if(ctrl >= 32) 4000a1e8: 80 a0 a0 1f cmp %g2, 0x1f 4000a1ec: 08 80 00 37 bleu 4000a2c8 4000a1f0: bb 30 a0 05 srl %g2, 5, %i5 4000a1f4: 9e 06 20 01 add %i0, 1, %o7 len--; 4000a1f8: ba 07 7f ff add %i5, -1, %i5 if (len == 7-1) 4000a1fc: 80 a7 60 06 cmp %i5, 6 4000a200: 12 80 00 07 bne 4000a21c 4000a204: f8 0e 00 00 ldub [ %i0 ], %i4 4000a208: 82 06 20 02 add %i0, 2, %g1 len += *ip++; 4000a20c: ba 07 20 06 add %i4, 6, %i5 4000a210: f8 0e 20 01 ldub [ %i0 + 1 ], %i4 4000a214: b0 10 00 0f mov %o7, %i0 4000a218: 9e 10 00 01 mov %g1, %o7 flzuint32 ofs = (ctrl & 31) << 8; 4000a21c: 89 28 a0 08 sll %g2, 8, %g4 if (FASTLZ_UNEXPECT_CONDITIONAL(op + len + 3 > op_limit)) 4000a220: 82 07 60 03 add %i5, 3, %g1 flzuint32 ofs = (ctrl & 31) << 8; 4000a224: 88 09 00 0d and %g4, %o5, %g4 if (FASTLZ_UNEXPECT_CONDITIONAL(op + len + 3 > op_limit)) 4000a228: 82 00 c0 01 add %g3, %g1, %g1 ref -= *ip++; 4000a22c: 88 01 00 1c add %g4, %i4, %g4 if (FASTLZ_UNEXPECT_CONDITIONAL(op + len + 3 > op_limit)) 4000a230: 80 a6 c0 01 cmp %i3, %g1 4000a234: 0a bf ff 7b bcs 4000a020 <== NEVER TAKEN 4000a238: 88 20 c0 04 sub %g3, %g4, %g4 if (FASTLZ_UNEXPECT_CONDITIONAL(ref-1 < (flzuint8 *)output)) 4000a23c: 82 01 3f ff add %g4, -1, %g1 4000a240: 80 a6 80 01 cmp %i2, %g1 4000a244: 18 bf ff 77 bgu 4000a020 <== NEVER TAKEN 4000a248: 80 a6 40 0f cmp %i1, %o7 if(FASTLZ_EXPECT_CONDITIONAL(ip < ip_limit)) 4000a24c: 28 80 00 62 bleu,a 4000a3d4 <== NEVER TAKEN 4000a250: b0 10 00 0f mov %o7, %i0 <== NOT EXECUTED ctrl = *ip++; 4000a254: c4 0e 20 01 ldub [ %i0 + 1 ], %g2 4000a258: 98 10 20 01 mov 1, %o4 4000a25c: b0 06 20 02 add %i0, 2, %i0 if(ref == op) 4000a260: 80 a0 c0 04 cmp %g3, %g4 4000a264: 02 80 00 42 be 4000a36c 4000a268: b8 00 e0 03 add %g3, 3, %i4 *op++ = *ref++; 4000a26c: c2 09 3f ff ldub [ %g4 + -1 ], %g1 4000a270: c2 28 c0 00 stb %g1, [ %g3 ] *op++ = *ref++; 4000a274: 9e 01 20 02 add %g4, 2, %o7 *op++ = *ref++; 4000a278: c2 09 00 00 ldub [ %g4 ], %g1 4000a27c: c2 28 e0 01 stb %g1, [ %g3 + 1 ] for(; len; --len) 4000a280: 80 a7 60 00 cmp %i5, 0 *op++ = *ref++; 4000a284: c2 09 20 01 ldub [ %g4 + 1 ], %g1 for(; len; --len) 4000a288: 02 80 00 48 be 4000a3a8 4000a28c: c2 28 e0 02 stb %g1, [ %g3 + 2 ] 4000a290: 82 10 20 00 clr %g1 *op++ = *ref++; 4000a294: c6 0b c0 01 ldub [ %o7 + %g1 ], %g3 4000a298: c6 2f 00 01 stb %g3, [ %i4 + %g1 ] 4000a29c: 82 00 60 01 inc %g1 for(; len; --len) 4000a2a0: 80 a7 40 01 cmp %i5, %g1 4000a2a4: 32 bf ff fd bne,a 4000a298 4000a2a8: c6 0b c0 01 ldub [ %o7 + %g1 ], %g3 4000a2ac: 86 07 00 1d add %i4, %i5, %g3 while(FASTLZ_EXPECT_CONDITIONAL(loop)); 4000a2b0: 80 a3 20 00 cmp %o4, 0 4000a2b4: 12 bf ff ce bne 4000a1ec <== ALWAYS TAKEN 4000a2b8: 80 a0 a0 1f cmp %g2, 0x1f return op - (flzuint8*)output; 4000a2bc: b0 20 c0 1a sub %g3, %i2, %i0 <== NOT EXECUTED 4000a2c0: 81 c7 e0 08 ret <== NOT EXECUTED 4000a2c4: 81 e8 00 00 restore <== NOT EXECUTED ctrl++; 4000a2c8: ba 00 a0 01 add %g2, 1, %i5 if (FASTLZ_UNEXPECT_CONDITIONAL(op + ctrl > op_limit)) 4000a2cc: 82 00 c0 1d add %g3, %i5, %g1 4000a2d0: 80 a6 c0 01 cmp %i3, %g1 4000a2d4: 0a bf ff 53 bcs 4000a020 <== NEVER TAKEN 4000a2d8: 82 06 00 1d add %i0, %i5, %g1 if (FASTLZ_UNEXPECT_CONDITIONAL(ip + ctrl > ip_limit)) 4000a2dc: 80 a6 40 01 cmp %i1, %g1 4000a2e0: 0a bf ff 50 bcs 4000a020 <== NEVER TAKEN 4000a2e4: b8 06 20 01 add %i0, 1, %i4 *op++ = *ip++; 4000a2e8: c2 0e 00 00 ldub [ %i0 ], %g1 4000a2ec: c2 28 c0 00 stb %g1, [ %g3 ] for(--ctrl; ctrl; ctrl--) 4000a2f0: 80 a0 a0 00 cmp %g2, 0 4000a2f4: 02 80 00 3c be 4000a3e4 4000a2f8: 9e 00 e0 01 add %g3, 1, %o7 4000a2fc: 88 10 20 01 mov 1, %g4 *op++ = *ip++; 4000a300: c2 0e 00 04 ldub [ %i0 + %g4 ], %g1 4000a304: c2 28 c0 04 stb %g1, [ %g3 + %g4 ] 4000a308: 88 01 20 01 inc %g4 for(--ctrl; ctrl; ctrl--) 4000a30c: 80 a7 40 04 cmp %i5, %g4 4000a310: 32 bf ff fd bne,a 4000a304 4000a314: c2 0e 00 04 ldub [ %i0 + %g4 ], %g1 4000a318: b8 07 00 02 add %i4, %g2, %i4 4000a31c: 86 03 c0 02 add %o7, %g2, %g3 if(loop) 4000a320: 80 a6 40 1c cmp %i1, %i4 4000a324: 28 bf ff 80 bleu,a 4000a124 4000a328: b0 20 c0 1a sub %g3, %i2, %i0 ctrl = *ip++; 4000a32c: b0 07 20 01 add %i4, 1, %i0 4000a330: 10 bf ff ae b 4000a1e8 4000a334: c4 0f 00 00 ldub [ %i4 ], %g2 flzuint8 b = ref[-1]; 4000a338: c8 08 7f ff ldub [ %g1 + -1 ], %g4 <== NOT EXECUTED *op++ = b; 4000a33c: c8 28 40 00 stb %g4, [ %g1 ] <== NOT EXECUTED for(; len; --len) 4000a340: 80 a0 e0 00 cmp %g3, 0 <== NOT EXECUTED *op++ = b; 4000a344: c8 28 60 01 stb %g4, [ %g1 + 1 ] <== NOT EXECUTED for(; len; --len) 4000a348: 02 80 00 16 be 4000a3a0 <== NOT EXECUTED 4000a34c: c8 28 60 02 stb %g4, [ %g1 + 2 ] <== NOT EXECUTED 4000a350: 82 07 40 03 add %i5, %g3, %g1 <== NOT EXECUTED *op++ = b; 4000a354: ba 07 60 01 inc %i5 <== NOT EXECUTED for(; len; --len) 4000a358: 80 a7 40 01 cmp %i5, %g1 <== NOT EXECUTED 4000a35c: 12 bf ff fe bne 4000a354 <== NOT EXECUTED 4000a360: c8 2f 7f ff stb %g4, [ %i5 + -1 ] <== NOT EXECUTED while(FASTLZ_EXPECT_CONDITIONAL(loop)); 4000a364: 10 bf ff 6d b 4000a118 <== NOT EXECUTED 4000a368: 80 a3 20 00 cmp %o4, 0 <== NOT EXECUTED flzuint8 b = ref[-1]; 4000a36c: c2 08 ff ff ldub [ %g3 + -1 ], %g1 *op++ = b; 4000a370: c2 28 c0 00 stb %g1, [ %g3 ] for(; len; --len) 4000a374: 80 a7 60 00 cmp %i5, 0 *op++ = b; 4000a378: c2 28 e0 01 stb %g1, [ %g3 + 1 ] for(; len; --len) 4000a37c: 02 80 00 0b be 4000a3a8 4000a380: c2 28 e0 02 stb %g1, [ %g3 + 2 ] 4000a384: 86 07 00 1d add %i4, %i5, %g3 *op++ = b; 4000a388: b8 07 20 01 inc %i4 for(; len; --len) 4000a38c: 80 a7 00 03 cmp %i4, %g3 4000a390: 12 bf ff fe bne 4000a388 4000a394: c2 2f 3f ff stb %g1, [ %i4 + -1 ] while(FASTLZ_EXPECT_CONDITIONAL(loop)); 4000a398: 10 bf ff c7 b 4000a2b4 4000a39c: 80 a3 20 00 cmp %o4, 0 for(; len; --len) 4000a3a0: 10 bf ff 5d b 4000a114 <== NOT EXECUTED 4000a3a4: 82 10 00 1d mov %i5, %g1 <== NOT EXECUTED 4000a3a8: 10 bf ff c2 b 4000a2b0 4000a3ac: 86 10 00 1c mov %i4, %g3 ofs = (*ip++) << 8; 4000a3b0: fa 0e 20 01 ldub [ %i0 + 1 ], %i5 <== NOT EXECUTED ref = op - ofs - MAX_DISTANCE; 4000a3b4: 88 23 c0 04 sub %o7, %g4, %g4 <== NOT EXECUTED ofs = (*ip++) << 8; 4000a3b8: bb 2f 60 08 sll %i5, 8, %i5 <== NOT EXECUTED ofs += *ip++; 4000a3bc: 9a 06 20 03 add %i0, 3, %o5 <== NOT EXECUTED ref = op - ofs - MAX_DISTANCE; 4000a3c0: 88 21 00 1d sub %g4, %i5, %g4 <== NOT EXECUTED 4000a3c4: 10 bf ff 33 b 4000a090 <== NOT EXECUTED 4000a3c8: 88 00 40 04 add %g1, %g4, %g4 <== NOT EXECUTED loop = 0; 4000a3cc: 10 bf ff 3e b 4000a0c4 <== NOT EXECUTED 4000a3d0: 98 10 20 00 clr %o4 <== NOT EXECUTED 4000a3d4: 10 bf ff a3 b 4000a260 <== NOT EXECUTED 4000a3d8: 98 10 20 00 clr %o4 <== NOT EXECUTED *op++ = *ip++; 4000a3dc: 10 bf ff 76 b 4000a1b4 <== NOT EXECUTED 4000a3e0: 82 10 00 0c mov %o4, %g1 <== NOT EXECUTED 4000a3e4: 10 bf ff cf b 4000a320 4000a3e8: 86 10 00 0f mov %o7, %g3 =============================================================================== 4000a4c8 : void rtems_rtl_alloc_del (rtems_rtl_alloc_tag tag, void* address) { 4000a4c8: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_data* rtl = rtems_rtl_lock (); 4000a4cc: 40 00 07 da call 4000c434 4000a4d0: f2 27 a0 48 st %i1, [ %fp + 0x48 ] 4000a4d4: ba 10 00 08 mov %o0, %i5 if (rtems_rtl_trace (RTEMS_RTL_TRACE_ALLOCATOR)) 4000a4d8: 40 00 18 4b call 40010604 4000a4dc: 90 10 22 00 mov 0x200, %o0 4000a4e0: 80 a2 20 00 cmp %o0, 0 4000a4e4: 12 80 00 11 bne 4000a528 4000a4e8: 85 2e 20 02 sll %i0, 2, %g2 printf ("rtl: alloc: del: %s addr=%p\n", rtems_rtl_trace_tag_label (tag), address); if (rtl && address) 4000a4ec: c2 07 a0 48 ld [ %fp + 0x48 ], %g1 4000a4f0: 80 a0 60 00 cmp %g1, 0 4000a4f4: 02 80 00 09 be 4000a518 4000a4f8: 80 a7 60 00 cmp %i5, 0 4000a4fc: 02 80 00 07 be 4000a518 <== NEVER TAKEN 4000a500: 96 10 20 00 clr %o3 rtl->allocator.allocator (false, tag, &address, 0); 4000a504: c2 07 60 18 ld [ %i5 + 0x18 ], %g1 4000a508: 94 07 a0 48 add %fp, 0x48, %o2 4000a50c: 92 10 00 18 mov %i0, %o1 4000a510: 9f c0 40 00 call %g1 4000a514: 90 10 20 00 clr %o0 rtems_rtl_unlock (); 4000a518: 40 00 08 cc call 4000c848 4000a51c: 01 00 00 00 nop } 4000a520: 81 c7 e0 08 ret 4000a524: 81 e8 00 00 restore printf ("rtl: alloc: del: %s addr=%p\n", 4000a528: d4 07 a0 48 ld [ %fp + 0x48 ], %o2 4000a52c: 03 10 00 c1 sethi %hi(0x40030400), %g1 4000a530: 82 10 62 3c or %g1, 0x23c, %g1 ! 4003063c 4000a534: d2 00 40 02 ld [ %g1 + %g2 ], %o1 4000a538: 11 10 00 c1 sethi %hi(0x40030400), %o0 4000a53c: 40 00 39 03 call 40018948 <__wrap_printf> 4000a540: 90 12 21 e0 or %o0, 0x1e0, %o0 ! 400305e0 if (rtl && address) 4000a544: 10 bf ff eb b 4000a4f0 4000a548: c2 07 a0 48 ld [ %fp + 0x48 ], %g1 =============================================================================== 4000a5a8 : { 4000a5a8: 9d e3 bf a0 save %sp, -96, %sp 4000a5ac: e0 07 a0 64 ld [ %fp + 0x64 ], %l0 *text_base = *const_base = *data_base = *bss_base = NULL; 4000a5b0: c0 24 00 00 clr [ %l0 ] if (text_size) 4000a5b4: 80 a6 60 00 cmp %i1, 0 { 4000a5b8: e2 07 a0 5c ld [ %fp + 0x5c ], %l1 *text_base = *const_base = *data_base = *bss_base = NULL; 4000a5bc: c0 24 40 00 clr [ %l1 ] 4000a5c0: c0 26 80 00 clr [ %i2 ] if (text_size) 4000a5c4: 12 80 00 24 bne 4000a654 <== ALWAYS TAKEN 4000a5c8: c0 26 00 00 clr [ %i0 ] if (const_size) 4000a5cc: 80 a6 e0 00 cmp %i3, 0 <== NOT EXECUTED 4000a5d0: 12 80 00 2d bne 4000a684 <== NOT EXECUTED 4000a5d4: 94 10 20 00 clr %o2 <== NOT EXECUTED if (eh_size) 4000a5d8: 80 a7 60 00 cmp %i5, 0 <== NOT EXECUTED 4000a5dc: 12 80 00 34 bne 4000a6ac <== NOT EXECUTED 4000a5e0: 94 10 20 00 clr %o2 <== NOT EXECUTED if (data_size) 4000a5e4: c2 07 a0 60 ld [ %fp + 0x60 ], %g1 <== NOT EXECUTED 4000a5e8: 80 a0 60 00 cmp %g1, 0 4000a5ec: 12 80 00 3b bne 4000a6d8 <== NEVER TAKEN 4000a5f0: 94 10 20 00 clr %o2 if (bss_size) 4000a5f4: c2 07 a0 68 ld [ %fp + 0x68 ], %g1 4000a5f8: 80 a0 60 00 cmp %g1, 0 4000a5fc: 12 80 00 06 bne 4000a614 <== NEVER TAKEN 4000a600: d2 07 a0 68 ld [ %fp + 0x68 ], %o1 return true; 4000a604: 82 10 20 01 mov 1, %g1 } 4000a608: b0 08 60 01 and %g1, 1, %i0 4000a60c: 81 c7 e0 08 ret 4000a610: 81 e8 00 00 restore *bss_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ_WRITE, 4000a614: 94 10 20 00 clr %o2 <== NOT EXECUTED 4000a618: 7f ff ff 83 call 4000a424 <== NOT EXECUTED 4000a61c: 90 10 20 04 mov 4, %o0 <== NOT EXECUTED if (!*bss_base) 4000a620: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000a624: 12 bf ff f8 bne 4000a604 <== NOT EXECUTED 4000a628: d0 24 00 00 st %o0, [ %l0 ] <== NOT EXECUTED rtems_rtl_alloc_module_del (text_base, const_base, eh_base, 4000a62c: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4000a630: 98 10 00 10 mov %l0, %o4 <== NOT EXECUTED 4000a634: 96 10 00 11 mov %l1, %o3 <== NOT EXECUTED 4000a638: 94 10 00 1c mov %i4, %o2 <== NOT EXECUTED 4000a63c: 7f ff ff c4 call 4000a54c <== NOT EXECUTED 4000a640: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED return false; 4000a644: 82 10 20 00 clr %g1 <== NOT EXECUTED } 4000a648: b0 08 60 01 and %g1, 1, %i0 <== NOT EXECUTED 4000a64c: 81 c7 e0 08 ret <== NOT EXECUTED 4000a650: 81 e8 00 00 restore <== NOT EXECUTED *text_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ_EXEC, 4000a654: 94 10 20 00 clr %o2 4000a658: 92 10 00 19 mov %i1, %o1 4000a65c: 7f ff ff 72 call 4000a424 4000a660: 90 10 20 05 mov 5, %o0 4000a664: d0 26 00 00 st %o0, [ %i0 ] if (!*text_base) 4000a668: 80 a2 20 00 cmp %o0, 0 4000a66c: 02 bf ff e7 be 4000a608 <== NEVER TAKEN 4000a670: 82 10 20 00 clr %g1 if (const_size) 4000a674: 80 a6 e0 00 cmp %i3, 0 4000a678: 02 bf ff d9 be 4000a5dc <== NEVER TAKEN 4000a67c: 80 a7 60 00 cmp %i5, 0 *const_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ, 4000a680: 94 10 20 00 clr %o2 4000a684: 92 10 00 1b mov %i3, %o1 4000a688: 7f ff ff 67 call 4000a424 4000a68c: 90 10 20 03 mov 3, %o0 if (!*const_base) 4000a690: 80 a2 20 00 cmp %o0, 0 4000a694: 02 bf ff e6 be 4000a62c <== NEVER TAKEN 4000a698: d0 26 80 00 st %o0, [ %i2 ] if (eh_size) 4000a69c: 80 a7 60 00 cmp %i5, 0 4000a6a0: 02 bf ff d2 be 4000a5e8 4000a6a4: c2 07 a0 60 ld [ %fp + 0x60 ], %g1 *eh_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ, 4000a6a8: 94 10 20 00 clr %o2 4000a6ac: 92 10 00 1d mov %i5, %o1 4000a6b0: 7f ff ff 5d call 4000a424 4000a6b4: 90 10 20 03 mov 3, %o0 if (!*eh_base) 4000a6b8: 80 a2 20 00 cmp %o0, 0 4000a6bc: 02 bf ff dc be 4000a62c <== NEVER TAKEN 4000a6c0: d0 27 00 00 st %o0, [ %i4 ] if (data_size) 4000a6c4: c2 07 a0 60 ld [ %fp + 0x60 ], %g1 4000a6c8: 80 a0 60 00 cmp %g1, 0 4000a6cc: 22 bf ff cb be,a 4000a5f8 <== ALWAYS TAKEN 4000a6d0: c2 07 a0 68 ld [ %fp + 0x68 ], %g1 *data_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ_WRITE, 4000a6d4: 94 10 20 00 clr %o2 <== NOT EXECUTED 4000a6d8: 92 10 00 01 mov %g1, %o1 <== NOT EXECUTED 4000a6dc: 7f ff ff 52 call 4000a424 <== NOT EXECUTED 4000a6e0: 90 10 20 04 mov 4, %o0 <== NOT EXECUTED if (!*data_base) 4000a6e4: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000a6e8: 12 bf ff c3 bne 4000a5f4 <== NOT EXECUTED 4000a6ec: d0 24 40 00 st %o0, [ %l1 ] <== NOT EXECUTED 4000a6f0: 10 bf ff d0 b 4000a630 <== NOT EXECUTED 4000a6f4: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED =============================================================================== 4000a424 : void* rtems_rtl_alloc_new (rtems_rtl_alloc_tag tag, size_t size, bool zero) { 4000a424: 9d e3 bf 98 save %sp, -104, %sp rtems_rtl_data* rtl = rtems_rtl_lock (); 4000a428: 40 00 08 03 call 4000c434 4000a42c: 01 00 00 00 nop /* * Obtain memory from the allocator. The address field is set by the * allocator. */ if (rtl) 4000a430: 80 a2 20 00 cmp %o0, 0 4000a434: 02 80 00 08 be 4000a454 <== NEVER TAKEN 4000a438: c0 27 bf fc clr [ %fp + -4 ] rtl->allocator.allocator (true, tag, &address, size); 4000a43c: c2 02 20 18 ld [ %o0 + 0x18 ], %g1 4000a440: 96 10 00 19 mov %i1, %o3 4000a444: 94 07 bf fc add %fp, -4, %o2 4000a448: 92 10 00 18 mov %i0, %o1 4000a44c: 9f c0 40 00 call %g1 4000a450: 90 10 20 01 mov 1, %o0 rtems_rtl_unlock (); 4000a454: 40 00 08 fd call 4000c848 4000a458: 01 00 00 00 nop if (rtems_rtl_trace (RTEMS_RTL_TRACE_ALLOCATOR)) 4000a45c: 40 00 18 6a call 40010604 4000a460: 90 10 22 00 mov 0x200, %o0 ! 200 4000a464: 80 a2 20 00 cmp %o0, 0 4000a468: 12 80 00 0e bne 4000a4a0 4000a46c: b1 2e 20 02 sll %i0, 2, %i0 rtems_rtl_trace_tag_label (tag), address, size); /* * Only zero the memory if asked to and the allocation was successful. */ if (address && zero) 4000a470: f0 07 bf fc ld [ %fp + -4 ], %i0 4000a474: 80 a6 20 00 cmp %i0, 0 4000a478: 02 80 00 08 be 4000a498 4000a47c: 80 a6 a0 00 cmp %i2, 0 4000a480: 02 80 00 06 be 4000a498 4000a484: 90 10 00 18 mov %i0, %o0 memset (address, 0, size); 4000a488: 94 10 00 19 mov %i1, %o2 4000a48c: 40 00 42 c0 call 4001af8c 4000a490: 92 10 20 00 clr %o1 4000a494: f0 07 bf fc ld [ %fp + -4 ], %i0 return address; } 4000a498: 81 c7 e0 08 ret 4000a49c: 81 e8 00 00 restore printf ("rtl: alloc: new: %s addr=%p size=%zu\n", 4000a4a0: d4 07 bf fc ld [ %fp + -4 ], %o2 4000a4a4: 03 10 00 c1 sethi %hi(0x40030400), %g1 4000a4a8: 82 10 62 3c or %g1, 0x23c, %g1 ! 4003063c 4000a4ac: d2 00 40 18 ld [ %g1 + %i0 ], %o1 4000a4b0: 96 10 00 19 mov %i1, %o3 4000a4b4: 11 10 00 c1 sethi %hi(0x40030400), %o0 4000a4b8: 40 00 39 24 call 40018948 <__wrap_printf> 4000a4bc: 90 12 21 b8 or %o0, 0x1b8, %o0 ! 400305b8 if (address && zero) 4000a4c0: 10 bf ff ed b 4000a474 4000a4c4: f0 07 bf fc ld [ %fp + -4 ], %i0 =============================================================================== 4000cbd8 : } void rtems_rtl_base_sym_global_add (const unsigned char* esyms, unsigned int size) { 4000cbd8: 9d e3 bf a0 save %sp, -96, %sp if (rtems_rtl_trace (RTEMS_RTL_TRACE_GLOBAL_SYM)) 4000cbdc: 40 00 0e 8a call 40010604 4000cbe0: 90 10 20 80 mov 0x80, %o0 4000cbe4: 80 a2 20 00 cmp %o0, 0 4000cbe8: 12 80 00 10 bne 4000cc28 4000cbec: 92 10 00 19 mov %i1, %o1 printf ("rtl: adding global symbols, table size %u\n", size); if (!rtems_rtl_lock ()) 4000cbf0: 7f ff fe 11 call 4000c434 4000cbf4: 01 00 00 00 nop 4000cbf8: 80 a2 20 00 cmp %o0, 0 4000cbfc: 22 80 00 14 be,a 4000cc4c <== NEVER TAKEN 4000cc00: 33 10 00 c3 sethi %hi(0x40030c00), %i1 <== NOT EXECUTED { rtems_rtl_set_error (EINVAL, "global add cannot lock rtl"); return; } rtems_rtl_symbol_global_add (rtl->base, esyms, size); 4000cc04: 3b 10 00 d8 sethi %hi(0x40036000), %i5 4000cc08: c2 07 61 e4 ld [ %i5 + 0x1e4 ], %g1 ! 400361e4 4000cc0c: d0 00 60 90 ld [ %g1 + 0x90 ], %o0 4000cc10: 92 10 00 18 mov %i0, %o1 4000cc14: 40 00 0d 6d call 400101c8 4000cc18: 94 10 00 19 mov %i1, %o2 4000cc1c: f0 07 61 e4 ld [ %i5 + 0x1e4 ], %i0 <== NOT EXECUTED 4000cc20: 40 00 1e 80 call 40014620 <_Mutex_recursive_Release> <== NOT EXECUTED 4000cc24: 81 e8 00 00 restore printf ("rtl: adding global symbols, table size %u\n", size); 4000cc28: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000cc2c: 40 00 2f 47 call 40018948 <__wrap_printf> 4000cc30: 90 12 22 60 or %o0, 0x260, %o0 ! 40030e60 if (!rtems_rtl_lock ()) 4000cc34: 7f ff fe 00 call 4000c434 4000cc38: 01 00 00 00 nop 4000cc3c: 80 a2 20 00 cmp %o0, 0 4000cc40: 12 bf ff f2 bne 4000cc08 <== ALWAYS TAKEN 4000cc44: 3b 10 00 d8 sethi %hi(0x40036000), %i5 rtems_rtl_set_error (EINVAL, "global add cannot lock rtl"); 4000cc48: 33 10 00 c3 sethi %hi(0x40030c00), %i1 <== NOT EXECUTED 4000cc4c: b0 10 20 16 mov 0x16, %i0 <== NOT EXECUTED 4000cc50: 7f ff fc 67 call 4000bdec <== NOT EXECUTED 4000cc54: 93 ee 62 90 restore %i1, 0x290, %o1 <== NOT EXECUTED =============================================================================== 4000cc58 : rtems_rtl_obj* rtems_rtl_baseimage (void) { return NULL; } 4000cc58: 81 c3 e0 08 retl <== NOT EXECUTED 4000cc5c: 90 10 20 00 clr %o0 <== NOT EXECUTED =============================================================================== 4000c85c : node = rtems_chain_first (&rtl->objects); 4000c85c: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000c860: c4 00 61 e4 ld [ %g1 + 0x1e4 ], %g2 ! 400361e4 return _Chain_Immutable_head( the_chain )->next; 4000c864: c2 00 a0 64 ld [ %g2 + 0x64 ], %g1 return &the_chain->Tail.Node; 4000c868: 84 00 a0 68 add %g2, 0x68, %g2 while (!rtems_chain_is_tail (&rtl->objects, node)) 4000c86c: 80 a0 40 02 cmp %g1, %g2 4000c870: 12 80 00 07 bne 4000c88c <== ALWAYS TAKEN 4000c874: 80 a2 00 01 cmp %o0, %g1 return NULL; 4000c878: 10 80 00 0a b 4000c8a0 <== NOT EXECUTED 4000c87c: 82 10 20 00 clr %g1 <== NOT EXECUTED while (!rtems_chain_is_tail (&rtl->objects, node)) 4000c880: 80 a0 40 02 cmp %g1, %g2 4000c884: 02 80 00 06 be 4000c89c <== NEVER TAKEN 4000c888: 80 a2 00 01 cmp %o0, %g1 if (check == obj) 4000c88c: 32 bf ff fd bne,a 4000c880 4000c890: c2 00 40 00 ld [ %g1 ], %g1 } 4000c894: 81 c3 e0 08 retl 4000c898: 90 10 00 01 mov %g1, %o0 return NULL; 4000c89c: 82 10 20 00 clr %g1 <== NOT EXECUTED } 4000c8a0: 81 c3 e0 08 retl <== NOT EXECUTED 4000c8a4: 90 10 00 01 mov %g1, %o0 <== NOT EXECUTED =============================================================================== 4000b5cc : return true; } bool rtems_rtl_elf_file_check (rtems_rtl_obj* obj, int fd) { 4000b5cc: 9d e3 bf 68 save %sp, -152, %sp rtems_rtl_obj_cache* header; Elf_Ehdr ehdr; rtems_rtl_obj_caches (&header, NULL, NULL); 4000b5d0: 94 10 20 00 clr %o2 4000b5d4: 92 10 20 00 clr %o1 4000b5d8: 40 00 03 5f call 4000c354 4000b5dc: 90 07 bf c8 add %fp, -56, %o0 if (!rtems_rtl_obj_cache_read_byval (header, fd, obj->ooffset, 4000b5e0: d4 1e 20 20 ldd [ %i0 + 0x20 ], %o2 4000b5e4: d0 07 bf c8 ld [ %fp + -56 ], %o0 4000b5e8: 9a 10 20 34 mov 0x34, %o5 4000b5ec: 98 07 bf cc add %fp, -52, %o4 4000b5f0: 40 00 07 14 call 4000d240 4000b5f4: 92 10 00 19 mov %i1, %o1 4000b5f8: 80 a2 20 00 cmp %o0, 0 4000b5fc: 02 80 00 0c be 4000b62c <== NEVER TAKEN 4000b600: b0 10 00 08 mov %o0, %i0 return false; /* * Check we have a valid ELF file. */ if ((memcmp (ELFMAG, ehdr.e_ident, SELFMAG) != 0) 4000b604: c4 07 bf cc ld [ %fp + -52 ], %g2 4000b608: 03 1f d1 53 sethi %hi(0x7f454c00), %g1 4000b60c: 82 10 60 46 or %g1, 0x46, %g1 ! 7f454c46 4000b610: 80 a0 80 01 cmp %g2, %g1 4000b614: 12 80 00 06 bne 4000b62c <== NEVER TAKEN 4000b618: b0 10 20 00 clr %i0 || ehdr.e_ident[EI_CLASS] != ELFCLASS) 4000b61c: c2 0f bf d0 ldub [ %fp + -48 ], %g1 4000b620: 80 a0 60 01 cmp %g1, 1 4000b624: 02 80 00 05 be 4000b638 <== ALWAYS TAKEN 4000b628: c2 0f bf d2 ldub [ %fp + -46 ], %g1 { return false; } return true; } 4000b62c: b0 0e 20 ff and %i0, 0xff, %i0 4000b630: 81 c7 e0 08 ret 4000b634: 81 e8 00 00 restore if ((ehdr.e_ident[EI_VERSION] != EV_CURRENT) 4000b638: 80 a0 60 01 cmp %g1, 1 4000b63c: 32 bf ff fd bne,a 4000b630 <== NEVER TAKEN 4000b640: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED || (ehdr.e_version != EV_CURRENT) 4000b644: c2 07 bf e0 ld [ %fp + -32 ], %g1 4000b648: 80 a0 60 01 cmp %g1, 1 4000b64c: 32 bf ff f9 bne,a 4000b630 <== NEVER TAKEN 4000b650: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED || (ehdr.e_ident[EI_DATA] != ELFDEFNNAME (MACHDEP_ENDIANNESS))) 4000b654: c2 0f bf d1 ldub [ %fp + -47 ], %g1 4000b658: 82 18 60 02 xor %g1, 2, %g1 4000b65c: 80 a0 00 01 cmp %g0, %g1 4000b660: 10 bf ff f3 b 4000b62c 4000b664: b0 60 3f ff subx %g0, -1, %i0 =============================================================================== 4000b690 : return true; } bool rtems_rtl_elf_file_load (rtems_rtl_obj* obj, int fd) { 4000b690: 9d e3 bf 20 save %sp, -224, %sp rtems_rtl_obj_cache* header; Elf_Ehdr ehdr; rtems_rtl_obj_caches (&header, NULL, NULL); 4000b694: 94 10 20 00 clr %o2 4000b698: 92 10 20 00 clr %o1 4000b69c: 40 00 03 2e call 4000c354 4000b6a0: 90 07 bf 90 add %fp, -112, %o0 if (!rtems_rtl_obj_cache_read_byval (header, fd, obj->ooffset, 4000b6a4: d0 07 bf 90 ld [ %fp + -112 ], %o0 4000b6a8: d4 1e 20 20 ldd [ %i0 + 0x20 ], %o2 4000b6ac: 9a 10 20 34 mov 0x34, %o5 4000b6b0: 98 07 bf cc add %fp, -52, %o4 4000b6b4: 40 00 06 e3 call 4000d240 4000b6b8: 92 10 00 19 mov %i1, %o1 4000b6bc: 80 a2 20 00 cmp %o0, 0 4000b6c0: 02 80 00 2f be 4000b77c <== NEVER TAKEN 4000b6c4: c4 07 bf cc ld [ %fp + -52 ], %g2 return false; /* * Check we have a valid ELF file. */ if ((memcmp (ELFMAG, ehdr.e_ident, SELFMAG) != 0) 4000b6c8: 03 1f d1 53 sethi %hi(0x7f454c00), %g1 4000b6cc: 82 10 60 46 or %g1, 0x46, %g1 ! 7f454c46 4000b6d0: 80 a0 80 01 cmp %g2, %g1 4000b6d4: 12 80 00 05 bne 4000b6e8 <== NEVER TAKEN 4000b6d8: c2 0f bf d0 ldub [ %fp + -48 ], %g1 || ehdr.e_ident[EI_CLASS] != ELFCLASS) 4000b6dc: 80 a0 60 01 cmp %g1, 1 4000b6e0: 02 80 00 0a be 4000b708 <== ALWAYS TAKEN 4000b6e4: c2 0f bf d2 ldub [ %fp + -46 ], %g1 { rtems_rtl_set_error (EINVAL, "invalid ELF file format"); 4000b6e8: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000b6ec: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED return false; 4000b6f0: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid ELF file format"); 4000b6f4: 40 00 01 be call 4000bdec <== NOT EXECUTED 4000b6f8: 92 12 60 f0 or %o1, 0xf0, %o1 <== NOT EXECUTED 4000b6fc: b0 0e 20 ff and %i0, 0xff, %i0 { return false; } return true; } 4000b700: 81 c7 e0 08 ret 4000b704: 81 e8 00 00 restore if ((ehdr.e_ident[EI_VERSION] != EV_CURRENT) 4000b708: 80 a0 60 01 cmp %g1, 1 4000b70c: 12 80 00 20 bne 4000b78c <== NEVER TAKEN 4000b710: c2 07 bf e0 ld [ %fp + -32 ], %g1 || (ehdr.e_version != EV_CURRENT) 4000b714: 80 a0 60 01 cmp %g1, 1 4000b718: 12 80 00 1e bne 4000b790 <== NEVER TAKEN 4000b71c: 90 10 20 16 mov 0x16, %o0 || (ehdr.e_ident[EI_DATA] != ELFDEFNNAME (MACHDEP_ENDIANNESS))) 4000b720: c2 0f bf d1 ldub [ %fp + -47 ], %g1 4000b724: 80 a0 60 02 cmp %g1, 2 4000b728: 12 80 00 1b bne 4000b794 <== NEVER TAKEN 4000b72c: 13 10 00 c2 sethi %hi(0x40030800), %o1 switch (ehdr->e_machine) 4000b730: c2 17 bf de lduh [ %fp + -34 ], %g1 4000b734: 80 a0 60 02 cmp %g1, 2 4000b738: 02 80 00 04 be 4000b748 <== ALWAYS TAKEN 4000b73c: 80 a0 60 12 cmp %g1, 0x12 4000b740: 12 80 00 1b bne 4000b7ac <== NOT EXECUTED 4000b744: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED if (ehdr.e_type == ET_DYN) 4000b748: c2 17 bf dc lduh [ %fp + -36 ], %g1 4000b74c: 80 a0 60 03 cmp %g1, 3 4000b750: 02 80 00 f8 be 4000bb30 <== NEVER TAKEN 4000b754: c2 17 bf f6 lduh [ %fp + -10 ], %g1 if (ehdr.e_phentsize != 0) 4000b758: 80 a0 60 00 cmp %g1, 0 4000b75c: 12 80 00 1a bne 4000b7c4 <== NEVER TAKEN 4000b760: c2 17 bf fa lduh [ %fp + -6 ], %g1 if (ehdr.e_shentsize != sizeof (Elf_Shdr)) 4000b764: 80 a0 60 28 cmp %g1, 0x28 4000b768: 02 80 00 1f be 4000b7e4 <== ALWAYS TAKEN 4000b76c: 13 10 00 c2 sethi %hi(0x40030800), %o1 rtems_rtl_set_error (EINVAL, "invalid ELF section header size"); 4000b770: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000b774: 40 00 01 9e call 4000bdec <== NOT EXECUTED 4000b778: 92 12 61 90 or %o1, 0x190, %o1 <== NOT EXECUTED return false; 4000b77c: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000b780: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED } 4000b784: 81 c7 e0 08 ret <== NOT EXECUTED 4000b788: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "unsupported ELF file version"); 4000b78c: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000b790: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED return false; 4000b794: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "unsupported ELF file version"); 4000b798: 92 12 61 08 or %o1, 0x108, %o1 <== NOT EXECUTED 4000b79c: 40 00 01 94 call 4000bdec <== NOT EXECUTED 4000b7a0: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED } 4000b7a4: 81 c7 e0 08 ret <== NOT EXECUTED 4000b7a8: 81 e8 00 00 restore <== NOT EXECUTED return false; 4000b7ac: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "unsupported machine type"); 4000b7b0: 40 00 01 8f call 4000bdec <== NOT EXECUTED 4000b7b4: 92 12 61 28 or %o1, 0x128, %o1 <== NOT EXECUTED 4000b7b8: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000b7bc: 81 c7 e0 08 ret <== NOT EXECUTED 4000b7c0: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "ELF file contains program headers"); 4000b7c4: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000b7c8: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED return false; 4000b7cc: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "ELF file contains program headers"); 4000b7d0: 40 00 01 87 call 4000bdec <== NOT EXECUTED 4000b7d4: 92 12 61 68 or %o1, 0x168, %o1 <== NOT EXECUTED 4000b7d8: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000b7dc: 81 c7 e0 08 ret <== NOT EXECUTED 4000b7e0: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_obj_caches (§s, &strings, NULL); 4000b7e4: 90 07 bf 94 add %fp, -108, %o0 4000b7e8: 94 10 20 00 clr %o2 4000b7ec: 40 00 02 da call 4000c354 4000b7f0: 92 07 bf 98 add %fp, -104, %o1 if (!sects || !strings) 4000b7f4: d0 07 bf 94 ld [ %fp + -108 ], %o0 4000b7f8: 80 a2 20 00 cmp %o0, 0 4000b7fc: 02 bf ff e0 be 4000b77c <== NEVER TAKEN 4000b800: c2 07 bf 98 ld [ %fp + -104 ], %g1 4000b804: 80 a0 60 00 cmp %g1, 0 4000b808: 02 bf ff dd be 4000b77c <== NEVER TAKEN 4000b80c: fa 07 bf ec ld [ %fp + -20 ], %i5 off = obj->ooffset + ehdr->e_shoff + (ehdr->e_shstrndx * ehdr->e_shentsize); 4000b810: c4 1e 20 20 ldd [ %i0 + 0x20 ], %g2 4000b814: c2 17 bf fe lduh [ %fp + -2 ], %g1 4000b818: c8 17 bf fa lduh [ %fp + -6 ], %g4 4000b81c: 96 80 c0 1d addcc %g3, %i5, %o3 4000b820: 82 58 40 04 smul %g1, %g4, %g1 4000b824: 94 40 a0 00 addx %g2, 0, %o2 if (!rtems_rtl_obj_cache_read_byval (sects, fd, off, &shdr, sizeof (shdr))) 4000b828: ba 82 c0 01 addcc %o3, %g1, %i5 off = obj->ooffset + ehdr->e_shoff + (ehdr->e_shstrndx * ehdr->e_shentsize); 4000b82c: 85 38 60 1f sra %g1, 0x1f, %g2 if (!rtems_rtl_obj_cache_read_byval (sects, fd, off, &shdr, sizeof (shdr))) 4000b830: 96 10 00 1d mov %i5, %o3 4000b834: b8 42 80 02 addx %o2, %g2, %i4 4000b838: 9a 10 20 28 mov 0x28, %o5 4000b83c: 94 10 00 1c mov %i4, %o2 4000b840: 98 07 bf a4 add %fp, -92, %o4 4000b844: 40 00 06 7f call 4000d240 4000b848: 92 10 00 19 mov %i1, %o1 4000b84c: 80 a2 20 00 cmp %o0, 0 4000b850: 02 bf ff cb be 4000b77c <== NEVER TAKEN 4000b854: c2 07 bf a8 ld [ %fp + -88 ], %g1 if (shdr.sh_type != SHT_STRTAB) 4000b858: 80 a0 60 03 cmp %g1, 3 4000b85c: 12 80 01 31 bne 4000bd20 <== NEVER TAKEN 4000b860: c2 07 bf b4 ld [ %fp + -76 ], %g1 sectstroff = obj->ooffset + shdr.sh_offset; 4000b864: c4 1e 20 20 ldd [ %i0 + 0x20 ], %g2 4000b868: a2 80 c0 01 addcc %g3, %g1, %l1 for (section = 0; section < ehdr->e_shnum; ++section) 4000b86c: c2 17 bf fc lduh [ %fp + -4 ], %g1 sectstroff = obj->ooffset + shdr.sh_offset; 4000b870: a0 40 a0 00 addx %g2, 0, %l0 for (section = 0; section < ehdr->e_shnum; ++section) 4000b874: 80 a0 60 00 cmp %g1, 0 4000b878: 02 80 00 b6 be 4000bb50 <== NEVER TAKEN 4000b87c: 2d 10 00 c2 sethi %hi(0x40030800), %l6 printf ("rtl: section: %2d: type=%d flags=%08x link=%d info=%d\n", 4000b880: 2b 10 00 c2 sethi %hi(0x40030800), %l5 if (strcmp (".ctors", name) == 0) 4000b884: 29 10 00 c2 sethi %hi(0x40030800), %l4 if (strcmp (".dtors", name) == 0) 4000b888: 35 10 00 c2 sethi %hi(0x40030800), %i2 switch (shdr.sh_type) 4000b88c: 37 10 00 2d sethi %hi(0x4000b400), %i3 for (section = 0; section < ehdr->e_shnum; ++section) 4000b890: b8 10 20 00 clr %i4 printf ("rtl: section header: %2d: offset=%d\n", section, (int) off); 4000b894: ac 15 a1 d0 or %l6, 0x1d0, %l6 printf ("rtl: section: %2d: type=%d flags=%08x link=%d info=%d\n", 4000b898: aa 15 61 f8 or %l5, 0x1f8, %l5 if (strcmp (".ctors", name) == 0) 4000b89c: a8 15 22 68 or %l4, 0x268, %l4 if (strcmp (".dtors", name) == 0) 4000b8a0: b4 16 a2 70 or %i2, 0x270, %i2 switch (shdr.sh_type) 4000b8a4: b6 16 e2 68 or %i3, 0x268, %i3 off = obj->ooffset + ehdr->e_shoff + (((uint32_t) section) * ehdr->e_shentsize); 4000b8a8: c2 17 bf fa lduh [ %fp + -6 ], %g1 4000b8ac: c8 07 bf ec ld [ %fp + -20 ], %g4 4000b8b0: 9a 80 c0 04 addcc %g3, %g4, %o5 4000b8b4: 82 58 40 1c smul %g1, %i4, %g1 4000b8b8: 98 40 a0 00 addx %g2, 0, %o4 4000b8bc: a6 83 40 01 addcc %o5, %g1, %l3 if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000b8c0: 90 10 20 01 mov 1, %o0 4000b8c4: 40 00 13 50 call 40010604 4000b8c8: a4 43 20 00 addx %o4, 0, %l2 4000b8cc: 80 a2 20 00 cmp %o0, 0 4000b8d0: 02 80 00 07 be 4000b8ec 4000b8d4: d0 07 bf 94 ld [ %fp + -108 ], %o0 printf ("rtl: section header: %2d: offset=%d\n", section, (int) off); 4000b8d8: 94 10 00 13 mov %l3, %o2 4000b8dc: 92 10 00 1c mov %i4, %o1 4000b8e0: 40 00 34 1a call 40018948 <__wrap_printf> 4000b8e4: 90 10 00 16 mov %l6, %o0 if (!rtems_rtl_obj_cache_read_byval (sects, fd, off, &shdr, sizeof (shdr))) 4000b8e8: d0 07 bf 94 ld [ %fp + -108 ], %o0 4000b8ec: 9a 10 20 28 mov 0x28, %o5 4000b8f0: 98 07 bf a4 add %fp, -92, %o4 4000b8f4: 94 10 00 12 mov %l2, %o2 4000b8f8: 96 10 00 13 mov %l3, %o3 4000b8fc: 40 00 06 51 call 4000d240 4000b900: 92 10 00 19 mov %i1, %o1 4000b904: 80 a2 20 00 cmp %o0, 0 4000b908: 22 bf ff 9e be,a 4000b780 <== NEVER TAKEN 4000b90c: b0 10 20 00 clr %i0 <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000b910: 40 00 13 3d call 40010604 4000b914: 90 10 20 01 mov 1, %o0 4000b918: 80 a2 20 00 cmp %o0, 0 4000b91c: 02 80 00 0a be 4000b944 4000b920: c2 07 bf a8 ld [ %fp + -88 ], %g1 printf ("rtl: section: %2d: type=%d flags=%08x link=%d info=%d\n", 4000b924: da 07 bf c0 ld [ %fp + -64 ], %o5 4000b928: d8 07 bf bc ld [ %fp + -68 ], %o4 4000b92c: d6 07 bf ac ld [ %fp + -84 ], %o3 4000b930: d4 07 bf a8 ld [ %fp + -88 ], %o2 4000b934: 92 10 00 1c mov %i4, %o1 4000b938: 40 00 34 04 call 40018948 <__wrap_printf> 4000b93c: 90 10 00 15 mov %l5, %o0 switch (shdr.sh_type) 4000b940: c2 07 bf a8 ld [ %fp + -88 ], %g1 4000b944: 80 a0 60 09 cmp %g1, 9 4000b948: 18 80 00 05 bgu 4000b95c 4000b94c: 83 28 60 02 sll %g1, 2, %g1 4000b950: c2 06 c0 01 ld [ %i3 + %g1 ], %g1 4000b954: 81 c0 40 00 jmp %g1 4000b958: 01 00 00 00 nop flags = rtems_rtl_elf_section_flags (obj, &shdr); 4000b95c: 92 07 bf a4 add %fp, -92, %o1 4000b960: 40 00 01 c5 call 4000c074 4000b964: 90 10 00 18 mov %i0, %o0 4000b968: c2 07 bf ac ld [ %fp + -84 ], %g1 if (flags == 0) 4000b96c: 80 a2 20 00 cmp %o0, 0 4000b970: 12 80 00 16 bne 4000b9c8 <== NEVER TAKEN 4000b974: ba 10 00 08 mov %o0, %i5 if (rtems_rtl_trace (RTEMS_RTL_TRACE_WARNING)) 4000b978: 40 00 13 23 call 40010604 4000b97c: 90 10 20 02 mov 2, %o0 4000b980: 80 a2 20 00 cmp %o0, 0 4000b984: 02 80 00 09 be 4000b9a8 <== NEVER TAKEN 4000b988: c2 17 bf fc lduh [ %fp + -4 ], %g1 printf ("rtl: unsupported section: %2d: type=%02d flags=%02x\n", 4000b98c: d6 07 bf ac ld [ %fp + -84 ], %o3 4000b990: d4 07 bf a8 ld [ %fp + -88 ], %o2 4000b994: 11 10 00 c2 sethi %hi(0x40030800), %o0 4000b998: 92 10 00 1c mov %i4, %o1 4000b99c: 40 00 33 eb call 40018948 <__wrap_printf> 4000b9a0: 90 12 22 30 or %o0, 0x230, %o0 for (section = 0; section < ehdr->e_shnum; ++section) 4000b9a4: c2 17 bf fc lduh [ %fp + -4 ], %g1 4000b9a8: b8 07 20 01 inc %i4 4000b9ac: 80 a7 00 01 cmp %i4, %g1 4000b9b0: 16 80 00 69 bge 4000bb54 4000b9b4: c2 07 bf e4 ld [ %fp + -28 ], %g1 4000b9b8: 10 bf ff bc b 4000b8a8 4000b9bc: c4 1e 20 20 ldd [ %i0 + 0x20 ], %g2 4000b9c0: c2 07 bf ac ld [ %fp + -84 ], %g1 <== NOT EXECUTED flags = RTEMS_RTL_OBJ_SECT_REL; 4000b9c4: ba 10 20 20 mov 0x20, %i5 <== NOT EXECUTED if ((shdr.sh_flags & SHF_LINK_ORDER) != 0) 4000b9c8: 80 88 60 80 btst 0x80, %g1 4000b9cc: 02 80 00 04 be 4000b9dc <== ALWAYS TAKEN 4000b9d0: d4 07 bf a4 ld [ %fp + -92 ], %o2 flags |= RTEMS_RTL_OBJ_SECT_LINK; 4000b9d4: 03 00 00 10 sethi %hi(0x4000), %g1 <== NOT EXECUTED 4000b9d8: ba 17 40 01 or %i5, %g1, %i5 <== NOT EXECUTED if (!rtems_rtl_obj_cache_read (strings, fd, 4000b9dc: 86 84 40 0a addcc %l1, %o2, %g3 len = RTEMS_RTL_ELF_STRING_MAX; 4000b9e0: 82 10 21 00 mov 0x100, %g1 if (!rtems_rtl_obj_cache_read (strings, fd, 4000b9e4: 84 44 20 00 addx %l0, 0, %g2 4000b9e8: d0 07 bf 98 ld [ %fp + -104 ], %o0 4000b9ec: 94 10 00 02 mov %g2, %o2 4000b9f0: 96 10 00 03 mov %g3, %o3 4000b9f4: 9a 07 bf a0 add %fp, -96, %o5 len = RTEMS_RTL_ELF_STRING_MAX; 4000b9f8: c2 27 bf a0 st %g1, [ %fp + -96 ] if (!rtems_rtl_obj_cache_read (strings, fd, 4000b9fc: 98 07 bf 9c add %fp, -100, %o4 4000ba00: 40 00 04 d9 call 4000cd64 4000ba04: 92 10 00 19 mov %i1, %o1 4000ba08: 80 a2 20 00 cmp %o0, 0 4000ba0c: 02 bf ff 5c be 4000b77c <== NEVER TAKEN 4000ba10: e4 07 bf 9c ld [ %fp + -100 ], %l2 if (strcmp (".ctors", name) == 0) 4000ba14: 92 10 00 12 mov %l2, %o1 4000ba18: 40 00 42 64 call 4001c3a8 4000ba1c: 90 10 00 14 mov %l4, %o0 4000ba20: 80 a2 20 00 cmp %o0, 0 4000ba24: 12 80 00 04 bne 4000ba34 <== ALWAYS TAKEN 4000ba28: 92 10 00 12 mov %l2, %o1 flags |= RTEMS_RTL_OBJ_SECT_CTOR; 4000ba2c: 03 00 00 20 sethi %hi(0x8000), %g1 <== NOT EXECUTED 4000ba30: ba 17 40 01 or %i5, %g1, %i5 <== NOT EXECUTED if (strcmp (".dtors", name) == 0) 4000ba34: 40 00 42 5d call 4001c3a8 4000ba38: 90 10 00 1a mov %i2, %o0 4000ba3c: 80 a2 20 00 cmp %o0, 0 4000ba40: 12 80 00 05 bne 4000ba54 <== ALWAYS TAKEN 4000ba44: 94 10 00 1d mov %i5, %o2 flags |= RTEMS_RTL_OBJ_SECT_DTOR; 4000ba48: 03 00 00 40 sethi %hi(0x10000), %g1 <== NOT EXECUTED 4000ba4c: ba 17 40 01 or %i5, %g1, %i5 <== NOT EXECUTED if (rtems_rtl_elf_unwind_parse (obj, name, flags)) 4000ba50: 94 10 00 1d mov %i5, %o2 <== NOT EXECUTED 4000ba54: 92 10 00 12 mov %l2, %o1 4000ba58: 40 00 02 1c call 4000c2c8 4000ba5c: 90 10 00 18 mov %i0, %o0 4000ba60: 80 a2 20 00 cmp %o0, 0 4000ba64: 02 80 00 04 be 4000ba74 4000ba68: c2 07 bf c0 ld [ %fp + -64 ], %g1 flags &= ~(RTEMS_RTL_OBJ_SECT_TEXT | RTEMS_RTL_OBJ_SECT_CONST); 4000ba6c: ba 0f 7f fc and %i5, -4, %i5 flags |= RTEMS_RTL_OBJ_SECT_EH; 4000ba70: ba 17 60 10 or %i5, 0x10, %i5 if (!rtems_rtl_obj_add_section (obj, section, name, 4000ba74: c2 23 a0 64 st %g1, [ %sp + 0x64 ] 4000ba78: 98 10 20 00 clr %o4 4000ba7c: c2 07 bf bc ld [ %fp + -68 ], %g1 4000ba80: c2 23 a0 60 st %g1, [ %sp + 0x60 ] 4000ba84: 92 10 00 1c mov %i4, %o1 4000ba88: c2 07 bf c4 ld [ %fp + -60 ], %g1 4000ba8c: fa 23 a0 68 st %i5, [ %sp + 0x68 ] 4000ba90: 90 10 00 18 mov %i0, %o0 4000ba94: c2 23 a0 5c st %g1, [ %sp + 0x5c ] 4000ba98: d6 07 bf b8 ld [ %fp + -72 ], %o3 4000ba9c: d4 07 bf 9c ld [ %fp + -100 ], %o2 4000baa0: 40 00 0a bf call 4000e59c 4000baa4: da 07 bf b4 ld [ %fp + -76 ], %o5 4000baa8: 80 a2 20 00 cmp %o0, 0 4000baac: 12 bf ff bf bne 4000b9a8 <== ALWAYS TAKEN 4000bab0: c2 17 bf fc lduh [ %fp + -4 ], %g1 return false; 4000bab4: 10 bf ff 33 b 4000b780 <== NOT EXECUTED 4000bab8: b0 10 20 00 clr %i0 <== NOT EXECUTED if ((shdr.sh_flags & (SHF_ALLOC | SHF_WRITE)) == (SHF_ALLOC | SHF_WRITE)) 4000babc: c2 07 bf ac ld [ %fp + -84 ], %g1 4000bac0: 84 08 60 03 and %g1, 3, %g2 4000bac4: 80 a0 a0 03 cmp %g2, 3 4000bac8: 32 bf ff b8 bne,a 4000b9a8 <== NEVER TAKEN 4000bacc: c2 17 bf fc lduh [ %fp + -4 ], %g1 <== NOT EXECUTED flags = RTEMS_RTL_OBJ_SECT_BSS | RTEMS_RTL_OBJ_SECT_ZERO; 4000bad0: 3b 00 00 08 sethi %hi(0x2000), %i5 4000bad4: 10 bf ff bd b 4000b9c8 4000bad8: ba 17 60 08 or %i5, 8, %i5 ! 2008 <_Configuration_Interrupt_stack_size+0x8> flags = RTEMS_RTL_OBJ_SECT_RELA; 4000badc: ba 10 20 40 mov 0x40, %i5 4000bae0: 10 bf ff ba b 4000b9c8 4000bae4: c2 07 bf ac ld [ %fp + -84 ], %g1 flags = RTEMS_RTL_OBJ_SECT_STR; 4000bae8: ba 10 21 00 mov 0x100, %i5 4000baec: 10 bf ff b7 b 4000b9c8 4000baf0: c2 07 bf ac ld [ %fp + -84 ], %g1 flags = RTEMS_RTL_OBJ_SECT_SYM; 4000baf4: ba 10 20 80 mov 0x80, %i5 4000baf8: 10 bf ff b4 b 4000b9c8 4000bafc: c2 07 bf ac ld [ %fp + -84 ], %g1 if ((shdr.sh_flags & SHF_ALLOC) == SHF_ALLOC) 4000bb00: c2 07 bf ac ld [ %fp + -84 ], %g1 4000bb04: 80 88 60 02 btst 2, %g1 4000bb08: 22 bf ff a8 be,a 4000b9a8 4000bb0c: c2 17 bf fc lduh [ %fp + -4 ], %g1 if ((shdr.sh_flags & SHF_EXECINSTR) == SHF_EXECINSTR) 4000bb10: 80 88 60 04 btst 4, %g1 4000bb14: 12 bf ff ad bne 4000b9c8 4000bb18: ba 10 24 01 mov 0x401, %i5 else if ((shdr.sh_flags & SHF_WRITE) == SHF_WRITE) 4000bb1c: 80 88 60 01 btst 1, %g1 4000bb20: 02 bf ff aa be 4000b9c8 4000bb24: ba 10 24 02 mov 0x402, %i5 flags = RTEMS_RTL_OBJ_SECT_DATA | RTEMS_RTL_OBJ_SECT_LOAD; 4000bb28: 10 bf ff a8 b 4000b9c8 4000bb2c: ba 10 24 04 mov 0x404, %i5 rtems_rtl_set_error (EINVAL, "unsupported ELF file type"); 4000bb30: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000bb34: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED return false; 4000bb38: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "unsupported ELF file type"); 4000bb3c: 40 00 00 ac call 4000bdec <== NOT EXECUTED 4000bb40: 92 12 61 48 or %o1, 0x148, %o1 <== NOT EXECUTED 4000bb44: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000bb48: 81 c7 e0 08 ret <== NOT EXECUTED 4000bb4c: 81 e8 00 00 restore <== NOT EXECUTED obj->entry = (void*)(uintptr_t) ehdr.e_entry; 4000bb50: c2 07 bf e4 ld [ %fp + -28 ], %g1 <== NOT EXECUTED 4000bb54: c2 26 20 78 st %g1, [ %i0 + 0x78 ] if (!rtems_rtl_obj_load_sections (obj, fd, rtems_rtl_elf_loader, &ehdr)) 4000bb58: 96 07 bf cc add %fp, -52, %o3 4000bb5c: 92 10 00 19 mov %i1, %o1 4000bb60: 15 10 00 2b sethi %hi(0x4000ac00), %o2 4000bb64: 90 10 00 18 mov %i0, %o0 4000bb68: 40 00 0b 2c call 4000e818 4000bb6c: 94 12 a2 88 or %o2, 0x288, %o2 4000bb70: 80 a2 20 00 cmp %o0, 0 4000bb74: 22 bf ff 03 be,a 4000b780 <== NEVER TAKEN 4000bb78: b0 10 20 00 clr %i0 <== NOT EXECUTED if (!rtems_rtl_obj_load_symbols (obj, fd, rtems_rtl_elf_symbols, &ehdr)) 4000bb7c: 96 07 bf cc add %fp, -52, %o3 4000bb80: 92 10 00 19 mov %i1, %o1 4000bb84: 15 10 00 2a sethi %hi(0x4000a800), %o2 4000bb88: 90 10 00 18 mov %i0, %o0 4000bb8c: 40 00 0b 09 call 4000e7b0 4000bb90: 94 12 a0 c0 or %o2, 0xc0, %o2 4000bb94: 80 a2 20 00 cmp %o0, 0 4000bb98: 22 bf fe fa be,a 4000b780 <== NEVER TAKEN 4000bb9c: b0 10 20 00 clr %i0 <== NOT EXECUTED if (!rtems_rtl_obj_relocate (obj, fd, rtems_rtl_elf_relocator, &ehdr)) 4000bba0: 96 07 bf cc add %fp, -52, %o3 4000bba4: 92 10 00 19 mov %i1, %o1 4000bba8: 15 10 00 2c sethi %hi(0x4000b000), %o2 4000bbac: 90 10 00 18 mov %i0, %o0 4000bbb0: 40 00 0a c8 call 4000e6d0 4000bbb4: 94 12 a0 04 or %o2, 4, %o2 4000bbb8: 80 a2 20 00 cmp %o0, 0 4000bbbc: 22 bf fe f1 be,a 4000b780 <== NEVER TAKEN 4000bbc0: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_obj_synchronize_cache (obj); 4000bbc4: 40 00 0a dd call 4000e738 4000bbc8: 90 10 00 18 mov %i0, %o0 rtems_rtl_symbol_obj_erase_local (obj); 4000bbcc: 40 00 12 5b call 40010538 4000bbd0: 90 10 00 18 mov %i0, %o0 return _Chain_Immutable_head( the_chain )->next; 4000bbd4: c8 06 20 2c ld [ %i0 + 0x2c ], %g4 4000bbd8: 86 10 20 04 mov 4, %g3 int sec_num = 0; 4000bbdc: ba 10 20 00 clr %i5 for (mask = RTEMS_RTL_OBJ_SECT_TEXT; 4000bbe0: 84 10 20 01 mov 1, %g2 4000bbe4: b4 06 20 30 add %i0, 0x30, %i2 node = rtems_chain_first (sections); 4000bbe8: 82 10 00 04 mov %g4, %g1 while (!rtems_chain_is_tail (sections, node)) 4000bbec: 80 a0 40 1a cmp %g1, %i2 4000bbf0: 22 80 00 0c be,a 4000bc20 4000bbf4: 86 80 ff ff addcc %g3, -1, %g3 if ((sect->size != 0) && ((sect->flags & mask) != 0)) 4000bbf8: f8 00 60 10 ld [ %g1 + 0x10 ], %i4 4000bbfc: 80 a7 20 00 cmp %i4, 0 4000bc00: 22 bf ff fb be,a 4000bbec <== NEVER TAKEN 4000bc04: c2 00 40 00 ld [ %g1 ], %g1 <== NOT EXECUTED 4000bc08: f8 00 60 2c ld [ %g1 + 0x2c ], %i4 4000bc0c: 80 88 80 1c btst %g2, %i4 4000bc10: 32 80 00 02 bne,a 4000bc18 4000bc14: ba 07 60 01 inc %i5 4000bc18: 10 bf ff f5 b 4000bbec 4000bc1c: c2 00 40 00 ld [ %g1 ], %g1 for (mask = RTEMS_RTL_OBJ_SECT_TEXT; 4000bc20: 12 bf ff f2 bne 4000bbe8 4000bc24: 85 28 a0 01 sll %g2, 1, %g2 obj->obj_num = 1; 4000bc28: 82 10 20 01 mov 1, %g1 4000bc2c: c2 26 20 84 st %g1, [ %i0 + 0x84 ] sec_num * sizeof (section_detail), true); 4000bc30: 93 2f 60 04 sll %i5, 4, %o1 obj->linkmap = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000bc34: 94 10 20 01 mov 1, %o2 4000bc38: 92 02 60 34 add %o1, 0x34, %o1 4000bc3c: 7f ff f9 fa call 4000a424 4000bc40: 90 10 20 00 clr %o0 if (!obj->linkmap) 4000bc44: 80 a2 20 00 cmp %o0, 0 4000bc48: 02 80 00 4a be 4000bd70 <== NEVER TAKEN 4000bc4c: d0 26 20 88 st %o0, [ %i0 + 0x88 ] obj->linkmap->name = obj->oname; 4000bc50: c2 06 20 18 ld [ %i0 + 0x18 ], %g1 obj->linkmap->sec_addr[rap_text] = obj->text_base; 4000bc54: d8 06 20 54 ld [ %i0 + 0x54 ], %o4 obj->linkmap->sec_addr[rap_const] = obj->const_base; 4000bc58: da 06 20 5c ld [ %i0 + 0x5c ], %o5 obj->linkmap->sec_addr[rap_data] = obj->data_base; 4000bc5c: de 06 20 68 ld [ %i0 + 0x68 ], %o7 obj->linkmap->sec_addr[rap_bss] = obj->bss_base; 4000bc60: f2 06 20 6c ld [ %i0 + 0x6c ], %i1 obj->linkmap->sec_detail = (section_detail*) (obj->linkmap + 1); 4000bc64: 88 02 20 34 add %o0, 0x34, %g4 obj->linkmap->name = obj->oname; 4000bc68: c2 22 00 00 st %g1, [ %o0 ] 4000bc6c: b8 10 20 04 mov 4, %i4 obj->linkmap->sec_detail = (section_detail*) (obj->linkmap + 1); 4000bc70: c8 22 20 08 st %g4, [ %o0 + 8 ] for (mask = RTEMS_RTL_OBJ_SECT_TEXT; 4000bc74: 86 10 20 01 mov 1, %g3 obj->linkmap->rpathlen = 0; 4000bc78: c0 22 20 24 clr [ %o0 + 0x24 ] sd[i].rap_id = rap_bss; 4000bc7c: 94 10 20 05 mov 5, %o2 obj->linkmap->rpath = NULL; 4000bc80: c0 22 20 28 clr [ %o0 + 0x28 ] sd[i].rap_id = rap_const; 4000bc84: 96 10 20 01 mov 1, %o3 obj->linkmap->l_next = NULL; 4000bc88: c0 22 20 2c clr [ %o0 + 0x2c ] obj->linkmap->l_prev = NULL; 4000bc8c: c0 22 20 30 clr [ %o0 + 0x30 ] obj->linkmap->sec_addr[rap_text] = obj->text_base; 4000bc90: d8 22 20 0c st %o4, [ %o0 + 0xc ] obj->linkmap->sec_addr[rap_const] = obj->const_base; 4000bc94: da 22 20 10 st %o5, [ %o0 + 0x10 ] obj->linkmap->sec_addr[rap_data] = obj->data_base; 4000bc98: de 22 20 1c st %o7, [ %o0 + 0x1c ] obj->linkmap->sec_addr[rap_bss] = obj->bss_base; 4000bc9c: f2 22 20 20 st %i1, [ %o0 + 0x20 ] 4000bca0: d2 06 20 2c ld [ %i0 + 0x2c ], %o1 obj->linkmap->sec_num = sec_num; 4000bca4: fa 22 20 04 st %i5, [ %o0 + 4 ] int i = 0; 4000bca8: ba 10 20 00 clr %i5 node = rtems_chain_first (sections); 4000bcac: 84 10 00 09 mov %o1, %g2 while (!rtems_chain_is_tail (sections, node)) 4000bcb0: 80 a6 80 02 cmp %i2, %g2 4000bcb4: 22 80 00 23 be,a 4000bd40 4000bcb8: b8 87 3f ff addcc %i4, -1, %i4 if ((sect->size != 0) && ((sect->flags & mask) != 0)) 4000bcbc: f6 00 a0 10 ld [ %g2 + 0x10 ], %i3 4000bcc0: 80 a6 e0 00 cmp %i3, 0 4000bcc4: 22 bf ff fb be,a 4000bcb0 <== NEVER TAKEN 4000bcc8: c4 00 80 00 ld [ %g2 ], %g2 <== NOT EXECUTED 4000bccc: c2 00 a0 2c ld [ %g2 + 0x2c ], %g1 4000bcd0: 80 88 c0 01 btst %g3, %g1 4000bcd4: 22 bf ff f7 be,a 4000bcb0 4000bcd8: c4 00 80 00 ld [ %g2 ], %g2 sd[i].name = sect->name; 4000bcdc: d0 00 a0 0c ld [ %g2 + 0xc ], %o0 4000bce0: 83 2f 60 04 sll %i5, 4, %g1 4000bce4: d0 21 00 01 st %o0, [ %g4 + %g1 ] 4000bce8: 82 01 00 01 add %g4, %g1, %g1 if (mask == RTEMS_RTL_OBJ_SECT_TEXT) 4000bcec: 80 a0 e0 01 cmp %g3, 1 4000bcf0: 02 80 00 1a be 4000bd58 4000bcf4: f6 20 60 08 st %i3, [ %g1 + 8 ] if (mask == RTEMS_RTL_OBJ_SECT_CONST) 4000bcf8: 80 a0 e0 02 cmp %g3, 2 4000bcfc: 12 80 00 25 bne 4000bd90 <== NEVER TAKEN 4000bd00: 80 a0 e0 04 cmp %g3, 4 sd[i].offset = sect->base - obj->const_base; 4000bd04: f6 00 a0 30 ld [ %g2 + 0x30 ], %i3 4000bd08: b6 26 c0 0d sub %i3, %o5, %i3 sd[i].rap_id = rap_const; 4000bd0c: d6 20 60 0c st %o3, [ %g1 + 0xc ] sd[i].offset = sect->base - obj->const_base; 4000bd10: f6 20 60 04 st %i3, [ %g1 + 4 ] ++i; 4000bd14: ba 07 60 01 inc %i5 4000bd18: 10 bf ff e6 b 4000bcb0 4000bd1c: c4 00 80 00 ld [ %g2 ], %g2 rtems_rtl_set_error (EINVAL, "bad .sectstr section type"); 4000bd20: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000bd24: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED return false; 4000bd28: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "bad .sectstr section type"); 4000bd2c: 40 00 00 30 call 4000bdec <== NOT EXECUTED 4000bd30: 92 12 61 b0 or %o1, 0x1b0, %o1 <== NOT EXECUTED 4000bd34: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000bd38: 81 c7 e0 08 ret <== NOT EXECUTED 4000bd3c: 81 e8 00 00 restore <== NOT EXECUTED for (mask = RTEMS_RTL_OBJ_SECT_TEXT; 4000bd40: 12 bf ff db bne 4000bcac 4000bd44: 87 28 e0 01 sll %g3, 1, %g3 if (!rtems_rtl_elf_unwind_register (obj)) 4000bd48: 40 00 01 63 call 4000c2d4 4000bd4c: 90 10 00 18 mov %i0, %o0 4000bd50: 10 bf fe 6b b 4000b6fc 4000bd54: b0 10 00 08 mov %o0, %i0 sd[i].offset = sect->base - obj->text_base; 4000bd58: f6 00 a0 30 ld [ %g2 + 0x30 ], %i3 4000bd5c: b6 26 c0 0c sub %i3, %o4, %i3 sd[i].rap_id = rap_text; 4000bd60: c0 20 60 0c clr [ %g1 + 0xc ] ++i; 4000bd64: ba 07 60 01 inc %i5 sd[i].offset = sect->base - obj->text_base; 4000bd68: 10 bf ff ec b 4000bd18 4000bd6c: f6 20 60 04 st %i3, [ %g1 + 4 ] rtems_rtl_set_error (ENOMEM, "no memory for obj linkmap"); 4000bd70: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000bd74: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED return false; 4000bd78: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for obj linkmap"); 4000bd7c: 40 00 00 1c call 4000bdec <== NOT EXECUTED 4000bd80: 92 12 62 78 or %o1, 0x278, %o1 <== NOT EXECUTED 4000bd84: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000bd88: 81 c7 e0 08 ret <== NOT EXECUTED 4000bd8c: 81 e8 00 00 restore <== NOT EXECUTED if (mask == RTEMS_RTL_OBJ_SECT_DATA) 4000bd90: 12 80 00 07 bne 4000bdac <== NOT EXECUTED 4000bd94: 80 a0 e0 08 cmp %g3, 8 <== NOT EXECUTED sd[i].offset = sect->base - obj->data_base; 4000bd98: f6 00 a0 30 ld [ %g2 + 0x30 ], %i3 <== NOT EXECUTED 4000bd9c: b6 26 c0 0f sub %i3, %o7, %i3 <== NOT EXECUTED sd[i].rap_id = rap_data; 4000bda0: c6 20 60 0c st %g3, [ %g1 + 0xc ] <== NOT EXECUTED sd[i].offset = sect->base - obj->data_base; 4000bda4: 10 bf ff dc b 4000bd14 <== NOT EXECUTED 4000bda8: f6 20 60 04 st %i3, [ %g1 + 4 ] <== NOT EXECUTED if (mask == RTEMS_RTL_OBJ_SECT_BSS) 4000bdac: 32 bf ff db bne,a 4000bd18 <== NOT EXECUTED 4000bdb0: ba 07 60 01 inc %i5 <== NOT EXECUTED sd[i].offset = sect->base - obj->bss_base; 4000bdb4: f6 00 a0 30 ld [ %g2 + 0x30 ], %i3 <== NOT EXECUTED 4000bdb8: b6 26 c0 19 sub %i3, %i1, %i3 <== NOT EXECUTED sd[i].rap_id = rap_bss; 4000bdbc: d4 20 60 0c st %o2, [ %g1 + 0xc ] <== NOT EXECUTED sd[i].offset = sect->base - obj->bss_base; 4000bdc0: 10 bf ff d5 b 4000bd14 <== NOT EXECUTED 4000bdc4: f6 20 60 04 st %i3, [ %g1 + 4 ] <== NOT EXECUTED =============================================================================== 4000bde0 : rtems_rtl_loader_format* rtems_rtl_elf_file_sig (void) { return &elf_sig; 4000bde0: 11 10 00 d3 sethi %hi(0x40034c00), %o0 <== NOT EXECUTED } 4000bde4: 81 c3 e0 08 retl <== NOT EXECUTED 4000bde8: 90 12 23 7c or %o0, 0x37c, %o0 ! 40034f7c <== NOT EXECUTED =============================================================================== 4000af50 : { 4000af50: 9d e3 bf a0 save %sp, -96, %sp if (ELF_ST_TYPE(sym->st_info) == STT_NOTYPE) 4000af54: c2 0e 60 0c ldub [ %i1 + 0xc ], %g1 4000af58: 80 88 60 0f btst 0xf, %g1 4000af5c: 32 80 00 0e bne,a 4000af94 4000af60: d2 16 60 0e lduh [ %i1 + 0xe ], %o1 rtems_rtl_obj_sym* symbol = rtems_rtl_symbol_obj_find (obj, symname); 4000af64: 92 10 00 1a mov %i2, %o1 4000af68: 40 00 15 3c call 40010458 4000af6c: 90 10 00 18 mov %i0, %o0 if (!symbol) 4000af70: 80 a2 20 00 cmp %o0, 0 4000af74: 02 80 00 15 be 4000afc8 4000af78: 94 10 00 1a mov %i2, %o2 *value = (Elf_Addr) symbol->value; 4000af7c: c2 02 20 0c ld [ %o0 + 0xc ], %g1 4000af80: c2 26 c0 00 st %g1, [ %i3 ] return true; 4000af84: b0 10 20 01 mov 1, %i0 } 4000af88: b0 0e 20 01 and %i0, 1, %i0 4000af8c: 81 c7 e0 08 ret 4000af90: 81 e8 00 00 restore sect = rtems_rtl_obj_find_section_by_index (obj, sym->st_shndx); 4000af94: 40 00 0d c4 call 4000e6a4 4000af98: 90 10 00 18 mov %i0, %o0 if (!sect) 4000af9c: 80 a2 20 00 cmp %o0, 0 4000afa0: 22 80 00 12 be,a 4000afe8 <== NEVER TAKEN 4000afa4: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED *value = sym->st_value + (Elf_Addr) sect->base; 4000afa8: c2 02 20 30 ld [ %o0 + 0x30 ], %g1 4000afac: c4 06 60 04 ld [ %i1 + 4 ], %g2 4000afb0: 82 00 40 02 add %g1, %g2, %g1 4000afb4: c2 26 c0 00 st %g1, [ %i3 ] return true; 4000afb8: b0 10 20 01 mov 1, %i0 } 4000afbc: b0 0e 20 01 and %i0, 1, %i0 4000afc0: 81 c7 e0 08 ret 4000afc4: 81 e8 00 00 restore rtems_rtl_set_error (EINVAL, "global symbol not found: %s", symname); 4000afc8: 90 10 20 16 mov 0x16, %o0 4000afcc: 13 10 00 c1 sethi %hi(0x40030400), %o1 return false; 4000afd0: b0 10 20 00 clr %i0 rtems_rtl_set_error (EINVAL, "global symbol not found: %s", symname); 4000afd4: 40 00 03 86 call 4000bdec 4000afd8: 92 12 63 80 or %o1, 0x380, %o1 4000afdc: b0 0e 20 01 and %i0, 1, %i0 4000afe0: 81 c7 e0 08 ret 4000afe4: 81 e8 00 00 restore rtems_rtl_set_error (EINVAL, "reloc symbol's section not found"); 4000afe8: 13 10 00 c1 sethi %hi(0x40030400), %o1 <== NOT EXECUTED 4000afec: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000aff0: 40 00 03 7f call 4000bdec <== NOT EXECUTED 4000aff4: 92 12 63 a0 or %o1, 0x3a0, %o1 <== NOT EXECUTED 4000aff8: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 4000affc: 81 c7 e0 08 ret <== NOT EXECUTED 4000b000: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000c2ac : const Elf_Rel* rel, const rtems_rtl_obj_sect* sect, const char* symname, const Elf_Byte syminfo, const Elf_Word symvalue) { 4000c2ac: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED printf ("rtl: rel type record not supported; please report\n"); return false; } 4000c2b0: b0 10 20 00 clr %i0 <== NOT EXECUTED printf ("rtl: rel type record not supported; please report\n"); 4000c2b4: 11 10 00 c2 sethi %hi(0x40030800), %o0 <== NOT EXECUTED 4000c2b8: 40 00 31 b3 call 40018984 <__wrap_puts> <== NOT EXECUTED 4000c2bc: 90 12 23 78 or %o0, 0x378, %o0 ! 40030b78 <== NOT EXECUTED } 4000c2c0: 81 c7 e0 08 ret <== NOT EXECUTED 4000c2c4: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000c094 : const Elf_Rela* rela, const rtems_rtl_obj_sect* sect, const char* symname, const Elf_Byte syminfo, const Elf_Word symvalue) { 4000c094: 9d e3 bf a0 save %sp, -96, %sp Elf_Word type, value, mask; Elf_Addr tmp = 0; where = (Elf_Addr *) (sect->base + rela->r_offset); type = ELF_R_TYPE(rela->r_info); 4000c098: c4 0e 60 07 ldub [ %i1 + 7 ], %g2 /* We do JMP_SLOTs in _rtld_bind() below */ if (type == R_TYPE(JMP_SLOT)) return true; /* COPY relocs are also handled elsewhere */ if (type == R_TYPE(COPY)) 4000c09c: 82 00 bf ed add %g2, -19, %g1 4000c0a0: 82 08 7f fd and %g1, -3, %g1 4000c0a4: 80 a0 00 01 cmp %g0, %g1 4000c0a8: 82 60 3f ff subx %g0, -1, %g1 if (type == R_TYPE(NONE)) 4000c0ac: 80 a0 00 02 cmp %g0, %g2 4000c0b0: 86 60 3f ff subx %g0, -1, %g3 4000c0b4: 82 10 40 03 or %g1, %g3, %g1 if (type == R_TYPE(COPY)) 4000c0b8: 80 a0 60 00 cmp %g1, 0 4000c0bc: 02 80 00 06 be 4000c0d4 <== ALWAYS TAKEN 4000c0c0: b8 10 00 01 mov %g1, %i4 return true; 4000c0c4: b8 10 20 01 mov 1, %i4 4000c0c8: b0 0f 20 ff and %i4, 0xff, %i0 printf ("rtl: %s %p @ %p in %s\n", reloc_names[ELF_R_TYPE(rela->r_info)], (void *)tmp, where, rtems_rtl_obj_oname (obj)); return true; } 4000c0cc: 81 c7 e0 08 ret 4000c0d0: 81 e8 00 00 restore if (type > R_TYPE(6)) 4000c0d4: 80 a0 a0 2d cmp %g2, 0x2d 4000c0d8: 18 bf ff fc bgu 4000c0c8 <== NEVER TAKEN 4000c0dc: 80 a0 a0 16 cmp %g2, 0x16 where = (Elf_Addr *) (sect->base + rela->r_offset); 4000c0e0: c2 06 a0 30 ld [ %i2 + 0x30 ], %g1 4000c0e4: c6 06 40 00 ld [ %i1 ], %g3 4000c0e8: a2 00 40 03 add %g1, %g3, %l1 if (type == R_TYPE (RELATIVE)) { 4000c0ec: 02 80 00 5f be 4000c268 <== NEVER TAKEN 4000c0f0: e0 06 60 08 ld [ %i1 + 8 ], %l0 if (RELOC_RESOLVE_SYMBOL (type)) { 4000c0f4: b9 28 a0 02 sll %g2, 2, %i4 4000c0f8: 05 10 00 c3 sethi %hi(0x40030c00), %g2 4000c0fc: 84 10 a1 68 or %g2, 0x168, %g2 ! 40030d68 4000c100: f6 00 80 1c ld [ %g2 + %i4 ], %i3 4000c104: 80 a6 e0 00 cmp %i3, 0 4000c108: 26 80 00 02 bl,a 4000c110 <== ALWAYS TAKEN 4000c10c: a0 04 00 1d add %l0, %i5, %l0 if (RELOC_PC_RELATIVE (type)) { 4000c110: 05 08 00 00 sethi %hi(0x20000000), %g2 4000c114: 80 8e c0 02 btst %i3, %g2 4000c118: 32 80 00 02 bne,a 4000c120 4000c11c: a0 24 00 11 sub %l0, %l1, %l0 if (RELOC_BASE_RELATIVE (type)) { 4000c120: 05 02 00 00 sethi %hi(0x8000000), %g2 4000c124: 80 8e c0 02 btst %i3, %g2 4000c128: 22 80 00 08 be,a 4000c148 <== ALWAYS TAKEN 4000c12c: 03 10 00 c2 sethi %hi(0x40030800), %g1 if (value != 0 && *where != 0) { 4000c130: 80 a4 20 00 cmp %l0, 0 <== NOT EXECUTED 4000c134: 12 80 00 38 bne 4000c214 <== NOT EXECUTED 4000c138: c4 04 40 00 ld [ %l1 ], %g2 <== NOT EXECUTED value += (Elf_Word)(sect->base + *where); 4000c13c: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4000c140: a0 04 00 01 add %l0, %g1, %l0 <== NOT EXECUTED mask = RELOC_VALUE_BITMASK (type); 4000c144: 03 10 00 c2 sethi %hi(0x40030800), %g1 <== NOT EXECUTED 4000c148: 82 10 63 ac or %g1, 0x3ac, %g1 ! 40030bac 4000c14c: f8 00 40 1c ld [ %g1 + %i4 ], %i4 value >>= RELOC_VALUE_RIGHTSHIFT (type); 4000c150: bb 34 00 1b srl %l0, %i3, %i5 if (RELOC_UNALIGNED(type)) { 4000c154: 03 01 00 00 sethi %hi(0x4000000), %g1 4000c158: 80 8e c0 01 btst %i3, %g1 4000c15c: 02 80 00 29 be 4000c200 4000c160: ba 0f 00 1d and %i4, %i5, %i5 int i, size = RELOC_TARGET_SIZE (type) / 8; 4000c164: 83 36 e0 0b srl %i3, 0xb, %g1 4000c168: 82 08 60 1f and %g1, 0x1f, %g1 for (i = size - 1; i >= 0; i--) 4000c16c: 82 00 7f ff add %g1, -1, %g1 4000c170: 80 a0 7f ff cmp %g1, -1 4000c174: 02 80 00 10 be 4000c1b4 <== NEVER TAKEN 4000c178: 86 10 00 01 mov %g1, %g3 Elf_Addr tmp = 0; 4000c17c: 84 10 20 00 clr %g2 tmp = (tmp << 8) | ptr[i]; 4000c180: c8 4c 40 03 ldsb [ %l1 + %g3 ], %g4 4000c184: 85 28 a0 08 sll %g2, 8, %g2 for (i = size - 1; i >= 0; i--) 4000c188: 86 00 ff ff add %g3, -1, %g3 4000c18c: 80 a0 ff ff cmp %g3, -1 4000c190: 12 bf ff fc bne 4000c180 4000c194: 84 11 00 02 or %g4, %g2, %g2 tmp &= ~mask; 4000c198: 84 28 80 1c andn %g2, %i4, %g2 tmp |= value; 4000c19c: ba 17 40 02 or %i5, %g2, %i5 ptr[i] = tmp & 0xff; 4000c1a0: fa 2c 40 01 stb %i5, [ %l1 + %g1 ] for (i = size - 1; i >= 0; i--, tmp >>= 8) 4000c1a4: 82 00 7f ff add %g1, -1, %g1 4000c1a8: 80 a0 7f ff cmp %g1, -1 4000c1ac: 12 bf ff fd bne 4000c1a0 4000c1b0: bb 37 60 08 srl %i5, 8, %i5 if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000c1b4: 40 00 11 14 call 40010604 4000c1b8: 90 10 20 40 mov 0x40, %o0 4000c1bc: 80 a2 20 00 cmp %o0, 0 4000c1c0: 02 bf ff c1 be 4000c0c4 4000c1c4: b8 10 00 08 mov %o0, %i4 reloc_names[ELF_R_TYPE(rela->r_info)], 4000c1c8: c2 0e 60 07 ldub [ %i1 + 7 ], %g1 printf ("rtl: %s %p @ %p in %s\n", 4000c1cc: 83 28 60 02 sll %g1, 2, %g1 4000c1d0: d8 06 20 18 ld [ %i0 + 0x18 ], %o4 4000c1d4: 05 10 00 c3 sethi %hi(0x40030c00), %g2 4000c1d8: 84 10 a1 08 or %g2, 0x108, %g2 ! 40030d08 4000c1dc: d2 00 80 01 ld [ %g2 + %g1 ], %o1 4000c1e0: 96 10 00 11 mov %l1, %o3 4000c1e4: 94 10 00 1d mov %i5, %o2 4000c1e8: 11 10 00 c2 sethi %hi(0x40030800), %o0 4000c1ec: 40 00 31 d7 call 40018948 <__wrap_printf> 4000c1f0: 90 12 23 60 or %o0, 0x360, %o0 ! 40030b60 4000c1f4: b0 0f 20 ff and %i4, 0xff, %i0 4000c1f8: 81 c7 e0 08 ret 4000c1fc: 81 e8 00 00 restore *where &= ~mask; 4000c200: c2 04 40 00 ld [ %l1 ], %g1 4000c204: b8 28 40 1c andn %g1, %i4, %i4 *where |= value; 4000c208: ba 17 40 1c or %i5, %i4, %i5 4000c20c: 10 bf ff ea b 4000c1b4 4000c210: fa 24 40 00 st %i5, [ %l1 ] if (value != 0 && *where != 0) { 4000c214: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4000c218: 02 bf ff ca be 4000c140 <== NOT EXECUTED 4000c21c: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000c220: 40 00 10 f9 call 40010604 <== NOT EXECUTED 4000c224: 90 10 20 40 mov 0x40, %o0 <== NOT EXECUTED 4000c228: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000c22c: 32 80 00 05 bne,a 4000c240 <== NOT EXECUTED 4000c230: da 06 a0 30 ld [ %i2 + 0x30 ], %o5 <== NOT EXECUTED 4000c234: c2 06 a0 30 ld [ %i2 + 0x30 ], %g1 <== NOT EXECUTED 4000c238: 10 bf ff c1 b 4000c13c <== NOT EXECUTED 4000c23c: c4 04 40 00 ld [ %l1 ], %g2 <== NOT EXECUTED printf("rtl: reloc base_rel(%s): where=%p, *where 0x%lx, " 4000c240: d8 06 60 08 ld [ %i1 + 8 ], %o4 <== NOT EXECUTED 4000c244: d6 04 40 00 ld [ %l1 ], %o3 <== NOT EXECUTED 4000c248: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 <== NOT EXECUTED 4000c24c: 94 10 00 11 mov %l1, %o2 <== NOT EXECUTED 4000c250: 11 10 00 c2 sethi %hi(0x40030800), %o0 <== NOT EXECUTED 4000c254: 40 00 31 bd call 40018948 <__wrap_printf> <== NOT EXECUTED 4000c258: 90 12 23 18 or %o0, 0x318, %o0 ! 40030b18 <== NOT EXECUTED 4000c25c: c2 06 a0 30 ld [ %i2 + 0x30 ], %g1 <== NOT EXECUTED 4000c260: 10 bf ff b7 b 4000c13c <== NOT EXECUTED 4000c264: c4 04 40 00 ld [ %l1 ], %g2 <== NOT EXECUTED *where += (Elf_Addr)(sect->base + value); 4000c268: c4 00 40 03 ld [ %g1 + %g3 ], %g2 <== NOT EXECUTED 4000c26c: a0 00 40 10 add %g1, %l0, %l0 <== NOT EXECUTED 4000c270: a0 00 80 10 add %g2, %l0, %l0 <== NOT EXECUTED 4000c274: e0 20 40 03 st %l0, [ %g1 + %g3 ] <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000c278: 40 00 10 e3 call 40010604 <== NOT EXECUTED 4000c27c: 90 10 20 40 mov 0x40, %o0 <== NOT EXECUTED 4000c280: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000c284: 02 bf ff 90 be 4000c0c4 <== NOT EXECUTED 4000c288: b8 10 00 08 mov %o0, %i4 <== NOT EXECUTED printf ("rtl: reloc relative in %s --> %p", 4000c28c: d4 04 40 00 ld [ %l1 ], %o2 <== NOT EXECUTED 4000c290: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 <== NOT EXECUTED 4000c294: 11 10 00 c2 sethi %hi(0x40030800), %o0 <== NOT EXECUTED 4000c298: 40 00 31 ac call 40018948 <__wrap_printf> <== NOT EXECUTED 4000c29c: 90 12 22 f0 or %o0, 0x2f0, %o0 ! 40030af0 <== NOT EXECUTED 4000c2a0: b0 0f 20 ff and %i4, 0xff, %i0 <== NOT EXECUTED 4000c2a4: 81 c7 e0 08 ret <== NOT EXECUTED 4000c2a8: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40010edc : bool rtems_rtl_elf_unwind_dw2_deregister (const rtems_rtl_obj* obj) { 40010edc: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_obj_sect* sect = rtems_rtl_obj_find_section (obj, ".eh_frame"); 40010ee0: 13 10 00 c6 sethi %hi(0x40031800), %o1 40010ee4: 90 10 00 18 mov %i0, %o0 40010ee8: 7f ff f5 e4 call 4000e678 40010eec: 92 12 63 60 or %o1, 0x360, %o1 if (sect != NULL && sect->size > 0 && sect->base != NULL) 40010ef0: 80 a2 20 00 cmp %o0, 0 40010ef4: 02 80 00 0c be 40010f24 40010ef8: 01 00 00 00 nop 40010efc: c2 02 20 10 ld [ %o0 + 0x10 ], %g1 40010f00: 80 a0 60 00 cmp %g1, 0 40010f04: 02 80 00 08 be 40010f24 <== NEVER TAKEN 40010f08: 01 00 00 00 nop 40010f0c: d0 02 20 30 ld [ %o0 + 0x30 ], %o0 40010f10: 80 a2 20 00 cmp %o0, 0 40010f14: 02 80 00 04 be 40010f24 <== NEVER TAKEN 40010f18: 01 00 00 00 nop { __deregister_frame (sect->base); 40010f1c: 7f ff c9 17 call 40003378 <__deregister_frame> 40010f20: 01 00 00 00 nop } return true; } 40010f24: 81 c7 e0 08 ret 40010f28: 91 e8 20 01 restore %g0, 1, %o0 =============================================================================== 40010e8c : bool rtems_rtl_elf_unwind_dw2_register (const rtems_rtl_obj* obj) { 40010e8c: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_obj_sect* sect = rtems_rtl_obj_find_section (obj, ".eh_frame"); 40010e90: 13 10 00 c6 sethi %hi(0x40031800), %o1 40010e94: 90 10 00 18 mov %i0, %o0 40010e98: 7f ff f5 f8 call 4000e678 40010e9c: 92 12 63 60 or %o1, 0x360, %o1 if (sect != NULL && sect->size > 0 && sect->base != NULL) 40010ea0: 80 a2 20 00 cmp %o0, 0 40010ea4: 02 80 00 0c be 40010ed4 40010ea8: 01 00 00 00 nop 40010eac: c2 02 20 10 ld [ %o0 + 0x10 ], %g1 40010eb0: 80 a0 60 00 cmp %g1, 0 40010eb4: 02 80 00 08 be 40010ed4 <== NEVER TAKEN 40010eb8: 01 00 00 00 nop 40010ebc: d0 02 20 30 ld [ %o0 + 0x30 ], %o0 40010ec0: 80 a2 20 00 cmp %o0, 0 40010ec4: 02 80 00 04 be 40010ed4 <== NEVER TAKEN 40010ec8: 01 00 00 00 nop { __register_frame (sect->base); 40010ecc: 7f ff c8 ba call 400031b4 <__register_frame> 40010ed0: 01 00 00 00 nop } return true; } 40010ed4: 81 c7 e0 08 ret 40010ed8: 91 e8 20 01 restore %g0, 1, %o0 =============================================================================== 4000be8c : bool rtems_rtl_find_file (const char* name, const char* paths, const char** file_name, size_t* size) { 4000be8c: 9d e3 bf 40 save %sp, -192, %sp struct stat sb; *file_name = NULL; 4000be90: c0 26 80 00 clr [ %i2 ] *size = 0; 4000be94: c0 26 c0 00 clr [ %i3 ] if (rtems_filesystem_is_delimiter (name[0]) || (name[0] == '.')) 4000be98: c2 0e 00 00 ldub [ %i0 ], %g1 4000be9c: 86 00 7f d2 add %g1, -46, %g3 4000bea0: 80 a0 e0 01 cmp %g3, 1 4000bea4: 08 80 00 03 bleu 4000beb0 <== ALWAYS TAKEN 4000bea8: 84 10 20 01 mov 1, %g2 4000beac: 84 10 20 00 clr %g2 <== NOT EXECUTED return c == '/' || c == '\\'; 4000beb0: 83 28 60 18 sll %g1, 0x18, %g1 4000beb4: 83 38 60 18 sra %g1, 0x18, %g1 4000beb8: 82 18 60 5c xor %g1, 0x5c, %g1 4000bebc: 80 a0 00 01 cmp %g0, %g1 4000bec0: 82 60 3f ff subx %g0, -1, %g1 4000bec4: 82 10 40 02 or %g1, %g2, %g1 4000bec8: 80 88 60 01 btst 1, %g1 4000becc: 02 80 00 11 be 4000bf10 <== NEVER TAKEN 4000bed0: a8 10 00 01 mov %g1, %l4 { if (stat (name, &sb) == 0) 4000bed4: 92 07 bf a0 add %fp, -96, %o1 4000bed8: 7f ff f2 d0 call 40008a18 4000bedc: 90 10 00 18 mov %i0, %o0 4000bee0: 80 a2 20 00 cmp %o0, 0 4000bee4: 02 80 00 58 be 4000c044 <== ALWAYS TAKEN 4000bee8: 01 00 00 00 nop 4000beec: fa 06 80 00 ld [ %i2 ], %i5 <== NOT EXECUTED if (start != end) ++start; } } if (!*file_name) 4000bef0: 80 a7 60 00 cmp %i5, 0 4000bef4: 02 80 00 50 be 4000c034 <== NEVER TAKEN 4000bef8: c2 07 bf c4 ld [ %fp + -60 ], %g1 return false; *size = sb.st_size; 4000befc: c2 26 c0 00 st %g1, [ %i3 ] return true; 4000bf00: a8 10 20 01 mov 1, %l4 } 4000bf04: b0 0d 20 ff and %l4, 0xff, %i0 4000bf08: 81 c7 e0 08 ret 4000bf0c: 81 e8 00 00 restore else if (paths) 4000bf10: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 4000bf14: 22 80 00 49 be,a 4000c038 <== NOT EXECUTED 4000bf18: a8 10 20 00 clr %l4 <== NOT EXECUTED end = start + strlen (paths); 4000bf1c: 40 00 43 50 call 4001cc5c <== NOT EXECUTED 4000bf20: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED printf ("rtl: find-file: path: %s\n", fname); 4000bf24: 2d 10 00 c2 sethi %hi(0x40030800), %l6 <== NOT EXECUTED end = start + strlen (paths); 4000bf28: a2 06 40 08 add %i1, %o0, %l1 <== NOT EXECUTED while (!*file_name && (start != end)) 4000bf2c: ba 10 20 00 clr %i5 <== NOT EXECUTED len = strlen (name); 4000bf30: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4000bf34: 40 00 43 4a call 4001cc5c <== NOT EXECUTED 4000bf38: aa 10 20 2f mov 0x2f, %l5 <== NOT EXECUTED printf ("rtl: find-file: path: %s\n", fname); 4000bf3c: ac 15 a2 d0 or %l6, 0x2d0, %l6 <== NOT EXECUTED len = strlen (name); 4000bf40: a6 10 00 08 mov %o0, %l3 <== NOT EXECUTED while (!*file_name && (start != end)) 4000bf44: 80 a6 40 11 cmp %i1, %l1 <== NOT EXECUTED 4000bf48: 02 bf ff eb be 4000bef4 <== NOT EXECUTED 4000bf4c: 80 a7 60 00 cmp %i5, 0 <== NOT EXECUTED 4000bf50: 12 bf ff e8 bne 4000bef0 <== NOT EXECUTED 4000bf54: 92 10 20 3a mov 0x3a, %o1 <== NOT EXECUTED const char* delimiter = strchr (start, ':'); 4000bf58: 40 00 40 a2 call 4001c1e0 <== NOT EXECUTED 4000bf5c: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED if (delimiter == NULL) 4000bf60: b8 92 20 00 orcc %o0, 0, %i4 <== NOT EXECUTED 4000bf64: 22 80 00 02 be,a 4000bf6c <== NOT EXECUTED 4000bf68: b8 10 00 11 mov %l1, %i4 <== NOT EXECUTED (delimiter - start) + 1 + len + 1, true); 4000bf6c: a0 27 00 19 sub %i4, %i1, %l0 <== NOT EXECUTED fname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000bf70: 94 10 20 01 mov 1, %o2 <== NOT EXECUTED (delimiter - start) + 1 + len + 1, true); 4000bf74: a4 04 20 01 add %l0, 1, %l2 <== NOT EXECUTED fname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000bf78: 90 10 20 00 clr %o0 <== NOT EXECUTED (delimiter - start) + 1 + len + 1, true); 4000bf7c: 92 04 80 13 add %l2, %l3, %o1 <== NOT EXECUTED fname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000bf80: 7f ff f9 29 call 4000a424 <== NOT EXECUTED 4000bf84: 92 02 60 01 inc %o1 <== NOT EXECUTED if (!fname) 4000bf88: ba 92 20 00 orcc %o0, 0, %i5 <== NOT EXECUTED 4000bf8c: 02 80 00 33 be 4000c058 <== NOT EXECUTED 4000bf90: 94 10 00 10 mov %l0, %o2 <== NOT EXECUTED memcpy (fname, start, delimiter - start); 4000bf94: 40 00 3b 74 call 4001ad64 <== NOT EXECUTED 4000bf98: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED fname[delimiter - start] = '/'; 4000bf9c: ea 2f 40 10 stb %l5, [ %i5 + %l0 ] <== NOT EXECUTED memcpy (fname + (delimiter - start) + 1, name, len); 4000bfa0: 94 10 00 13 mov %l3, %o2 <== NOT EXECUTED 4000bfa4: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED 4000bfa8: 40 00 3b 6f call 4001ad64 <== NOT EXECUTED 4000bfac: 90 07 40 12 add %i5, %l2, %o0 <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000bfb0: 40 00 11 95 call 40010604 <== NOT EXECUTED 4000bfb4: 90 10 20 04 mov 4, %o0 <== NOT EXECUTED 4000bfb8: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000bfbc: 12 80 00 10 bne 4000bffc <== NOT EXECUTED 4000bfc0: 92 07 bf a0 add %fp, -96, %o1 <== NOT EXECUTED if (stat (fname, &sb) < 0) 4000bfc4: 7f ff f2 95 call 40008a18 <== NOT EXECUTED 4000bfc8: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4000bfcc: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000bfd0: 06 80 00 15 bl 4000c024 <== NOT EXECUTED 4000bfd4: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED *file_name = fname; 4000bfd8: fa 26 80 00 st %i5, [ %i2 ] <== NOT EXECUTED if (start != end) 4000bfdc: 80 a7 00 11 cmp %i4, %l1 <== NOT EXECUTED 4000bfe0: 02 bf ff d9 be 4000bf44 <== NOT EXECUTED 4000bfe4: b2 10 00 11 mov %l1, %i1 <== NOT EXECUTED ++start; 4000bfe8: b2 07 20 01 add %i4, 1, %i1 <== NOT EXECUTED while (!*file_name && (start != end)) 4000bfec: 80 a6 40 11 cmp %i1, %l1 <== NOT EXECUTED 4000bff0: 12 bf ff d8 bne 4000bf50 <== NOT EXECUTED 4000bff4: 80 a7 60 00 cmp %i5, 0 <== NOT EXECUTED 4000bff8: 30 bf ff bf b,a 4000bef4 <== NOT EXECUTED printf ("rtl: find-file: path: %s\n", fname); 4000bffc: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED 4000c000: 40 00 32 52 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000c004: 90 10 00 16 mov %l6, %o0 <== NOT EXECUTED if (stat (fname, &sb) < 0) 4000c008: 92 07 bf a0 add %fp, -96, %o1 <== NOT EXECUTED 4000c00c: 7f ff f2 83 call 40008a18 <== NOT EXECUTED 4000c010: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4000c014: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000c018: 36 bf ff f1 bge,a 4000bfdc <== NOT EXECUTED 4000c01c: fa 26 80 00 st %i5, [ %i2 ] <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, fname); 4000c020: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED 4000c024: 7f ff f9 29 call 4000a4c8 <== NOT EXECUTED 4000c028: 90 10 20 00 clr %o0 <== NOT EXECUTED 4000c02c: 10 bf ff ec b 4000bfdc <== NOT EXECUTED 4000c030: fa 06 80 00 ld [ %i2 ], %i5 <== NOT EXECUTED return false; 4000c034: a8 10 20 00 clr %l4 <== NOT EXECUTED } 4000c038: b0 0d 20 ff and %l4, 0xff, %i0 <== NOT EXECUTED 4000c03c: 81 c7 e0 08 ret <== NOT EXECUTED 4000c040: 81 e8 00 00 restore <== NOT EXECUTED *file_name = rtems_rtl_strdup (name); 4000c044: 40 00 0f d1 call 4000ff88 4000c048: 90 10 00 18 mov %i0, %o0 4000c04c: ba 10 00 08 mov %o0, %i5 4000c050: 10 bf ff a8 b 4000bef0 4000c054: d0 26 80 00 st %o0, [ %i2 ] rtems_rtl_set_error (ENOMEM, "no memory searching for file"); 4000c058: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000c05c: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED 4000c060: 7f ff ff 63 call 4000bdec <== NOT EXECUTED 4000c064: 92 12 62 b0 or %o1, 0x2b0, %o1 ! 40030ab0 <== NOT EXECUTED 4000c068: b0 0d 20 ff and %l4, 0xff, %i0 <== NOT EXECUTED 4000c06c: 81 c7 e0 08 ret <== NOT EXECUTED 4000c070: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000c8a8 : { 4000c8a8: 9d e3 bf 90 save %sp, -112, %sp const char* aname = NULL; 4000c8ac: c0 27 bf f0 clr [ %fp + -16 ] if (!rtems_rtl_parse_name (name, &aname, &oname, &ooffset)) 4000c8b0: 96 07 bf f8 add %fp, -8, %o3 const char* oname = NULL; 4000c8b4: c0 27 bf f4 clr [ %fp + -12 ] if (!rtems_rtl_parse_name (name, &aname, &oname, &ooffset)) 4000c8b8: 94 07 bf f4 add %fp, -12, %o2 4000c8bc: 92 07 bf f0 add %fp, -16, %o1 4000c8c0: 40 00 04 e7 call 4000dc5c 4000c8c4: 90 10 00 18 mov %i0, %o0 4000c8c8: 80 a2 20 00 cmp %o0, 0 4000c8cc: 02 80 00 36 be 4000c9a4 <== NEVER TAKEN 4000c8d0: 03 10 00 d8 sethi %hi(0x40036000), %g1 node = rtems_chain_first (&rtl->objects); 4000c8d4: f8 00 61 e4 ld [ %g1 + 0x1e4 ], %i4 ! 400361e4 return _Chain_Immutable_head( the_chain )->next; 4000c8d8: f0 07 20 64 ld [ %i4 + 0x64 ], %i0 return &the_chain->Tail.Node; 4000c8dc: b8 07 20 68 add %i4, 0x68, %i4 while (!rtems_chain_is_tail (&rtl->objects, node)) 4000c8e0: 80 a6 00 1c cmp %i0, %i4 4000c8e4: 02 80 00 25 be 4000c978 <== NEVER TAKEN 4000c8e8: fa 07 bf f0 ld [ %fp + -16 ], %i5 strcmp (obj->aname, aname) == 0 && strcmp (obj->oname, oname) == 0)) 4000c8ec: 10 80 00 11 b 4000c930 4000c8f0: f6 07 bf f4 ld [ %fp + -12 ], %i3 4000c8f4: 40 00 3e ad call 4001c3a8 <== NOT EXECUTED 4000c8f8: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED (aname != NULL && 4000c8fc: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000c900: 32 80 00 09 bne,a 4000c924 <== NOT EXECUTED 4000c904: f0 06 00 00 ld [ %i0 ], %i0 <== NOT EXECUTED strcmp (obj->aname, aname) == 0 && strcmp (obj->oname, oname) == 0)) 4000c908: d0 06 20 18 ld [ %i0 + 0x18 ], %o0 <== NOT EXECUTED 4000c90c: 40 00 3e a7 call 4001c3a8 <== NOT EXECUTED 4000c910: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 4000c914: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000c918: 02 80 00 21 be 4000c99c <== NOT EXECUTED 4000c91c: 01 00 00 00 nop <== NOT EXECUTED 4000c920: f0 06 00 00 ld [ %i0 ], %i0 <== NOT EXECUTED while (!rtems_chain_is_tail (&rtl->objects, node)) 4000c924: 80 a6 00 1c cmp %i0, %i4 4000c928: 02 80 00 15 be 4000c97c 4000c92c: 80 a7 60 00 cmp %i5, 0 if ((aname == NULL && strcmp (obj->oname, oname) == 0) || 4000c930: 80 a7 60 00 cmp %i5, 0 4000c934: 32 bf ff f0 bne,a 4000c8f4 <== NEVER TAKEN 4000c938: d0 06 20 1c ld [ %i0 + 0x1c ], %o0 <== NOT EXECUTED 4000c93c: d0 06 20 18 ld [ %i0 + 0x18 ], %o0 4000c940: 40 00 3e 9a call 4001c3a8 4000c944: 92 10 00 1b mov %i3, %o1 4000c948: 80 a2 20 00 cmp %o0, 0 4000c94c: 32 bf ff f6 bne,a 4000c924 <== ALWAYS TAKEN 4000c950: f0 06 00 00 ld [ %i0 ], %i0 rtems_rtl_alloc_del(RTEMS_RTL_ALLOC_OBJECT, (void*) aname); 4000c954: 92 10 20 00 clr %o1 4000c958: 7f ff f6 dc call 4000a4c8 4000c95c: 90 10 20 00 clr %o0 4000c960: c2 07 bf f4 ld [ %fp + -12 ], %g1 if (!oname) 4000c964: 80 a0 60 00 cmp %g1, 0 4000c968: 02 80 00 0b be 4000c994 <== NEVER TAKEN 4000c96c: 92 10 20 00 clr %o1 } 4000c970: 81 c7 e0 08 ret 4000c974: 81 e8 00 00 restore if (!aname) 4000c978: 80 a7 60 00 cmp %i5, 0 <== NOT EXECUTED 4000c97c: 02 80 00 0c be 4000c9ac <== ALWAYS TAKEN 4000c980: c2 07 bf f4 ld [ %fp + -12 ], %g1 if (!oname) 4000c984: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000c988: 12 bf ff fa bne 4000c970 <== NOT EXECUTED 4000c98c: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_alloc_del(RTEMS_RTL_ALLOC_OBJECT, (void*) oname); 4000c990: 92 10 20 00 clr %o1 <== NOT EXECUTED 4000c994: 7f ff f6 cd call 4000a4c8 <== NOT EXECUTED 4000c998: 90 10 20 00 clr %o0 <== NOT EXECUTED 4000c99c: 81 c7 e0 08 ret <== NOT EXECUTED 4000c9a0: 81 e8 00 00 restore <== NOT EXECUTED } 4000c9a4: 81 c7 e0 08 ret <== NOT EXECUTED 4000c9a8: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED 4000c9ac: 10 bf ff ea b 4000c954 4000c9b0: b0 10 20 00 clr %i0 =============================================================================== 4000be34 : int rtems_rtl_get_error (char* message, size_t max_message) { 4000be34: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_data* rtl = rtems_rtl_lock (); 4000be38: 40 00 01 7f call 4000c434 4000be3c: 01 00 00 00 nop if (rtl != NULL) 4000be40: 80 a2 20 00 cmp %o0, 0 4000be44: 02 80 00 0a be 4000be6c <== NEVER TAKEN 4000be48: 94 10 00 19 mov %i1, %o2 { int last_errno = rtl->last_errno; strlcpy (message, rtl->last_error, max_message); 4000be4c: 92 02 21 24 add %o0, 0x124, %o1 int last_errno = rtl->last_errno; 4000be50: fa 02 21 20 ld [ %o0 + 0x120 ], %i5 strlcpy (message, rtl->last_error, max_message); 4000be54: 40 00 43 67 call 4001cbf0 4000be58: 90 10 00 18 mov %i0, %o0 rtems_rtl_unlock (); 4000be5c: 40 00 02 7b call 4000c848 4000be60: b0 10 00 1d mov %i5, %i0 } strncpy(message, "RTL init error", max_message); return EIO; } 4000be64: 81 c7 e0 08 ret 4000be68: 81 e8 00 00 restore strncpy(message, "RTL init error", max_message); 4000be6c: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED return EIO; 4000be70: ba 10 20 05 mov 5, %i5 <== NOT EXECUTED strncpy(message, "RTL init error", max_message); 4000be74: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED } 4000be78: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED strncpy(message, "RTL init error", max_message); 4000be7c: 40 00 43 f2 call 4001ce44 <== NOT EXECUTED 4000be80: 92 12 62 a0 or %o1, 0x2a0, %o1 <== NOT EXECUTED } 4000be84: 81 c7 e0 08 ret <== NOT EXECUTED 4000be88: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000c2ec : return rtl; } rtems_rtl_symbols* rtems_rtl_global_symbols (void) { 4000c2ec: 9d e3 bf a0 save %sp, -96, %sp if (!rtl) 4000c2f0: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000c2f4: c2 00 61 e4 ld [ %g1 + 0x1e4 ], %g1 ! 400361e4 4000c2f8: 80 a0 60 00 cmp %g1, 0 4000c2fc: 12 80 00 07 bne 4000c318 <== ALWAYS TAKEN 4000c300: b0 00 60 74 add %g1, 0x74, %i0 { rtems_rtl_set_error (ENOENT, "no rtl"); 4000c304: 90 10 20 02 mov 2, %o0 <== NOT EXECUTED 4000c308: 13 10 00 c3 sethi %hi(0x40030c00), %o1 <== NOT EXECUTED return NULL; 4000c30c: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOENT, "no rtl"); 4000c310: 7f ff fe b7 call 4000bdec <== NOT EXECUTED 4000c314: 92 12 61 c8 or %o1, 0x1c8, %o1 <== NOT EXECUTED } return &rtl->globals; } 4000c318: 81 c7 e0 08 ret 4000c31c: 81 e8 00 00 restore =============================================================================== 4000c9b4 : { 4000c9b4: 9d e3 bf a0 save %sp, -96, %sp if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000c9b8: 40 00 0f 13 call 40010604 4000c9bc: 90 10 20 04 mov 4, %o0 4000c9c0: 80 a2 20 00 cmp %o0, 0 4000c9c4: 12 80 00 0e bne 4000c9fc 4000c9c8: 92 10 00 18 mov %i0, %o1 obj = rtems_rtl_find_obj (name); 4000c9cc: 7f ff ff b7 call 4000c8a8 4000c9d0: 90 10 00 18 mov %i0, %o0 if (!obj) 4000c9d4: ba 92 20 00 orcc %o0, 0, %i5 4000c9d8: 02 80 00 11 be 4000ca1c <== ALWAYS TAKEN 4000c9dc: 01 00 00 00 nop ++obj->users; 4000c9e0: c2 07 60 0c ld [ %i5 + 0xc ], %g1 <== NOT EXECUTED 4000c9e4: 82 00 60 01 inc %g1 <== NOT EXECUTED if (obj->users == 1) 4000c9e8: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4000c9ec: 02 80 00 28 be 4000ca8c <== NOT EXECUTED 4000c9f0: c2 27 60 0c st %g1, [ %i5 + 0xc ] <== NOT EXECUTED } 4000c9f4: 81 c7 e0 08 ret <== NOT EXECUTED 4000c9f8: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED printf ("rtl: loading '%s'\n", name); 4000c9fc: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000ca00: 40 00 2f d2 call 40018948 <__wrap_printf> 4000ca04: 90 12 21 f0 or %o0, 0x1f0, %o0 ! 40030df0 obj = rtems_rtl_find_obj (name); 4000ca08: 7f ff ff a8 call 4000c8a8 4000ca0c: 90 10 00 18 mov %i0, %o0 if (!obj) 4000ca10: ba 92 20 00 orcc %o0, 0, %i5 4000ca14: 32 bf ff f4 bne,a 4000c9e4 <== NEVER TAKEN 4000ca18: c2 07 60 0c ld [ %i5 + 0xc ], %g1 <== NOT EXECUTED obj = rtems_rtl_obj_alloc (); 4000ca1c: 40 00 04 39 call 4000db00 4000ca20: 01 00 00 00 nop if (obj == NULL) 4000ca24: b8 92 20 00 orcc %o0, 0, %i4 4000ca28: 22 80 00 2d be,a 4000cadc <== NEVER TAKEN 4000ca2c: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED if (!rtems_rtl_obj_find_file (obj, name)) 4000ca30: 40 00 06 aa call 4000e4d8 4000ca34: 92 10 00 18 mov %i0, %o1 4000ca38: 80 a2 20 00 cmp %o0, 0 4000ca3c: 02 80 00 23 be 4000cac8 <== NEVER TAKEN 4000ca40: 03 10 00 d8 sethi %hi(0x40036000), %g1 rtems_chain_append (&rtl->objects, &obj->link); 4000ca44: d0 00 61 e4 ld [ %g1 + 0x1e4 ], %o0 ! 400361e4 4000ca48: 92 10 00 1c mov %i4, %o1 4000ca4c: 40 00 15 cb call 40012178 4000ca50: 90 02 20 64 add %o0, 0x64, %o0 if (!rtems_rtl_obj_load (obj)) 4000ca54: 40 00 08 81 call 4000ec58 4000ca58: 90 10 00 1c mov %i4, %o0 4000ca5c: 80 a2 20 00 cmp %o0, 0 4000ca60: 02 80 00 1a be 4000cac8 <== NEVER TAKEN 4000ca64: 01 00 00 00 nop rtems_rtl_obj_caches_flush (); 4000ca68: 7f ff fe 57 call 4000c3c4 4000ca6c: ba 10 00 1c mov %i4, %i5 rtems_rtl_unresolved_resolve (); 4000ca70: 40 00 10 99 call 40010cd4 4000ca74: 01 00 00 00 nop ++obj->users; 4000ca78: c2 07 60 0c ld [ %i5 + 0xc ], %g1 4000ca7c: 82 00 60 01 inc %g1 if (obj->users == 1) 4000ca80: 80 a0 60 01 cmp %g1, 1 4000ca84: 12 bf ff dc bne 4000c9f4 <== NEVER TAKEN 4000ca88: c2 27 60 0c st %g1, [ %i5 + 0xc ] obj->flags |= RTEMS_RTL_OBJ_LOCKED; 4000ca8c: c2 07 60 08 ld [ %i5 + 8 ], %g1 4000ca90: 82 10 60 01 or %g1, 1, %g1 4000ca94: c2 27 60 08 st %g1, [ %i5 + 8 ] rtems_recursive_mutex_unlock (&rtl->lock); 4000ca98: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000ca9c: 40 00 1e e1 call 40014620 <_Mutex_recursive_Release> 4000caa0: d0 00 61 e4 ld [ %g1 + 0x1e4 ], %o0 ! 400361e4 rtems_rtl_obj_run_ctors (obj); 4000caa4: 40 00 08 65 call 4000ec38 4000caa8: 90 10 00 1d mov %i5, %o0 rtems_rtl_lock (); 4000caac: 7f ff fe 62 call 4000c434 4000cab0: b0 10 00 1d mov %i5, %i0 obj->flags &= ~RTEMS_RTL_OBJ_LOCKED; 4000cab4: c2 07 60 08 ld [ %i5 + 8 ], %g1 4000cab8: 82 08 7f fe and %g1, -2, %g1 4000cabc: c2 27 60 08 st %g1, [ %i5 + 8 ] } 4000cac0: 81 c7 e0 08 ret 4000cac4: 81 e8 00 00 restore rtems_rtl_obj_free (obj); 4000cac8: 40 00 04 1e call 4000db40 <== NOT EXECUTED 4000cacc: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED rtems_rtl_obj_caches_flush (); 4000cad0: 7f ff fe 3d call 4000c3c4 <== NOT EXECUTED 4000cad4: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED return NULL; 4000cad8: 30 bf ff fa b,a 4000cac0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for object descriptor"); 4000cadc: 13 10 00 c3 sethi %hi(0x40030c00), %o1 <== NOT EXECUTED 4000cae0: 7f ff fc c3 call 4000bdec <== NOT EXECUTED 4000cae4: 92 12 62 08 or %o1, 0x208, %o1 ! 40030e08 <== NOT EXECUTED return NULL; 4000cae8: 81 c7 e0 08 ret <== NOT EXECUTED 4000caec: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED =============================================================================== 4000c434 : rtems_rtl_data* rtems_rtl_lock (void) { 4000c434: 9d e3 bf a0 save %sp, -96, %sp if (!rtl) 4000c438: 3b 10 00 d8 sethi %hi(0x40036000), %i5 4000c43c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 ! 400361e4 4000c440: 80 a2 20 00 cmp %o0, 0 4000c444: 02 80 00 07 be 4000c460 4000c448: 01 00 00 00 nop static __inline void rtems_recursive_mutex_lock( rtems_recursive_mutex *mutex ) { _Mutex_recursive_Acquire( mutex ); 4000c44c: 40 00 20 50 call 4001458c <_Mutex_recursive_Acquire> 4000c450: 01 00 00 00 nop if (!rtems_rtl_data_init ()) return NULL; rtems_recursive_mutex_lock (&rtl->lock); return rtl; 4000c454: f0 07 61 e4 ld [ %i5 + 0x1e4 ], %i0 } 4000c458: 81 c7 e0 08 ret 4000c45c: 81 e8 00 00 restore rtems_libio_lock (); 4000c460: 7f ff ed 1c call 400078d0 4000c464: 01 00 00 00 nop if (!rtl) 4000c468: f0 07 61 e4 ld [ %i5 + 0x1e4 ], %i0 4000c46c: 80 a6 20 00 cmp %i0, 0 4000c470: 02 80 00 11 be 4000c4b4 <== ALWAYS TAKEN 4000c474: 03 10 00 d8 sethi %hi(0x40036000), %g1 rtems_libio_unlock (); 4000c478: 7f ff ed 1b call 400078e4 4000c47c: 01 00 00 00 nop } bool rtems_rtl_path_append (const char* path) { return rtems_rtl_path_update (false, path); 4000c480: 90 10 20 00 clr %o0 ! 0 4000c484: 13 10 00 c1 sethi %hi(0x40030400), %o1 4000c488: 40 00 00 91 call 4000c6cc 4000c48c: 92 12 61 20 or %o1, 0x120, %o1 ! 40030520 rtems_rtl_base_global_syms_init (); 4000c490: 7f ff d3 eb call 4000143c 4000c494: 01 00 00 00 nop static __inline void rtems_recursive_mutex_unlock( rtems_recursive_mutex *mutex ) { _Mutex_recursive_Release( mutex ); 4000c498: 40 00 20 62 call 40014620 <_Mutex_recursive_Release> 4000c49c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 _Mutex_recursive_Acquire( mutex ); 4000c4a0: 40 00 20 3b call 4001458c <_Mutex_recursive_Acquire> 4000c4a4: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 return rtl; 4000c4a8: f0 07 61 e4 ld [ %i5 + 0x1e4 ], %i0 } 4000c4ac: 81 c7 e0 08 ret 4000c4b0: 81 e8 00 00 restore if (rtl_data_init) 4000c4b4: c4 08 61 e0 ldub [ %g1 + 0x1e0 ], %g2 4000c4b8: 80 a0 a0 00 cmp %g2, 0 4000c4bc: 12 80 00 56 bne 4000c614 <== NEVER TAKEN 4000c4c0: 84 10 20 01 mov 1, %g2 rtl = malloc (sizeof (rtems_rtl_data)); 4000c4c4: 90 10 21 68 mov 0x168, %o0 4000c4c8: 7f ff ed ff call 40007cc4 4000c4cc: c4 28 61 e0 stb %g2, [ %g1 + 0x1e0 ] 4000c4d0: d0 27 61 e4 st %o0, [ %i5 + 0x1e4 ] if (!rtl) 4000c4d4: 80 a2 20 00 cmp %o0, 0 4000c4d8: 02 80 00 6a be 4000c680 <== NEVER TAKEN 4000c4dc: b8 10 00 08 mov %o0, %i4 *rtl = (rtems_rtl_data) { 0 }; 4000c4e0: 94 10 21 68 mov 0x168, %o2 4000c4e4: 40 00 3a aa call 4001af8c 4000c4e8: 92 10 20 00 clr %o1 rtems_rtl_alloc_initialise (&rtl->allocator); 4000c4ec: 7f ff f7 c0 call 4000a3ec 4000c4f0: 90 07 20 18 add %i4, 0x18, %o0 rtems_recursive_mutex_init (&rtl->lock, "Run-Time Linker"); 4000c4f4: c2 07 61 e4 ld [ %i5 + 0x1e4 ], %g1 const char *_name) { struct _Mutex_recursive_Control _init = _MUTEX_RECURSIVE_NAMED_INITIALIZER(_name); *_mutex = _init; 4000c4f8: c0 20 40 00 clr [ %g1 ] 4000c4fc: 05 10 00 c3 sethi %hi(0x40030c00), %g2 4000c500: c0 20 60 04 clr [ %g1 + 4 ] 4000c504: 84 10 a1 d0 or %g2, 0x1d0, %g2 4000c508: c0 20 60 08 clr [ %g1 + 8 ] 4000c50c: 90 10 00 01 mov %g1, %o0 4000c510: c4 20 60 10 st %g2, [ %g1 + 0x10 ] 4000c514: c0 20 60 0c clr [ %g1 + 0xc ] 4000c518: 40 00 20 1d call 4001458c <_Mutex_recursive_Acquire> 4000c51c: c0 20 60 14 clr [ %g1 + 0x14 ] rtems_chain_initialize_empty (&rtl->objects); 4000c520: c2 07 61 e4 ld [ %i5 + 0x1e4 ], %g1 return &the_chain->Tail.Node; 4000c524: 84 00 60 64 add %g1, 0x64, %g2 4000c528: 86 00 60 68 add %g1, 0x68, %g3 head->previous = NULL; 4000c52c: c0 20 60 68 clr [ %g1 + 0x68 ] if (!rtems_rtl_symbol_table_open (&rtl->globals, 4000c530: 92 10 20 20 mov 0x20, %o1 head->next = tail; 4000c534: c6 20 60 64 st %g3, [ %g1 + 0x64 ] 4000c538: 90 00 60 74 add %g1, 0x74, %o0 4000c53c: 40 00 0e c1 call 40010040 4000c540: c4 20 60 6c st %g2, [ %g1 + 0x6c ] 4000c544: 80 a2 20 00 cmp %o0, 0 4000c548: 02 80 00 31 be 4000c60c <== NEVER TAKEN 4000c54c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 if (!rtems_rtl_unresolved_table_open (&rtl->unresolved, 4000c550: 92 10 20 40 mov 0x40, %o1 4000c554: 40 00 10 a8 call 400107f4 4000c558: 90 02 20 7c add %o0, 0x7c, %o0 4000c55c: 80 a2 20 00 cmp %o0, 0 4000c560: 02 80 00 40 be 4000c660 <== NEVER TAKEN 4000c564: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 if (!rtems_rtl_obj_cache_open (&rtl->symbols, 4000c568: 92 10 28 00 mov 0x800, %o1 4000c56c: 40 00 01 bd call 4000cc60 4000c570: 90 02 20 98 add %o0, 0x98, %o0 4000c574: 80 a2 20 00 cmp %o0, 0 4000c578: 02 80 00 4a be 4000c6a0 <== NEVER TAKEN 4000c57c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 if (!rtems_rtl_obj_cache_open (&rtl->strings, 4000c580: 92 10 28 00 mov 0x800, %o1 4000c584: 40 00 01 b7 call 4000cc60 4000c588: 90 02 20 b8 add %o0, 0xb8, %o0 4000c58c: 80 a2 20 00 cmp %o0, 0 4000c590: 02 80 00 2e be 4000c648 <== NEVER TAKEN 4000c594: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 if (!rtems_rtl_obj_cache_open (&rtl->relocs, 4000c598: 92 10 28 00 mov 0x800, %o1 4000c59c: 40 00 01 b1 call 4000cc60 4000c5a0: 90 02 20 d8 add %o0, 0xd8, %o0 4000c5a4: 80 a2 20 00 cmp %o0, 0 4000c5a8: 02 80 00 25 be 4000c63c <== NEVER TAKEN 4000c5ac: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 if (!rtems_rtl_obj_comp_open (&rtl->decomp, 4000c5b0: 92 10 28 00 mov 0x800, %o1 4000c5b4: 40 00 03 3d call 4000d2a8 4000c5b8: 90 02 20 f8 add %o0, 0xf8, %o0 4000c5bc: 80 a2 20 00 cmp %o0, 0 4000c5c0: 02 80 00 1c be 4000c630 <== NEVER TAKEN 4000c5c4: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 rtl->base = rtems_rtl_obj_alloc (); 4000c5c8: 40 00 05 4e call 4000db00 4000c5cc: f8 07 61 e4 ld [ %i5 + 0x1e4 ], %i4 4000c5d0: d0 27 20 90 st %o0, [ %i4 + 0x90 ] if (!rtl->base) 4000c5d4: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 4000c5d8: f8 02 20 90 ld [ %o0 + 0x90 ], %i4 4000c5dc: 80 a7 20 00 cmp %i4, 0 4000c5e0: 02 80 00 11 be 4000c624 <== NEVER TAKEN 4000c5e4: 01 00 00 00 nop rtl->base->oname = rtems_rtl_strdup ("rtems-kernel"); 4000c5e8: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000c5ec: 40 00 0e 67 call 4000ff88 4000c5f0: 90 12 21 e0 or %o0, 0x1e0, %o0 ! 40030de0 rtems_chain_append (&rtl->objects, &rtl->base->link); 4000c5f4: c2 07 61 e4 ld [ %i5 + 0x1e4 ], %g1 rtl->base->oname = rtems_rtl_strdup ("rtems-kernel"); 4000c5f8: d0 27 20 18 st %o0, [ %i4 + 0x18 ] rtems_chain_append (&rtl->objects, &rtl->base->link); 4000c5fc: 90 00 60 64 add %g1, 0x64, %o0 4000c600: 40 00 16 de call 40012178 4000c604: d2 00 60 90 ld [ %g1 + 0x90 ], %o1 4000c608: 30 bf ff 9c b,a 4000c478 free (rtl); 4000c60c: 7f ff eb b2 call 400074d4 <== NOT EXECUTED 4000c610: 01 00 00 00 nop <== NOT EXECUTED rtems_libio_unlock (); 4000c614: 7f ff ec b4 call 400078e4 <== NOT EXECUTED 4000c618: 01 00 00 00 nop <== NOT EXECUTED 4000c61c: 81 c7 e0 08 ret <== NOT EXECUTED 4000c620: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_obj_comp_close (&rtl->decomp); 4000c624: 40 00 03 3f call 4000d320 <== NOT EXECUTED 4000c628: 90 02 20 f8 add %o0, 0xf8, %o0 <== NOT EXECUTED rtems_rtl_obj_cache_close (&rtl->relocs); 4000c62c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED 4000c630: 40 00 01 a7 call 4000cccc <== NOT EXECUTED 4000c634: 90 02 20 d8 add %o0, 0xd8, %o0 <== NOT EXECUTED rtems_rtl_obj_cache_close (&rtl->strings); 4000c638: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED 4000c63c: 40 00 01 a4 call 4000cccc <== NOT EXECUTED 4000c640: 90 02 20 b8 add %o0, 0xb8, %o0 <== NOT EXECUTED rtems_rtl_obj_cache_close (&rtl->symbols); 4000c644: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED 4000c648: 40 00 01 a1 call 4000cccc <== NOT EXECUTED 4000c64c: 90 02 20 98 add %o0, 0x98, %o0 <== NOT EXECUTED rtems_rtl_unresolved_table_close (&rtl->unresolved); 4000c650: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED 4000c654: 40 00 10 74 call 40010824 <== NOT EXECUTED 4000c658: 90 02 20 7c add %o0, 0x7c, %o0 <== NOT EXECUTED rtems_rtl_symbol_table_close (&rtl->globals); 4000c65c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED 4000c660: 40 00 0e a0 call 400100e0 <== NOT EXECUTED 4000c664: 90 02 20 74 add %o0, 0x74, %o0 <== NOT EXECUTED free (rtl); 4000c668: 7f ff eb 9b call 400074d4 <== NOT EXECUTED 4000c66c: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED rtems_libio_unlock (); 4000c670: 7f ff ec 9d call 400078e4 <== NOT EXECUTED 4000c674: 01 00 00 00 nop <== NOT EXECUTED 4000c678: 81 c7 e0 08 ret <== NOT EXECUTED 4000c67c: 81 e8 00 00 restore <== NOT EXECUTED rtems_libio_unlock (); 4000c680: 7f ff ec 99 call 400078e4 <== NOT EXECUTED 4000c684: 01 00 00 00 nop <== NOT EXECUTED errno = ENOMEM; 4000c688: 40 00 38 bb call 4001a974 <__errno> <== NOT EXECUTED 4000c68c: 01 00 00 00 nop <== NOT EXECUTED 4000c690: 82 10 20 0c mov 0xc, %g1 ! c <_TLS_Alignment+0xb> <== NOT EXECUTED 4000c694: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000c698: 81 c7 e0 08 ret <== NOT EXECUTED 4000c69c: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_symbol_table_close (&rtl->globals); 4000c6a0: 40 00 0e 90 call 400100e0 <== NOT EXECUTED 4000c6a4: 90 02 20 74 add %o0, 0x74, %o0 <== NOT EXECUTED rtems_rtl_unresolved_table_close (&rtl->unresolved); 4000c6a8: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED 4000c6ac: 40 00 10 5e call 40010824 <== NOT EXECUTED 4000c6b0: 90 02 20 7c add %o0, 0x7c, %o0 <== NOT EXECUTED free (rtl); 4000c6b4: 7f ff eb 88 call 400074d4 <== NOT EXECUTED 4000c6b8: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 <== NOT EXECUTED rtems_libio_unlock (); 4000c6bc: 7f ff ec 8a call 400078e4 <== NOT EXECUTED 4000c6c0: 01 00 00 00 nop <== NOT EXECUTED 4000c6c4: 81 c7 e0 08 ret <== NOT EXECUTED 4000c6c8: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000dde8 : const char* n1 = obj->oname; 4000dde8: c8 02 20 18 ld [ %o0 + 0x18 ], %g4 <== NOT EXECUTED while ((*n1 != '\0') && (*n1 != '\n') && (*n1 != '/') && 4000ddec: c4 09 00 00 ldub [ %g4 ], %g2 <== NOT EXECUTED 4000ddf0: 85 28 a0 18 sll %g2, 0x18, %g2 <== NOT EXECUTED 4000ddf4: 87 38 a0 18 sra %g2, 0x18, %g3 <== NOT EXECUTED 4000ddf8: 80 a0 e0 0a cmp %g3, 0xa <== NOT EXECUTED 4000ddfc: 02 80 00 3c be 4000deec <== NOT EXECUTED 4000de00: 80 a0 e0 00 cmp %g3, 0 <== NOT EXECUTED 4000de04: 02 80 00 3a be 4000deec <== NOT EXECUTED 4000de08: 80 a0 e0 2f cmp %g3, 0x2f <== NOT EXECUTED 4000de0c: 02 80 00 2e be 4000dec4 <== NOT EXECUTED 4000de10: c2 0a 40 00 ldub [ %o1 ], %g1 <== NOT EXECUTED 4000de14: 83 28 60 18 sll %g1, 0x18, %g1 <== NOT EXECUTED 4000de18: 83 38 60 18 sra %g1, 0x18, %g1 <== NOT EXECUTED 4000de1c: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED (*name != '\0') && (*name != '/') && (*n1 == *name)) 4000de20: 9a 18 60 2f xor %g1, 0x2f, %o5 <== NOT EXECUTED while ((*n1 != '\0') && (*n1 != '\n') && (*n1 != '/') && 4000de24: 84 40 20 00 addx %g0, 0, %g2 <== NOT EXECUTED (*name != '\0') && (*name != '/') && (*n1 == *name)) 4000de28: 80 a0 00 0d cmp %g0, %o5 <== NOT EXECUTED 4000de2c: 82 18 c0 01 xor %g3, %g1, %g1 <== NOT EXECUTED 4000de30: 86 40 20 00 addx %g0, 0, %g3 <== NOT EXECUTED 4000de34: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 4000de38: 84 08 80 03 and %g2, %g3, %g2 <== NOT EXECUTED 4000de3c: 82 60 3f ff subx %g0, -1, %g1 <== NOT EXECUTED 4000de40: 82 08 40 02 and %g1, %g2, %g1 <== NOT EXECUTED 4000de44: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000de48: 02 80 00 1d be 4000debc <== NOT EXECUTED 4000de4c: 90 10 00 01 mov %g1, %o0 <== NOT EXECUTED ++n1; 4000de50: 88 01 20 01 inc %g4 <== NOT EXECUTED while ((*n1 != '\0') && (*n1 != '\n') && (*n1 != '/') && 4000de54: c4 09 00 00 ldub [ %g4 ], %g2 <== NOT EXECUTED 4000de58: 85 28 a0 18 sll %g2, 0x18, %g2 <== NOT EXECUTED 4000de5c: 83 38 a0 18 sra %g2, 0x18, %g1 <== NOT EXECUTED 4000de60: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000de64: 02 80 00 23 be 4000def0 <== NOT EXECUTED 4000de68: 9a 02 60 01 add %o1, 1, %o5 <== NOT EXECUTED 4000de6c: 80 a0 60 0a cmp %g1, 0xa <== NOT EXECUTED 4000de70: 02 80 00 20 be 4000def0 <== NOT EXECUTED 4000de74: 80 a0 60 2f cmp %g1, 0x2f <== NOT EXECUTED 4000de78: 22 80 00 13 be,a 4000dec4 <== NOT EXECUTED 4000de7c: c2 0a 60 01 ldub [ %o1 + 1 ], %g1 <== NOT EXECUTED 4000de80: c6 4b 40 00 ldsb [ %o5 ], %g3 <== NOT EXECUTED 4000de84: 80 a0 00 03 cmp %g0, %g3 <== NOT EXECUTED (*name != '\0') && (*name != '/') && (*n1 == *name)) 4000de88: 98 18 e0 2f xor %g3, 0x2f, %o4 <== NOT EXECUTED while ((*n1 != '\0') && (*n1 != '\n') && (*n1 != '/') && 4000de8c: 84 40 20 00 addx %g0, 0, %g2 <== NOT EXECUTED (*name != '\0') && (*name != '/') && (*n1 == *name)) 4000de90: 80 a0 00 0c cmp %g0, %o4 <== NOT EXECUTED 4000de94: 82 18 40 03 xor %g1, %g3, %g1 <== NOT EXECUTED 4000de98: 86 40 20 00 addx %g0, 0, %g3 <== NOT EXECUTED 4000de9c: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 4000dea0: 84 08 80 03 and %g2, %g3, %g2 <== NOT EXECUTED 4000dea4: 82 60 3f ff subx %g0, -1, %g1 <== NOT EXECUTED 4000dea8: 92 10 00 0d mov %o5, %o1 <== NOT EXECUTED 4000deac: 82 08 40 02 and %g1, %g2, %g1 <== NOT EXECUTED 4000deb0: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000deb4: 12 bf ff e7 bne 4000de50 <== NOT EXECUTED 4000deb8: 90 10 00 01 mov %g1, %o0 <== NOT EXECUTED } 4000debc: 81 c3 e0 08 retl <== NOT EXECUTED 4000dec0: 90 0a 20 01 and %o0, 1, %o0 <== NOT EXECUTED ((*name == '\0') || (*name == '/'))) 4000dec4: 83 28 60 18 sll %g1, 0x18, %g1 <== NOT EXECUTED 4000dec8: 83 38 60 18 sra %g1, 0x18, %g1 <== NOT EXECUTED 4000decc: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 4000ded0: 82 18 60 2f xor %g1, 0x2f, %g1 <== NOT EXECUTED 4000ded4: 90 60 3f ff subx %g0, -1, %o0 <== NOT EXECUTED 4000ded8: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 4000dedc: 82 60 3f ff subx %g0, -1, %g1 <== NOT EXECUTED 4000dee0: 90 12 00 01 or %o0, %g1, %o0 <== NOT EXECUTED } 4000dee4: 81 c3 e0 08 retl <== NOT EXECUTED 4000dee8: 90 0a 20 01 and %o0, 1, %o0 <== NOT EXECUTED while ((*n1 != '\0') && (*n1 != '\n') && (*n1 != '/') && 4000deec: 9a 10 00 09 mov %o1, %o5 <== NOT EXECUTED if (((*n1 == '\0') || (*n1 == '\n') || (*n1 == '/')) && 4000def0: 85 38 a0 18 sra %g2, 0x18, %g2 <== NOT EXECUTED 4000def4: 80 a0 00 02 cmp %g0, %g2 <== NOT EXECUTED 4000def8: 86 18 a0 0a xor %g2, 0xa, %g3 <== NOT EXECUTED 4000defc: 82 60 3f ff subx %g0, -1, %g1 <== NOT EXECUTED 4000df00: 80 a0 00 03 cmp %g0, %g3 <== NOT EXECUTED 4000df04: 86 60 3f ff subx %g0, -1, %g3 <== NOT EXECUTED 4000df08: 82 10 40 03 or %g1, %g3, %g1 <== NOT EXECUTED 4000df0c: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000df10: 02 80 00 0c be 4000df40 <== NOT EXECUTED 4000df14: 90 10 00 01 mov %g1, %o0 <== NOT EXECUTED 4000df18: c2 0b 40 00 ldub [ %o5 ], %g1 <== NOT EXECUTED ((*name == '\0') || (*name == '/'))) 4000df1c: 83 28 60 18 sll %g1, 0x18, %g1 <== NOT EXECUTED 4000df20: 83 38 60 18 sra %g1, 0x18, %g1 <== NOT EXECUTED 4000df24: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 4000df28: 82 18 60 2f xor %g1, 0x2f, %g1 <== NOT EXECUTED 4000df2c: 90 60 3f ff subx %g0, -1, %o0 <== NOT EXECUTED 4000df30: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 4000df34: 82 60 3f ff subx %g0, -1, %g1 <== NOT EXECUTED 4000df38: 10 bf ff eb b 4000dee4 <== NOT EXECUTED 4000df3c: 90 12 00 01 or %o0, %g1, %o0 <== NOT EXECUTED if (((*n1 == '\0') || (*n1 == '\n') || (*n1 == '/')) && 4000df40: 80 a0 a0 2f cmp %g2, 0x2f <== NOT EXECUTED 4000df44: 12 bf ff de bne 4000debc <== NOT EXECUTED 4000df48: 01 00 00 00 nop <== NOT EXECUTED 4000df4c: 10 bf ff f4 b 4000df1c <== NOT EXECUTED 4000df50: c2 0b 40 00 ldub [ %o5 ], %g1 <== NOT EXECUTED =============================================================================== 4000e59c : { 4000e59c: 9d e3 bf a0 save %sp, -96, %sp 4000e5a0: a0 10 00 1c mov %i4, %l0 if (size > 0) 4000e5a4: 80 a6 e0 00 cmp %i3, 0 4000e5a8: 12 80 00 06 bne 4000e5c0 4000e5ac: a2 10 00 1d mov %i5, %l1 return true; 4000e5b0: b0 10 20 01 mov 1, %i0 } 4000e5b4: b0 0e 20 ff and %i0, 0xff, %i0 4000e5b8: 81 c7 e0 08 ret 4000e5bc: 81 e8 00 00 restore rtems_rtl_obj_sect* sect = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000e5c0: 94 10 20 01 mov 1, %o2 4000e5c4: 92 10 20 38 mov 0x38, %o1 4000e5c8: 7f ff ef 97 call 4000a424 4000e5cc: 90 10 20 00 clr %o0 if (!sect) 4000e5d0: ba 92 20 00 orcc %o0, 0, %i5 4000e5d4: 22 80 00 22 be,a 4000e65c <== NEVER TAKEN 4000e5d8: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED sect->section = section; 4000e5dc: f2 27 60 08 st %i1, [ %i5 + 8 ] sect->name = rtems_rtl_strdup (name); 4000e5e0: 40 00 06 6a call 4000ff88 4000e5e4: 90 10 00 1a mov %i2, %o0 sect->alignment = alignment; 4000e5e8: c2 07 a0 5c ld [ %fp + 0x5c ], %g1 4000e5ec: c2 27 60 20 st %g1, [ %i5 + 0x20 ] rtems_chain_append (&obj->sections, §->node); 4000e5f0: 92 10 00 1d mov %i5, %o1 sect->link = link; 4000e5f4: c2 07 a0 60 ld [ %fp + 0x60 ], %g1 4000e5f8: c2 27 60 24 st %g1, [ %i5 + 0x24 ] sect->info = info; 4000e5fc: c2 07 a0 64 ld [ %fp + 0x64 ], %g1 4000e600: c2 27 60 28 st %g1, [ %i5 + 0x28 ] sect->flags = flags; 4000e604: c2 07 a0 68 ld [ %fp + 0x68 ], %g1 sect->name = rtems_rtl_strdup (name); 4000e608: d0 27 60 0c st %o0, [ %i5 + 0xc ] rtems_chain_append (&obj->sections, §->node); 4000e60c: 90 06 20 2c add %i0, 0x2c, %o0 sect->flags = flags; 4000e610: c2 27 60 2c st %g1, [ %i5 + 0x2c ] sect->size = size; 4000e614: f6 27 60 10 st %i3, [ %i5 + 0x10 ] sect->offset = offset; 4000e618: e0 3f 60 18 std %l0, [ %i5 + 0x18 ] rtems_chain_append (&obj->sections, §->node); 4000e61c: 40 00 0e d7 call 40012178 4000e620: c0 27 60 30 clr [ %i5 + 0x30 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_SECTION)) 4000e624: 40 00 07 f8 call 40010604 4000e628: 90 10 20 10 mov 0x10, %o0 4000e62c: 80 a2 20 00 cmp %o0, 0 4000e630: 02 bf ff e0 be 4000e5b0 4000e634: b0 10 00 08 mov %o0, %i0 printf ("rtl: sect: %-2d: %s (%zu)\n", section, name, size); 4000e638: 96 10 00 1b mov %i3, %o3 4000e63c: 94 10 00 1a mov %i2, %o2 4000e640: 92 10 00 19 mov %i1, %o1 4000e644: 11 10 00 c4 sethi %hi(0x40031000), %o0 4000e648: 40 00 28 c0 call 40018948 <__wrap_printf> 4000e64c: 90 12 23 78 or %o0, 0x378, %o0 ! 40031378 4000e650: b0 0e 20 ff and %i0, 0xff, %i0 4000e654: 81 c7 e0 08 ret 4000e658: 81 e8 00 00 restore rtems_rtl_set_error (ENOMEM, "adding allocated section"); 4000e65c: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED return false; 4000e660: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "adding allocated section"); 4000e664: 7f ff f5 e2 call 4000bdec <== NOT EXECUTED 4000e668: 92 12 63 58 or %o1, 0x358, %o1 <== NOT EXECUTED 4000e66c: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000e670: 81 c7 e0 08 ret <== NOT EXECUTED 4000e674: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000db00 : { 4000db00: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_obj* obj = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000db04: 94 10 20 01 mov 1, %o2 4000db08: 92 10 20 90 mov 0x90, %o1 4000db0c: 7f ff f2 46 call 4000a424 4000db10: 90 10 20 00 clr %o0 if (obj) 4000db14: b0 92 20 00 orcc %o0, 0, %i0 4000db18: 02 80 00 08 be 4000db38 <== NEVER TAKEN 4000db1c: 82 06 20 2c add %i0, 0x2c, %g1 return &the_chain->Tail.Node; 4000db20: 84 06 20 30 add %i0, 0x30, %g2 tail->previous = head; 4000db24: c2 26 20 34 st %g1, [ %i0 + 0x34 ] obj->format = -1; 4000db28: 82 10 3f ff mov -1, %g1 head->next = tail; 4000db2c: c4 26 20 2c st %g2, [ %i0 + 0x2c ] head->previous = NULL; 4000db30: c0 26 20 30 clr [ %i0 + 0x30 ] 4000db34: c2 26 20 10 st %g1, [ %i0 + 0x10 ] } 4000db38: 81 c7 e0 08 ret 4000db3c: 81 e8 00 00 restore =============================================================================== 4000cccc : void rtems_rtl_obj_cache_close (rtems_rtl_obj_cache* cache) { 4000cccc: 9d e3 bf a0 save %sp, -96, %sp if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000ccd0: 40 00 0e 4d call 40010604 4000ccd4: 90 10 28 00 mov 0x800, %o0 4000ccd8: 80 a2 20 00 cmp %o0, 0 4000ccdc: 22 80 00 07 be,a 4000ccf8 <== NEVER TAKEN 4000cce0: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 <== NOT EXECUTED printf ("rtl: cache: %2d: close\n", cache->fd); 4000cce4: d2 06 00 00 ld [ %i0 ], %o1 4000cce8: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000ccec: 40 00 2f 17 call 40018948 <__wrap_printf> 4000ccf0: 90 12 22 d0 or %o0, 0x2d0, %o0 ! 40030ed0 rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, cache->buffer); 4000ccf4: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 4000ccf8: 7f ff f5 f4 call 4000a4c8 4000ccfc: 90 10 20 00 clr %o0 cache->buffer = NULL; cache->fd = -1; 4000cd00: 82 10 3f ff mov -1, %g1 cache->buffer = NULL; 4000cd04: c0 26 20 18 clr [ %i0 + 0x18 ] cache->fd = -1; 4000cd08: c2 26 00 00 st %g1, [ %i0 ] cache->file_size = 0; 4000cd0c: c0 26 20 04 clr [ %i0 + 4 ] cache->level = 0; 4000cd10: c0 26 20 14 clr [ %i0 + 0x14 ] } 4000cd14: 81 c7 e0 08 ret 4000cd18: 81 e8 00 00 restore =============================================================================== 4000cd1c : void rtems_rtl_obj_cache_flush (rtems_rtl_obj_cache* cache) { 4000cd1c: 9d e3 bf a0 save %sp, -96, %sp if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000cd20: 40 00 0e 39 call 40010604 4000cd24: 90 10 28 00 mov 0x800, %o0 4000cd28: 80 a2 20 00 cmp %o0, 0 4000cd2c: 02 80 00 07 be 4000cd48 <== ALWAYS TAKEN 4000cd30: 82 10 3f ff mov -1, %g1 printf ("rtl: cache: %2d: flush\n", cache->fd); 4000cd34: d2 06 00 00 ld [ %i0 ], %o1 <== NOT EXECUTED 4000cd38: 11 10 00 c3 sethi %hi(0x40030c00), %o0 <== NOT EXECUTED 4000cd3c: 40 00 2f 03 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000cd40: 90 12 22 e8 or %o0, 0x2e8, %o0 ! 40030ee8 <== NOT EXECUTED cache->fd = -1; 4000cd44: 82 10 3f ff mov -1, %g1 <== NOT EXECUTED cache->file_size = 0; 4000cd48: c0 26 20 04 clr [ %i0 + 4 ] cache->offset = 0; 4000cd4c: c0 26 20 08 clr [ %i0 + 8 ] 4000cd50: c0 26 20 0c clr [ %i0 + 0xc ] cache->fd = -1; 4000cd54: c2 26 00 00 st %g1, [ %i0 ] cache->level = 0; 4000cd58: c0 26 20 14 clr [ %i0 + 0x14 ] } 4000cd5c: 81 c7 e0 08 ret 4000cd60: 81 e8 00 00 restore =============================================================================== 4000cd64 : rtems_rtl_obj_cache_read (rtems_rtl_obj_cache* cache, int fd, off_t offset, void** buffer, size_t* length) { 4000cd64: 9d e3 bf 10 save %sp, -240, %sp struct stat sb; if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000cd68: 90 10 28 00 mov 0x800, %o0 4000cd6c: 40 00 0e 26 call 40010604 4000cd70: a4 10 00 1a mov %i2, %l2 4000cd74: 80 a2 20 00 cmp %o0, 0 4000cd78: 12 80 00 c0 bne 4000d078 4000cd7c: a6 10 00 1b mov %i3, %l3 fd, cache->fd, offset, *length, offset, offset + *length, cache->offset, cache->offset + cache->level, cache->file_size); if (*length > cache->size) 4000cd80: c2 07 40 00 ld [ %i5 ], %g1 4000cd84: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 4000cd88: 80 a0 40 1b cmp %g1, %i3 4000cd8c: 18 80 00 e4 bgu 4000d11c <== NEVER TAKEN 4000cd90: 90 10 20 16 mov 0x16, %o0 { rtems_rtl_set_error (EINVAL, "read size larger than cache size"); return false; } if (cache->fd == fd) 4000cd94: e8 06 00 00 ld [ %i0 ], %l4 4000cd98: 80 a5 00 19 cmp %l4, %i1 4000cd9c: 02 80 00 7c be 4000cf8c 4000cda0: 80 a4 a0 00 cmp %l2, 0 */ if (*length <= size) return true; if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) printf ("rtl: cache: %2d: copy-down: buffer_offset=%d size=%d level=%d\n", 4000cda4: 2d 10 00 c3 sethi %hi(0x40030c00), %l6 buffer_read = cache->file_size - (offset + buffer_offset); } } if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) printf ("rtl: cache: %2d: seek: offset=%" PRIdoff_t "buffer_offset=%zu" 4000cda8: 35 10 00 c4 sethi %hi(0x40031000), %i2 return false; } if ((r == 0) && buffer_read) { if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) printf ("rtl: cache: %2d: read: past end by=%d\n", fd, (int) buffer_read); 4000cdac: 23 10 00 c4 sethi %hi(0x40031000), %l1 printf ("rtl: cache: %2d: copy-down: buffer_offset=%d size=%d level=%d\n", 4000cdb0: ac 15 a3 e0 or %l6, 0x3e0, %l6 printf ("rtl: cache: %2d: seek: offset=%" PRIdoff_t "buffer_offset=%zu" 4000cdb4: b4 16 a0 20 or %i2, 0x20, %i2 printf ("rtl: cache: %2d: read: past end by=%d\n", fd, (int) buffer_read); 4000cdb8: a2 14 60 b0 or %l1, 0xb0, %l1 if (fd == cache->fd) 4000cdbc: 80 a6 40 14 cmp %i1, %l4 4000cdc0: 12 80 00 10 bne 4000ce00 4000cdc4: 86 84 c0 1b addcc %l3, %i3, %g3 if ((offset + buffer_read) > cache->file_size) 4000cdc8: 84 44 a0 00 addx %l2, 0, %g2 4000cdcc: 80 a0 a0 00 cmp %g2, 0 4000cdd0: 04 80 00 68 ble 4000cf70 <== ALWAYS TAKEN 4000cdd4: c2 06 20 04 ld [ %i0 + 4 ], %g1 buffer_read = cache->file_size - offset; 4000cdd8: b6 20 40 13 sub %g1, %l3, %i3 <== NOT EXECUTED if ((offset >= cache->offset) && 4000cddc: c4 1e 20 08 ldd [ %i0 + 8 ], %g2 4000cde0: 80 a0 80 12 cmp %g2, %l2 4000cde4: 34 80 00 08 bg,a 4000ce04 <== NEVER TAKEN 4000cde8: a8 10 00 12 mov %l2, %l4 <== NOT EXECUTED 4000cdec: 32 80 00 75 bne,a 4000cfc0 <== NEVER TAKEN 4000cdf0: e0 06 20 14 ld [ %i0 + 0x14 ], %l0 <== NOT EXECUTED 4000cdf4: 80 a0 c0 13 cmp %g3, %l3 4000cdf8: 28 80 00 72 bleu,a 4000cfc0 4000cdfc: e0 06 20 14 ld [ %i0 + 0x14 ], %l0 4000ce00: a8 10 00 12 mov %l2, %l4 4000ce04: aa 10 00 13 mov %l3, %l5 size_t buffer_offset = 0; 4000ce08: a0 10 20 00 clr %l0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000ce0c: 40 00 0d fe call 40010604 4000ce10: 90 10 28 00 mov 0x800, %o0 4000ce14: 80 a2 20 00 cmp %o0, 0 4000ce18: 32 80 00 38 bne,a 4000cef8 4000ce1c: c4 06 20 04 ld [ %i0 + 4 ], %g2 if (lseek (fd, offset + buffer_offset, SEEK_SET) < 0) 4000ce20: 96 10 20 00 clr %o3 4000ce24: 92 10 00 14 mov %l4, %o1 4000ce28: 94 10 00 15 mov %l5, %o2 4000ce2c: 7f ff ea e5 call 400079c0 4000ce30: 90 10 00 19 mov %i1, %o0 4000ce34: 80 a2 20 00 cmp %o0, 0 4000ce38: 06 80 00 d2 bl 4000d180 <== NEVER TAKEN 4000ce3c: 82 04 00 1b add %l0, %i3, %g1 while (buffer_read) 4000ce40: 80 a6 e0 00 cmp %i3, 0 4000ce44: 12 80 00 09 bne 4000ce68 <== ALWAYS TAKEN 4000ce48: c2 26 20 14 st %g1, [ %i0 + 0x14 ] buffer_read -= r; buffer_offset += r; } } cache->offset = offset; 4000ce4c: 10 80 00 25 b 4000cee0 <== NOT EXECUTED 4000ce50: e4 3e 20 08 std %l2, [ %i0 + 8 ] <== NOT EXECUTED if ((r == 0) && buffer_read) 4000ce54: 02 80 00 16 be 4000ceac 4000ce58: 01 00 00 00 nop while (buffer_read) 4000ce5c: b6 a6 c0 08 subcc %i3, %o0, %i3 4000ce60: 02 80 00 1f be 4000cedc 4000ce64: a0 04 00 08 add %l0, %o0, %l0 int r = read (fd, cache->buffer + buffer_offset, buffer_read); 4000ce68: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 4000ce6c: 94 10 00 1b mov %i3, %o2 4000ce70: 92 02 40 10 add %o1, %l0, %o1 4000ce74: 7f ff ee 23 call 40008700 4000ce78: 90 10 00 19 mov %i1, %o0 if (r < 0) 4000ce7c: 80 a2 20 00 cmp %o0, 0 4000ce80: 16 bf ff f5 bge 4000ce54 <== ALWAYS TAKEN 4000ce84: 01 00 00 00 nop rtems_rtl_set_error (errno, "file read failed"); 4000ce88: 40 00 36 bb call 4001a974 <__errno> <== NOT EXECUTED 4000ce8c: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED 4000ce90: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED 4000ce94: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED 4000ce98: 7f ff fb d5 call 4000bdec <== NOT EXECUTED 4000ce9c: 92 12 60 98 or %o1, 0x98, %o1 ! 40031098 <== NOT EXECUTED cache->file_size = sb.st_size; } } return false; } 4000cea0: b0 0e 20 01 and %i0, 1, %i0 4000cea4: 81 c7 e0 08 ret 4000cea8: 81 e8 00 00 restore if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000ceac: 40 00 0d d6 call 40010604 4000ceb0: 90 10 28 00 mov 0x800, %o0 4000ceb4: 80 a2 20 00 cmp %o0, 0 4000ceb8: 22 80 00 07 be,a 4000ced4 <== ALWAYS TAKEN 4000cebc: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 printf ("rtl: cache: %2d: read: past end by=%d\n", fd, (int) buffer_read); 4000cec0: 94 10 00 1b mov %i3, %o2 <== NOT EXECUTED 4000cec4: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000cec8: 40 00 2e a0 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000cecc: 90 10 00 11 mov %l1, %o0 <== NOT EXECUTED cache->level = cache->level - buffer_read; 4000ced0: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 <== NOT EXECUTED 4000ced4: b6 20 40 1b sub %g1, %i3, %i3 4000ced8: f6 26 20 14 st %i3, [ %i0 + 0x14 ] cache->offset = offset; 4000cedc: e4 3e 20 08 std %l2, [ %i0 + 8 ] if (cache->fd != fd) 4000cee0: c2 06 00 00 ld [ %i0 ], %g1 4000cee4: 80 a0 40 19 cmp %g1, %i1 4000cee8: 12 80 00 c2 bne 4000d1f0 4000ceec: a8 10 00 19 mov %i1, %l4 4000cef0: 10 bf ff b3 b 4000cdbc 4000cef4: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 (cache->file_size - offset)); 4000cef8: 86 10 00 02 mov %g2, %g3 4000cefc: 84 10 20 00 clr %g2 printf ("rtl: cache: %2d: seek: offset=%" PRIdoff_t "buffer_offset=%zu" 4000cf00: 9a a0 c0 13 subcc %g3, %l3, %o5 4000cf04: 98 60 80 12 subx %g2, %l2, %o4 4000cf08: d8 3f bf 98 std %o4, [ %fp + -104 ] 4000cf0c: 9a 84 c0 1b addcc %l3, %i3, %o5 4000cf10: c8 07 bf 98 ld [ %fp + -104 ], %g4 4000cf14: c6 07 bf 9c ld [ %fp + -100 ], %g3 4000cf18: 98 44 a0 00 addx %l2, 0, %o4 4000cf1c: d8 3f bf 98 std %o4, [ %fp + -104 ] 4000cf20: 94 10 00 14 mov %l4, %o2 4000cf24: c2 07 bf 9c ld [ %fp + -100 ], %g1 4000cf28: c4 07 bf 98 ld [ %fp + -104 ], %g2 4000cf2c: e4 3f bf 98 std %l2, [ %fp + -104 ] 4000cf30: 9a 10 00 1b mov %i3, %o5 4000cf34: c2 23 a0 68 st %g1, [ %sp + 0x68 ] 4000cf38: 98 10 00 10 mov %l0, %o4 4000cf3c: c2 07 bf 98 ld [ %fp + -104 ], %g1 4000cf40: c2 23 a0 5c st %g1, [ %sp + 0x5c ] 4000cf44: 96 10 00 15 mov %l5, %o3 4000cf48: c2 07 bf 9c ld [ %fp + -100 ], %g1 4000cf4c: c8 23 a0 6c st %g4, [ %sp + 0x6c ] 4000cf50: 92 10 00 19 mov %i1, %o1 4000cf54: c6 23 a0 70 st %g3, [ %sp + 0x70 ] 4000cf58: 90 10 00 1a mov %i2, %o0 4000cf5c: c4 23 a0 64 st %g2, [ %sp + 0x64 ] 4000cf60: 40 00 2e 7a call 40018948 <__wrap_printf> 4000cf64: c2 23 a0 60 st %g1, [ %sp + 0x60 ] if (lseek (fd, offset + buffer_offset, SEEK_SET) < 0) 4000cf68: 10 bf ff af b 4000ce24 4000cf6c: 96 10 20 00 clr %o3 if ((offset + buffer_read) > cache->file_size) 4000cf70: 32 bf ff 9c bne,a 4000cde0 <== NEVER TAKEN 4000cf74: c4 1e 20 08 ldd [ %i0 + 8 ], %g2 <== NOT EXECUTED 4000cf78: 80 a0 c0 01 cmp %g3, %g1 4000cf7c: 28 bf ff 99 bleu,a 4000cde0 4000cf80: c4 1e 20 08 ldd [ %i0 + 8 ], %g2 buffer_read = cache->file_size - offset; 4000cf84: 10 bf ff 96 b 4000cddc 4000cf88: b6 20 40 13 sub %g1, %l3, %i3 if (offset > cache->file_size) 4000cf8c: 14 80 00 74 bg 4000d15c <== NEVER TAKEN 4000cf90: d6 06 20 04 ld [ %i0 + 4 ], %o3 4000cf94: 02 80 00 70 be 4000d154 <== ALWAYS TAKEN 4000cf98: 80 a4 c0 0b cmp %l3, %o3 if ((offset + *length) > cache->file_size) 4000cf9c: 86 84 c0 01 addcc %l3, %g1, %g3 <== NOT EXECUTED 4000cfa0: 84 44 a0 00 addx %l2, 0, %g2 4000cfa4: 80 a0 a0 00 cmp %g2, 0 4000cfa8: 34 80 00 82 bg,a 4000d1b0 <== NEVER TAKEN 4000cfac: 96 22 c0 13 sub %o3, %l3, %o3 <== NOT EXECUTED 4000cfb0: 02 80 00 7d be 4000d1a4 <== ALWAYS TAKEN 4000cfb4: 80 a0 c0 0b cmp %g3, %o3 4000cfb8: 10 bf ff 7b b 4000cda4 <== NOT EXECUTED 4000cfbc: a8 10 00 19 mov %i1, %l4 <== NOT EXECUTED (offset < (cache->offset + cache->level))) 4000cfc0: 9a 80 c0 10 addcc %g3, %l0, %o5 4000cfc4: 98 40 a0 00 addx %g2, 0, %o4 if ((offset >= cache->offset) && 4000cfc8: 80 a3 00 12 cmp %o4, %l2 4000cfcc: 34 80 00 08 bg,a 4000cfec <== NEVER TAKEN 4000cfd0: c2 06 20 18 ld [ %i0 + 0x18 ], %g1 <== NOT EXECUTED 4000cfd4: 32 bf ff 8c bne,a 4000ce04 <== NEVER TAKEN 4000cfd8: a8 10 00 12 mov %l2, %l4 <== NOT EXECUTED 4000cfdc: 80 a3 40 13 cmp %o5, %l3 4000cfe0: 28 bf ff 89 bleu,a 4000ce04 4000cfe4: a8 10 00 12 mov %l2, %l4 *buffer = cache->buffer + buffer_offset; 4000cfe8: c2 06 20 18 ld [ %i0 + 0x18 ], %g1 buffer_offset = offset - cache->offset; 4000cfec: b6 24 c0 03 sub %l3, %g3, %i3 *buffer = cache->buffer + buffer_offset; 4000cff0: 82 00 40 1b add %g1, %i3, %g1 4000cff4: c2 27 00 00 st %g1, [ %i4 ] size = cache->level - buffer_offset; 4000cff8: a0 24 00 1b sub %l0, %i3, %l0 if (*length <= size) 4000cffc: c2 07 40 00 ld [ %i5 ], %g1 4000d000: 80 a0 40 10 cmp %g1, %l0 4000d004: 28 bf ff a7 bleu,a 4000cea0 4000d008: b0 10 20 01 mov 1, %i0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000d00c: 40 00 0d 7e call 40010604 4000d010: 90 10 28 00 mov 0x800, %o0 4000d014: 80 a2 20 00 cmp %o0, 0 4000d018: 32 80 00 48 bne,a 4000d138 <== NEVER TAKEN 4000d01c: d8 06 20 14 ld [ %i0 + 0x14 ], %o4 <== NOT EXECUTED memmove (cache->buffer, cache->buffer + buffer_offset, size); 4000d020: d0 06 20 18 ld [ %i0 + 0x18 ], %o0 4000d024: 92 02 00 1b add %o0, %i3, %o1 4000d028: 40 00 37 8b call 4001ae54 4000d02c: 94 10 00 10 mov %l0, %o2 buffer_read = cache->size - cache->level; 4000d030: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 cache->offset = offset; 4000d034: e4 3e 20 08 std %l2, [ %i0 + 8 ] if ((offset + buffer_offset + buffer_read) > cache->file_size) 4000d038: aa 84 c0 10 addcc %l3, %l0, %l5 cache->level = size; 4000d03c: e0 26 20 14 st %l0, [ %i0 + 0x14 ] if ((offset + buffer_offset + buffer_read) > cache->file_size) 4000d040: a8 44 a0 00 addx %l2, 0, %l4 buffer_read = cache->size - cache->level; 4000d044: b6 26 c0 10 sub %i3, %l0, %i3 if ((offset + buffer_offset + buffer_read) > cache->file_size) 4000d048: 86 85 40 1b addcc %l5, %i3, %g3 4000d04c: 84 45 20 00 addx %l4, 0, %g2 4000d050: 80 a0 a0 00 cmp %g2, 0 4000d054: 14 80 00 06 bg 4000d06c <== NEVER TAKEN 4000d058: c2 06 20 04 ld [ %i0 + 4 ], %g1 4000d05c: 12 bf ff 6c bne 4000ce0c <== NEVER TAKEN 4000d060: 80 a0 c0 01 cmp %g3, %g1 4000d064: 08 bf ff 6a bleu 4000ce0c 4000d068: 01 00 00 00 nop buffer_read = cache->file_size - (offset + buffer_offset); 4000d06c: 82 20 40 13 sub %g1, %l3, %g1 4000d070: 10 bf ff 67 b 4000ce0c 4000d074: b6 20 40 10 sub %g1, %l0, %i3 printf ("rtl: cache: %2d: fd=%d offset=%" PRIdoff_t "length=%zu area=[%" 4000d078: c4 1e 20 08 ldd [ %i0 + 8 ], %g2 cache->offset, cache->offset + cache->level, 4000d07c: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 printf ("rtl: cache: %2d: fd=%d offset=%" PRIdoff_t "length=%zu area=[%" 4000d080: b6 80 c0 01 addcc %g3, %g1, %i3 4000d084: b4 40 a0 00 addx %g2, 0, %i2 4000d088: f4 3f bf 98 std %i2, [ %fp + -104 ] 4000d08c: 96 10 00 12 mov %l2, %o3 4000d090: f4 1f bf 98 ldd [ %fp + -104 ], %i2 4000d094: c4 3f bf 98 std %g2, [ %fp + -104 ] 4000d098: 98 10 00 13 mov %l3, %o4 4000d09c: da 07 40 00 ld [ %i5 ], %o5 4000d0a0: 92 84 c0 0d addcc %l3, %o5, %o1 4000d0a4: c8 07 bf 98 ld [ %fp + -104 ], %g4 4000d0a8: c6 07 bf 9c ld [ %fp + -100 ], %g3 4000d0ac: 90 44 a0 00 addx %l2, 0, %o0 4000d0b0: d0 3f bf 98 std %o0, [ %fp + -104 ] 4000d0b4: 92 10 00 19 mov %i1, %o1 4000d0b8: c2 07 bf 9c ld [ %fp + -100 ], %g1 4000d0bc: c4 07 bf 98 ld [ %fp + -104 ], %g2 4000d0c0: e4 3f bf 98 std %l2, [ %fp + -104 ] 4000d0c4: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000d0c8: de 06 20 04 ld [ %i0 + 4 ], %o7 4000d0cc: c2 23 a0 68 st %g1, [ %sp + 0x68 ] 4000d0d0: 90 12 23 00 or %o0, 0x300, %o0 4000d0d4: c2 07 bf 98 ld [ %fp + -104 ], %g1 4000d0d8: c2 23 a0 5c st %g1, [ %sp + 0x5c ] 4000d0dc: c2 07 bf 9c ld [ %fp + -100 ], %g1 4000d0e0: f6 23 a0 78 st %i3, [ %sp + 0x78 ] 4000d0e4: c2 23 a0 60 st %g1, [ %sp + 0x60 ] 4000d0e8: de 23 a0 7c st %o7, [ %sp + 0x7c ] 4000d0ec: f4 23 a0 74 st %i2, [ %sp + 0x74 ] 4000d0f0: c8 23 a0 6c st %g4, [ %sp + 0x6c ] 4000d0f4: c6 23 a0 70 st %g3, [ %sp + 0x70 ] 4000d0f8: c4 23 a0 64 st %g2, [ %sp + 0x64 ] 4000d0fc: 40 00 2e 13 call 40018948 <__wrap_printf> 4000d100: d4 06 00 00 ld [ %i0 ], %o2 if (*length > cache->size) 4000d104: c2 07 40 00 ld [ %i5 ], %g1 4000d108: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 4000d10c: 80 a0 40 1b cmp %g1, %i3 4000d110: 28 bf ff 22 bleu,a 4000cd98 <== ALWAYS TAKEN 4000d114: e8 06 00 00 ld [ %i0 ], %l4 rtems_rtl_set_error (EINVAL, "read size larger than cache size"); 4000d118: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000d11c: 13 10 00 c3 sethi %hi(0x40030c00), %o1 <== NOT EXECUTED return false; 4000d120: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "read size larger than cache size"); 4000d124: 92 12 63 60 or %o1, 0x360, %o1 <== NOT EXECUTED 4000d128: 7f ff fb 31 call 4000bdec <== NOT EXECUTED 4000d12c: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED } 4000d130: 81 c7 e0 08 ret <== NOT EXECUTED 4000d134: 81 e8 00 00 restore <== NOT EXECUTED printf ("rtl: cache: %2d: copy-down: buffer_offset=%d size=%d level=%d\n", 4000d138: 96 10 00 10 mov %l0, %o3 <== NOT EXECUTED 4000d13c: 94 10 00 1b mov %i3, %o2 <== NOT EXECUTED 4000d140: 92 10 00 14 mov %l4, %o1 <== NOT EXECUTED 4000d144: 40 00 2e 01 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000d148: 90 10 00 16 mov %l6, %o0 <== NOT EXECUTED memmove (cache->buffer, cache->buffer + buffer_offset, size); 4000d14c: 10 bf ff b6 b 4000d024 <== NOT EXECUTED 4000d150: d0 06 20 18 ld [ %i0 + 0x18 ], %o0 <== NOT EXECUTED if (offset > cache->file_size) 4000d154: 08 bf ff 93 bleu 4000cfa0 <== ALWAYS TAKEN 4000d158: 86 84 c0 01 addcc %l3, %g1, %g3 rtems_rtl_set_error (EINVAL, "offset past end of file: offset=%i size=%i", 4000d15c: 94 10 00 13 mov %l3, %o2 <== NOT EXECUTED 4000d160: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000d164: 13 10 00 c3 sethi %hi(0x40030c00), %o1 <== NOT EXECUTED return false; 4000d168: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "offset past end of file: offset=%i size=%i", 4000d16c: 7f ff fb 20 call 4000bdec <== NOT EXECUTED 4000d170: 92 12 63 88 or %o1, 0x388, %o1 <== NOT EXECUTED 4000d174: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 4000d178: 81 c7 e0 08 ret <== NOT EXECUTED 4000d17c: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_set_error (errno, "file seek failed"); 4000d180: 40 00 35 fd call 4001a974 <__errno> <== NOT EXECUTED 4000d184: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000d188: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED 4000d18c: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED 4000d190: 7f ff fb 17 call 4000bdec <== NOT EXECUTED 4000d194: 92 12 60 80 or %o1, 0x80, %o1 ! 40031080 <== NOT EXECUTED 4000d198: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 4000d19c: 81 c7 e0 08 ret <== NOT EXECUTED 4000d1a0: 81 e8 00 00 restore <== NOT EXECUTED if ((offset + *length) > cache->file_size) 4000d1a4: 08 bf ff 00 bleu 4000cda4 4000d1a8: a8 10 00 19 mov %i1, %l4 *length = cache->file_size - offset; 4000d1ac: 96 22 c0 13 sub %o3, %l3, %o3 4000d1b0: d6 27 40 00 st %o3, [ %i5 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE)) 4000d1b4: 40 00 0d 14 call 40010604 4000d1b8: 90 10 28 00 mov 0x800, %o0 4000d1bc: 80 a2 20 00 cmp %o0, 0 4000d1c0: 32 80 00 05 bne,a 4000d1d4 <== ALWAYS TAKEN 4000d1c4: d4 07 40 00 ld [ %i5 ], %o2 4000d1c8: e8 06 00 00 ld [ %i0 ], %l4 <== NOT EXECUTED 4000d1cc: 10 bf fe f6 b 4000cda4 <== NOT EXECUTED 4000d1d0: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 <== NOT EXECUTED printf ("rtl: cache: %2d: truncate length=%d\n", fd, (int) *length); 4000d1d4: 92 10 00 19 mov %i1, %o1 4000d1d8: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000d1dc: 40 00 2d db call 40018948 <__wrap_printf> 4000d1e0: 90 12 23 b8 or %o0, 0x3b8, %o0 ! 40030fb8 4000d1e4: e8 06 00 00 ld [ %i0 ], %l4 4000d1e8: 10 bf fe ef b 4000cda4 4000d1ec: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 cache->fd = fd; 4000d1f0: f2 26 00 00 st %i1, [ %i0 ] if (fstat (cache->fd, &sb) < 0) 4000d1f4: 92 07 bf a0 add %fp, -96, %o1 4000d1f8: 7f ff e8 d1 call 4000753c 4000d1fc: 90 10 00 19 mov %i1, %o0 4000d200: 80 a2 20 00 cmp %o0, 0 4000d204: 06 80 00 06 bl 4000d21c <== NEVER TAKEN 4000d208: c2 07 bf c4 ld [ %fp + -60 ], %g1 cache->file_size = sb.st_size; 4000d20c: c2 26 20 04 st %g1, [ %i0 + 4 ] 4000d210: e8 06 00 00 ld [ %i0 ], %l4 4000d214: 10 bf fe ea b 4000cdbc 4000d218: f6 06 20 10 ld [ %i0 + 0x10 ], %i3 rtems_rtl_set_error (errno, "file stat failed"); 4000d21c: 40 00 35 d6 call 4001a974 <__errno> <== NOT EXECUTED 4000d220: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000d224: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED 4000d228: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED 4000d22c: 7f ff fa f0 call 4000bdec <== NOT EXECUTED 4000d230: 92 12 60 d8 or %o1, 0xd8, %o1 ! 400310d8 <== NOT EXECUTED 4000d234: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 4000d238: 81 c7 e0 08 ret <== NOT EXECUTED 4000d23c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000d240 : rtems_rtl_obj_cache_read_byval (rtems_rtl_obj_cache* cache, int fd, off_t offset, void* buffer, size_t length) { 4000d240: 9d e3 bf 98 save %sp, -104, %sp void* cbuffer = 0; size_t len = length; bool ok = rtems_rtl_obj_cache_read (cache, fd, offset, &cbuffer, &len); 4000d244: 90 10 00 18 mov %i0, %o0 void* cbuffer = 0; 4000d248: c0 27 bf f8 clr [ %fp + -8 ] bool ok = rtems_rtl_obj_cache_read (cache, fd, offset, &cbuffer, &len); 4000d24c: 9a 07 bf fc add %fp, -4, %o5 size_t len = length; 4000d250: fa 27 bf fc st %i5, [ %fp + -4 ] bool ok = rtems_rtl_obj_cache_read (cache, fd, offset, &cbuffer, &len); 4000d254: 98 07 bf f8 add %fp, -8, %o4 4000d258: 94 10 00 1a mov %i2, %o2 4000d25c: 96 10 00 1b mov %i3, %o3 4000d260: 7f ff fe c1 call 4000cd64 4000d264: 92 10 00 19 mov %i1, %o1 if (ok && (len != length)) 4000d268: 80 a2 20 00 cmp %o0, 0 4000d26c: 02 80 00 07 be 4000d288 <== NEVER TAKEN 4000d270: b0 10 00 08 mov %o0, %i0 4000d274: d4 07 bf fc ld [ %fp + -4 ], %o2 4000d278: 80 a2 80 1d cmp %o2, %i5 4000d27c: 22 80 00 06 be,a 4000d294 <== ALWAYS TAKEN 4000d280: d2 07 bf f8 ld [ %fp + -8 ], %o1 4000d284: b0 10 20 00 clr %i0 <== NOT EXECUTED ok = false; if (ok) memcpy (buffer, cbuffer, length); return ok; } 4000d288: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000d28c: 81 c7 e0 08 ret <== NOT EXECUTED 4000d290: 81 e8 00 00 restore <== NOT EXECUTED memcpy (buffer, cbuffer, length); 4000d294: 90 10 00 1c mov %i4, %o0 4000d298: 40 00 36 b3 call 4001ad64 4000d29c: b0 0e 20 ff and %i0, 0xff, %i0 } 4000d2a0: 81 c7 e0 08 ret 4000d2a4: 81 e8 00 00 restore =============================================================================== 4000c354 : void rtems_rtl_obj_caches (rtems_rtl_obj_cache** symbols, rtems_rtl_obj_cache** strings, rtems_rtl_obj_cache** relocs) { if (!rtl) 4000c354: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000c358: c2 00 61 e4 ld [ %g1 + 0x1e4 ], %g1 ! 400361e4 4000c35c: 80 a0 60 00 cmp %g1, 0 4000c360: 02 80 00 0f be 4000c39c <== NEVER TAKEN 4000c364: 80 a2 20 00 cmp %o0, 0 if (relocs) *relocs = NULL; } else { if (symbols) 4000c368: 02 80 00 03 be 4000c374 <== NEVER TAKEN 4000c36c: 84 00 60 98 add %g1, 0x98, %g2 *symbols = &rtl->symbols; 4000c370: c4 22 00 00 st %g2, [ %o0 ] if (strings) 4000c374: 80 a2 60 00 cmp %o1, 0 4000c378: 02 80 00 03 be 4000c384 4000c37c: 84 00 60 b8 add %g1, 0xb8, %g2 *strings = &rtl->strings; 4000c380: c4 22 40 00 st %g2, [ %o1 ] if (relocs) 4000c384: 80 a2 a0 00 cmp %o2, 0 4000c388: 02 80 00 03 be 4000c394 4000c38c: 82 00 60 d8 add %g1, 0xd8, %g1 *relocs = &rtl->relocs; 4000c390: c2 22 80 00 st %g1, [ %o2 ] } } 4000c394: 81 c3 e0 08 retl 4000c398: 01 00 00 00 nop if (symbols) 4000c39c: 32 80 00 02 bne,a 4000c3a4 <== NOT EXECUTED 4000c3a0: c0 22 00 00 clr [ %o0 ] <== NOT EXECUTED if (strings) 4000c3a4: 80 a2 60 00 cmp %o1, 0 <== NOT EXECUTED 4000c3a8: 32 80 00 02 bne,a 4000c3b0 <== NOT EXECUTED 4000c3ac: c0 22 40 00 clr [ %o1 ] <== NOT EXECUTED if (relocs) 4000c3b0: 80 a2 a0 00 cmp %o2, 0 <== NOT EXECUTED 4000c3b4: 02 bf ff f8 be 4000c394 <== NOT EXECUTED 4000c3b8: 01 00 00 00 nop <== NOT EXECUTED *relocs = NULL; 4000c3bc: 81 c3 e0 08 retl <== NOT EXECUTED 4000c3c0: c0 22 80 00 clr [ %o2 ] <== NOT EXECUTED =============================================================================== 4000c3c4 : void rtems_rtl_obj_caches_flush (void) { 4000c3c4: 9d e3 bf a0 save %sp, -96, %sp if (rtl) 4000c3c8: 3b 10 00 d8 sethi %hi(0x40036000), %i5 4000c3cc: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 ! 400361e4 4000c3d0: 80 a2 20 00 cmp %o0, 0 4000c3d4: 02 80 00 0a be 4000c3fc <== NEVER TAKEN 4000c3d8: 01 00 00 00 nop { rtems_rtl_obj_cache_flush (&rtl->symbols); 4000c3dc: 40 00 02 50 call 4000cd1c 4000c3e0: 90 02 20 98 add %o0, 0x98, %o0 rtems_rtl_obj_cache_flush (&rtl->strings); 4000c3e4: d0 07 61 e4 ld [ %i5 + 0x1e4 ], %o0 4000c3e8: 40 00 02 4d call 4000cd1c 4000c3ec: 90 02 20 b8 add %o0, 0xb8, %o0 rtems_rtl_obj_cache_flush (&rtl->relocs); 4000c3f0: f0 07 61 e4 ld [ %i5 + 0x1e4 ], %i0 4000c3f4: 40 00 02 4a call 4000cd1c 4000c3f8: 91 ee 20 d8 restore %i0, 0xd8, %o0 } } 4000c3fc: 81 c7 e0 08 ret <== NOT EXECUTED 4000c400: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000d320 : void rtems_rtl_obj_comp_close (rtems_rtl_obj_comp* comp) { 4000d320: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, comp->buffer); 4000d324: d2 06 20 20 ld [ %i0 + 0x20 ], %o1 <== NOT EXECUTED 4000d328: 7f ff f4 68 call 4000a4c8 <== NOT EXECUTED 4000d32c: 90 10 20 00 clr %o0 <== NOT EXECUTED comp->cache = NULL; comp->fd = -1; 4000d330: 82 10 3f ff mov -1, %g1 <== NOT EXECUTED comp->cache = NULL; 4000d334: c0 26 00 00 clr [ %i0 ] <== NOT EXECUTED comp->fd = -1; 4000d338: c2 26 20 04 st %g1, [ %i0 + 4 ] <== NOT EXECUTED comp->compression = RTEMS_RTL_COMP_LZ77; 4000d33c: 82 10 20 01 mov 1, %g1 <== NOT EXECUTED comp->level = 0; comp->size = 0; comp->offset = 0; 4000d340: c0 26 20 10 clr [ %i0 + 0x10 ] <== NOT EXECUTED 4000d344: c0 26 20 14 clr [ %i0 + 0x14 ] <== NOT EXECUTED comp->compression = RTEMS_RTL_COMP_LZ77; 4000d348: c2 26 20 08 st %g1, [ %i0 + 8 ] <== NOT EXECUTED comp->level = 0; 4000d34c: c0 26 20 1c clr [ %i0 + 0x1c ] <== NOT EXECUTED comp->size = 0; 4000d350: c0 26 20 18 clr [ %i0 + 0x18 ] <== NOT EXECUTED comp->read = 0; 4000d354: c0 26 20 24 clr [ %i0 + 0x24 ] <== NOT EXECUTED } 4000d358: 81 c7 e0 08 ret <== NOT EXECUTED 4000d35c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000d2a8 : #include bool rtems_rtl_obj_comp_open (rtems_rtl_obj_comp* comp, size_t size) { 4000d2a8: 9d e3 bf a0 save %sp, -96, %sp comp->cache = NULL; comp->fd = -1; 4000d2ac: 82 10 3f ff mov -1, %g1 comp->cache = NULL; 4000d2b0: c0 26 00 00 clr [ %i0 ] comp->compression = RTEMS_RTL_COMP_LZ77; comp->offset = 0; comp->size = size; comp->level = 0; comp->buffer = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, size, false); 4000d2b4: 94 10 20 00 clr %o2 comp->fd = -1; 4000d2b8: c2 26 20 04 st %g1, [ %i0 + 4 ] comp->compression = RTEMS_RTL_COMP_LZ77; 4000d2bc: 82 10 20 01 mov 1, %g1 comp->offset = 0; 4000d2c0: c0 26 20 10 clr [ %i0 + 0x10 ] comp->buffer = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, size, false); 4000d2c4: 92 10 00 19 mov %i1, %o1 comp->offset = 0; 4000d2c8: c0 26 20 14 clr [ %i0 + 0x14 ] comp->buffer = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, size, false); 4000d2cc: 90 10 20 00 clr %o0 comp->compression = RTEMS_RTL_COMP_LZ77; 4000d2d0: c2 26 20 08 st %g1, [ %i0 + 8 ] comp->size = size; 4000d2d4: f2 26 20 18 st %i1, [ %i0 + 0x18 ] comp->buffer = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, size, false); 4000d2d8: 7f ff f4 53 call 4000a424 4000d2dc: c0 26 20 1c clr [ %i0 + 0x1c ] if (!comp->buffer) 4000d2e0: 80 a2 20 00 cmp %o0, 0 4000d2e4: 02 80 00 07 be 4000d300 <== NEVER TAKEN 4000d2e8: d0 26 20 20 st %o0, [ %i0 + 0x20 ] { rtems_rtl_set_error (ENOMEM, "no memory for compressor buffer"); return false; } comp->read = 0; 4000d2ec: c0 26 20 24 clr [ %i0 + 0x24 ] return true; 4000d2f0: b0 10 20 01 mov 1, %i0 } 4000d2f4: b0 0e 20 01 and %i0, 1, %i0 4000d2f8: 81 c7 e0 08 ret 4000d2fc: 81 e8 00 00 restore rtems_rtl_set_error (ENOMEM, "no memory for compressor buffer"); 4000d300: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000d304: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED return false; 4000d308: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for compressor buffer"); 4000d30c: 92 12 60 f0 or %o1, 0xf0, %o1 <== NOT EXECUTED 4000d310: 7f ff fa b7 call 4000bdec <== NOT EXECUTED 4000d314: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED } 4000d318: 81 c7 e0 08 ret <== NOT EXECUTED 4000d31c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000d37c : bool rtems_rtl_obj_comp_read (rtems_rtl_obj_comp* comp, void* buffer, size_t length) { 4000d37c: 9d e3 bf 98 save %sp, -104, %sp uint8_t* bin = buffer; if (!comp->cache) 4000d380: c2 06 00 00 ld [ %i0 ], %g1 4000d384: 80 a0 60 00 cmp %g1, 0 4000d388: 02 80 00 70 be 4000d548 <== NEVER TAKEN 4000d38c: 90 10 20 16 mov 0x16, %o0 { rtems_rtl_set_error (EINVAL, "not open"); return false; } if (comp->fd != comp->cache->fd) 4000d390: c4 06 20 04 ld [ %i0 + 4 ], %g2 4000d394: c2 00 40 00 ld [ %g1 ], %g1 4000d398: 80 a0 80 01 cmp %g2, %g1 4000d39c: 32 80 00 02 bne,a 4000d3a4 <== NEVER TAKEN 4000d3a0: c0 26 20 1c clr [ %i0 + 0x1c ] <== NOT EXECUTED { comp->level = 0; } while (length) 4000d3a4: 80 a6 a0 00 cmp %i2, 0 4000d3a8: 22 80 00 58 be,a 4000d508 <== NEVER TAKEN 4000d3ac: b0 10 20 01 mov 1, %i0 <== NOT EXECUTED 4000d3b0: fa 06 20 1c ld [ %i0 + 0x1c ], %i5 { size_t buffer_level; buffer_level = length > comp->level ? comp->level : length; 4000d3b4: 80 a7 40 1a cmp %i5, %i2 4000d3b8: 08 80 00 03 bleu 4000d3c4 4000d3bc: b6 10 20 02 mov 2, %i3 4000d3c0: ba 10 00 1a mov %i2, %i5 if (buffer_level) 4000d3c4: 80 a7 60 00 cmp %i5, 0 4000d3c8: 32 80 00 3c bne,a 4000d4b8 4000d3cc: d2 06 20 20 ld [ %i0 + 0x20 ], %o1 uint8_t* input = NULL; uint16_t block_size; size_t in_length = sizeof (block_size); int decompressed; if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d3d0: d0 1e 00 00 ldd [ %i0 ], %o0 4000d3d4: d4 1e 20 10 ldd [ %i0 + 0x10 ], %o2 uint8_t* input = NULL; 4000d3d8: c0 27 bf f8 clr [ %fp + -8 ] if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d3dc: 9a 07 bf fc add %fp, -4, %o5 size_t in_length = sizeof (block_size); 4000d3e0: f6 27 bf fc st %i3, [ %fp + -4 ] if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d3e4: 7f ff fe 60 call 4000cd64 4000d3e8: 98 07 bf f8 add %fp, -8, %o4 4000d3ec: 80 a2 20 00 cmp %o0, 0 4000d3f0: 02 80 00 4c be 4000d520 <== NEVER TAKEN 4000d3f4: c2 07 bf f8 ld [ %fp + -8 ], %g1 (void**) &input, &in_length)) return false; block_size = (input[0] << 8) | input[1]; comp->offset += sizeof (block_size); 4000d3f8: c4 1e 20 10 ldd [ %i0 + 0x10 ], %g2 block_size = (input[0] << 8) | input[1]; 4000d3fc: f8 08 40 00 ldub [ %g1 ], %i4 comp->offset += sizeof (block_size); 4000d400: 96 80 e0 02 addcc %g3, 2, %o3 block_size = (input[0] << 8) | input[1]; 4000d404: c2 08 60 01 ldub [ %g1 + 1 ], %g1 comp->offset += sizeof (block_size); 4000d408: 94 40 a0 00 addx %g2, 0, %o2 4000d40c: d4 3e 20 10 std %o2, [ %i0 + 0x10 ] block_size = (input[0] << 8) | input[1]; 4000d410: b9 2f 20 08 sll %i4, 8, %i4 in_length = block_size; if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d414: d0 1e 00 00 ldd [ %i0 ], %o0 block_size = (input[0] << 8) | input[1]; 4000d418: b8 17 00 01 or %i4, %g1, %i4 if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d41c: 9a 07 bf fc add %fp, -4, %o5 in_length = block_size; 4000d420: b9 2f 20 10 sll %i4, 0x10, %i4 if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d424: 98 07 bf f8 add %fp, -8, %o4 in_length = block_size; 4000d428: bb 37 20 10 srl %i4, 0x10, %i5 if (!rtems_rtl_obj_cache_read (comp->cache, comp->fd, comp->offset, 4000d42c: 7f ff fe 4e call 4000cd64 4000d430: fa 27 bf fc st %i5, [ %fp + -4 ] 4000d434: 80 a2 20 00 cmp %o0, 0 4000d438: 02 80 00 3a be 4000d520 <== NEVER TAKEN 4000d43c: d6 07 bf fc ld [ %fp + -4 ], %o3 (void**) &input, &in_length)) return false; if (in_length != block_size) 4000d440: 80 a7 40 0b cmp %i5, %o3 4000d444: 12 80 00 48 bne 4000d564 <== NEVER TAKEN 4000d448: 94 10 00 1d mov %i5, %o2 rtems_rtl_set_error (EIO, "compressed read failed: bs=%u in=%zu", block_size, in_length); return false; } switch (comp->compression) 4000d44c: c2 06 20 08 ld [ %i0 + 8 ], %g1 4000d450: 80 a0 60 00 cmp %g1, 0 4000d454: 02 80 00 37 be 4000d530 <== NEVER TAKEN 4000d458: 80 a0 60 01 cmp %g1, 1 4000d45c: 12 80 00 2e bne 4000d514 <== NEVER TAKEN 4000d460: 13 10 00 c4 sethi %hi(0x40031000), %o1 memcpy (comp->buffer, input, in_length); decompressed = in_length; break; case RTEMS_RTL_COMP_LZ77: decompressed = fastlz_decompress (input, in_length, 4000d464: d6 06 20 18 ld [ %i0 + 0x18 ], %o3 4000d468: d4 06 20 20 ld [ %i0 + 0x20 ], %o2 4000d46c: d0 07 bf f8 ld [ %fp + -8 ], %o0 4000d470: 7f ff f2 e3 call 40009ffc 4000d474: 92 10 00 1d mov %i5, %o1 comp->buffer, comp->size); if (decompressed == 0) 4000d478: 80 a2 20 00 cmp %o0, 0 4000d47c: 22 80 00 42 be,a 4000d584 <== NEVER TAKEN 4000d480: 90 10 20 09 mov 9, %o0 <== NOT EXECUTED default: rtems_rtl_set_error (EINVAL, "bad compression type"); return false; } comp->offset += block_size; 4000d484: c4 1e 20 10 ldd [ %i0 + 0x10 ], %g2 4000d488: b9 37 20 10 srl %i4, 0x10, %i4 comp->level = decompressed; 4000d48c: d0 26 20 1c st %o0, [ %i0 + 0x1c ] comp->offset += block_size; 4000d490: 9a 80 c0 1c addcc %g3, %i4, %o5 4000d494: 98 40 a0 00 addx %g2, 0, %o4 comp->level = decompressed; 4000d498: ba 10 00 08 mov %o0, %i5 buffer_level = length > comp->level ? comp->level : length; 4000d49c: 80 a7 40 1a cmp %i5, %i2 4000d4a0: 18 bf ff c8 bgu 4000d3c0 4000d4a4: d8 3e 20 10 std %o4, [ %i0 + 0x10 ] if (buffer_level) 4000d4a8: 80 a7 60 00 cmp %i5, 0 4000d4ac: 22 bf ff ca be,a 4000d3d4 <== NEVER TAKEN 4000d4b0: d0 1e 00 00 ldd [ %i0 ], %o0 <== NOT EXECUTED memcpy (bin, comp->buffer, buffer_level); 4000d4b4: d2 06 20 20 ld [ %i0 + 0x20 ], %o1 4000d4b8: 94 10 00 1d mov %i5, %o2 4000d4bc: 40 00 36 2a call 4001ad64 4000d4c0: 90 10 00 19 mov %i1, %o0 if ((comp->level - buffer_level) != 0) 4000d4c4: d4 06 20 1c ld [ %i0 + 0x1c ], %o2 4000d4c8: 80 a2 80 1d cmp %o2, %i5 4000d4cc: 02 80 00 07 be 4000d4e8 4000d4d0: 82 10 00 1d mov %i5, %g1 memmove (comp->buffer, 4000d4d4: d0 06 20 20 ld [ %i0 + 0x20 ], %o0 4000d4d8: 94 22 80 1d sub %o2, %i5, %o2 4000d4dc: 40 00 36 5e call 4001ae54 4000d4e0: 92 02 00 1d add %o0, %i5, %o1 4000d4e4: c2 06 20 1c ld [ %i0 + 0x1c ], %g1 comp->read += buffer_level; 4000d4e8: c4 06 20 24 ld [ %i0 + 0x24 ], %g2 comp->level -= buffer_level; 4000d4ec: 82 20 40 1d sub %g1, %i5, %g1 comp->read += buffer_level; 4000d4f0: 84 00 80 1d add %g2, %i5, %g2 comp->level -= buffer_level; 4000d4f4: c2 26 20 1c st %g1, [ %i0 + 0x1c ] if (length) 4000d4f8: b4 a6 80 1d subcc %i2, %i5, %i2 4000d4fc: 12 80 00 29 bne 4000d5a0 4000d500: c4 26 20 24 st %g2, [ %i0 + 0x24 ] } } return true; 4000d504: b0 10 20 01 mov 1, %i0 4000d508: b0 0e 20 ff and %i0, 0xff, %i0 } 4000d50c: 81 c7 e0 08 ret 4000d510: 81 e8 00 00 restore rtems_rtl_set_error (EINVAL, "bad compression type"); 4000d514: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000d518: 7f ff fa 35 call 4000bdec <== NOT EXECUTED 4000d51c: 92 12 61 60 or %o1, 0x160, %o1 <== NOT EXECUTED return false; 4000d520: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000d524: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED } 4000d528: 81 c7 e0 08 ret <== NOT EXECUTED 4000d52c: 81 e8 00 00 restore <== NOT EXECUTED memcpy (comp->buffer, input, in_length); 4000d530: d2 07 bf f8 ld [ %fp + -8 ], %o1 <== NOT EXECUTED 4000d534: d0 06 20 20 ld [ %i0 + 0x20 ], %o0 <== NOT EXECUTED 4000d538: 40 00 36 0b call 4001ad64 <== NOT EXECUTED 4000d53c: 94 10 00 1d mov %i5, %o2 <== NOT EXECUTED break; 4000d540: 10 bf ff d1 b 4000d484 <== NOT EXECUTED 4000d544: d0 07 bf fc ld [ %fp + -4 ], %o0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "not open"); 4000d548: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED return false; 4000d54c: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "not open"); 4000d550: 92 12 61 10 or %o1, 0x110, %o1 <== NOT EXECUTED 4000d554: 7f ff fa 26 call 4000bdec <== NOT EXECUTED 4000d558: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED } 4000d55c: 81 c7 e0 08 ret <== NOT EXECUTED 4000d560: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_set_error (EIO, "compressed read failed: bs=%u in=%zu", 4000d564: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED 4000d568: 90 10 20 05 mov 5, %o0 <== NOT EXECUTED 4000d56c: 92 12 61 20 or %o1, 0x120, %o1 <== NOT EXECUTED 4000d570: 7f ff fa 1f call 4000bdec <== NOT EXECUTED 4000d574: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000d578: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000d57c: 81 c7 e0 08 ret <== NOT EXECUTED 4000d580: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_set_error (EBADF, "decompression failed"); 4000d584: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED return false; 4000d588: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EBADF, "decompression failed"); 4000d58c: 7f ff fa 18 call 4000bdec <== NOT EXECUTED 4000d590: 92 12 61 48 or %o1, 0x148, %o1 <== NOT EXECUTED 4000d594: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED 4000d598: 81 c7 e0 08 ret <== NOT EXECUTED 4000d59c: 81 e8 00 00 restore <== NOT EXECUTED bin += buffer_level; 4000d5a0: 10 bf ff 8c b 4000d3d0 4000d5a4: b2 06 40 1d add %i1, %i5, %i1 =============================================================================== 4000c404 : rtems_rtl_obj_cache* cache, int fd, int compression, off_t offset) { if (!rtl) 4000c404: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000c408: c2 00 61 e4 ld [ %g1 + 0x1e4 ], %g1 ! 400361e4 4000c40c: 80 a0 60 00 cmp %g1, 0 4000c410: 02 80 00 07 be 4000c42c <== NEVER TAKEN 4000c414: 82 00 60 f8 add %g1, 0xf8, %g1 { *decomp = NULL; } else { *decomp = &rtl->decomp; 4000c418: c2 22 00 00 st %g1, [ %o0 ] rtems_rtl_obj_comp_set (*decomp, cache, fd, compression, offset); 4000c41c: 90 10 00 01 mov %g1, %o0 4000c420: 82 13 c0 00 mov %o7, %g1 4000c424: 40 00 03 cf call 4000d360 4000c428: 9e 10 40 00 mov %g1, %o7 } } 4000c42c: 81 c3 e0 08 retl <== NOT EXECUTED 4000c430: c0 22 00 00 clr [ %o0 ] <== NOT EXECUTED =============================================================================== 4000e4d8 : { 4000e4d8: 9d e3 bf a0 save %sp, -96, %sp return rtems_rtl_parse_name (name, &(obj->aname), &(obj->oname), &(obj->ooffset)); 4000e4dc: 90 10 00 19 mov %i1, %o0 4000e4e0: 96 06 20 20 add %i0, 0x20, %o3 4000e4e4: 94 06 20 18 add %i0, 0x18, %o2 4000e4e8: 7f ff fd dd call 4000dc5c 4000e4ec: 92 06 20 1c add %i0, 0x1c, %o1 if (!rtems_rtl_obj_parse_name (obj, name)) 4000e4f0: 80 a2 20 00 cmp %o0, 0 4000e4f4: 02 80 00 12 be 4000e53c <== NEVER TAKEN 4000e4f8: ba 10 00 08 mov %o0, %i5 4000e4fc: fa 06 20 1c ld [ %i0 + 0x1c ], %i5 if (rtems_rtl_obj_aname_valid (obj)) 4000e500: 80 a7 60 00 cmp %i5, 0 4000e504: 02 80 00 1a be 4000e56c <== ALWAYS TAKEN 4000e508: 01 00 00 00 nop rtl = rtems_rtl_lock (); 4000e50c: 7f ff f7 ca call 4000c434 <== NOT EXECUTED 4000e510: 01 00 00 00 nop <== NOT EXECUTED if (!rtems_rtl_find_file (pname, rtl->paths, &obj->fname, &obj->fsize)) 4000e514: d2 02 20 70 ld [ %o0 + 0x70 ], %o1 <== NOT EXECUTED 4000e518: 96 06 20 28 add %i0, 0x28, %o3 <== NOT EXECUTED 4000e51c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4000e520: 7f ff f6 5b call 4000be8c <== NOT EXECUTED 4000e524: 94 06 20 14 add %i0, 0x14, %o2 <== NOT EXECUTED 4000e528: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000e52c: 02 80 00 07 be 4000e548 <== NOT EXECUTED 4000e530: ba 10 00 08 mov %o0, %i5 <== NOT EXECUTED rtems_rtl_unlock (); 4000e534: 7f ff f8 c5 call 4000c848 4000e538: 01 00 00 00 nop } 4000e53c: b0 0f 60 ff and %i5, 0xff, %i0 4000e540: 81 c7 e0 08 ret 4000e544: 81 e8 00 00 restore rtems_rtl_set_error (ENOENT, "file not found"); 4000e548: 90 10 20 02 mov 2, %o0 <== NOT EXECUTED 4000e54c: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED 4000e550: 92 12 63 48 or %o1, 0x348, %o1 ! 40031348 <== NOT EXECUTED 4000e554: 7f ff f6 26 call 4000bdec <== NOT EXECUTED 4000e558: b0 0f 60 ff and %i5, 0xff, %i0 <== NOT EXECUTED rtems_rtl_unlock (); 4000e55c: 7f ff f8 bb call 4000c848 <== NOT EXECUTED 4000e560: 01 00 00 00 nop <== NOT EXECUTED } 4000e564: 81 c7 e0 08 ret <== NOT EXECUTED 4000e568: 81 e8 00 00 restore <== NOT EXECUTED rtl = rtems_rtl_lock (); 4000e56c: 7f ff f7 b2 call 4000c434 4000e570: fa 06 20 18 ld [ %i0 + 0x18 ], %i5 if (!rtems_rtl_find_file (pname, rtl->paths, &obj->fname, &obj->fsize)) 4000e574: d2 02 20 70 ld [ %o0 + 0x70 ], %o1 4000e578: 96 06 20 28 add %i0, 0x28, %o3 4000e57c: 90 10 00 1d mov %i5, %o0 4000e580: 7f ff f6 43 call 4000be8c 4000e584: 94 06 20 14 add %i0, 0x14, %o2 4000e588: 80 a2 20 00 cmp %o0, 0 4000e58c: 12 bf ff ea bne 4000e534 <== ALWAYS TAKEN 4000e590: ba 10 00 08 mov %o0, %i5 rtems_rtl_set_error (ENOENT, "file not found"); 4000e594: 10 bf ff ee b 4000e54c <== NOT EXECUTED 4000e598: 90 10 20 02 mov 2, %o0 <== NOT EXECUTED =============================================================================== 4000db40 : { 4000db40: 9d e3 bf a0 save %sp, -96, %sp if (obj->users || ((obj->flags & RTEMS_RTL_OBJ_LOCKED) != 0)) 4000db44: c2 06 20 0c ld [ %i0 + 0xc ], %g1 4000db48: 80 a0 60 00 cmp %g1, 0 4000db4c: 12 80 00 39 bne 4000dc30 <== NEVER TAKEN 4000db50: 90 10 20 16 mov 0x16, %o0 4000db54: c2 06 20 08 ld [ %i0 + 8 ], %g1 4000db58: 80 88 60 01 btst 1, %g1 4000db5c: 12 80 00 36 bne 4000dc34 <== NEVER TAKEN 4000db60: 13 10 00 c4 sethi %hi(0x40031000), %o1 if (!rtems_chain_is_node_off_chain (&obj->link)) 4000db64: c2 06 00 00 ld [ %i0 ], %g1 4000db68: 80 a0 60 00 cmp %g1, 0 4000db6c: 02 80 00 05 be 4000db80 <== NEVER TAKEN 4000db70: 92 06 20 5c add %i0, 0x5c, %o1 rtems_chain_extract (&obj->link); 4000db74: 40 00 11 78 call 40012154 4000db78: 90 10 00 18 mov %i0, %o0 rtems_rtl_alloc_module_del (&obj->text_base, &obj->const_base, &obj->eh_base, 4000db7c: 92 06 20 5c add %i0, 0x5c, %o1 4000db80: 98 06 20 6c add %i0, 0x6c, %o4 4000db84: 96 06 20 68 add %i0, 0x68, %o3 4000db88: 94 06 20 60 add %i0, 0x60, %o2 4000db8c: 7f ff f2 70 call 4000a54c 4000db90: 90 06 20 54 add %i0, 0x54, %o0 rtems_rtl_symbol_obj_erase (obj); 4000db94: 40 00 0a 75 call 40010568 4000db98: 90 10 00 18 mov %i0, %o0 4000db9c: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 if (rtems_rtl_obj_oname_valid (obj)) 4000dba0: 80 a2 60 00 cmp %o1, 0 4000dba4: 22 80 00 05 be,a 4000dbb8 <== NEVER TAKEN 4000dba8: d2 06 20 1c ld [ %i0 + 0x1c ], %o1 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) obj->oname); 4000dbac: 7f ff f2 47 call 4000a4c8 4000dbb0: 90 10 20 00 clr %o0 4000dbb4: d2 06 20 1c ld [ %i0 + 0x1c ], %o1 if (rtems_rtl_obj_aname_valid (obj)) 4000dbb8: 80 a2 60 00 cmp %o1, 0 4000dbbc: 22 80 00 05 be,a 4000dbd0 <== ALWAYS TAKEN 4000dbc0: d2 06 20 14 ld [ %i0 + 0x14 ], %o1 rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) obj->aname); 4000dbc4: 7f ff f2 41 call 4000a4c8 <== NOT EXECUTED 4000dbc8: 90 10 20 00 clr %o0 <== NOT EXECUTED 4000dbcc: d2 06 20 14 ld [ %i0 + 0x14 ], %o1 <== NOT EXECUTED if (rtems_rtl_obj_fname_valid (obj)) 4000dbd0: 80 a2 60 00 cmp %o1, 0 4000dbd4: 22 80 00 05 be,a 4000dbe8 <== NEVER TAKEN 4000dbd8: d0 06 20 80 ld [ %i0 + 0x80 ], %o0 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) obj->fname); 4000dbdc: 7f ff f2 3b call 4000a4c8 4000dbe0: 90 10 20 00 clr %o0 if (obj->sec_num) 4000dbe4: d0 06 20 80 ld [ %i0 + 0x80 ], %o0 4000dbe8: 80 a2 20 00 cmp %o0, 0 4000dbec: 22 80 00 05 be,a 4000dc00 4000dbf0: d2 06 20 88 ld [ %i0 + 0x88 ], %o1 free (obj->sec_num); 4000dbf4: 7f ff e6 38 call 400074d4 4000dbf8: 01 00 00 00 nop if (obj->linkmap) 4000dbfc: d2 06 20 88 ld [ %i0 + 0x88 ], %o1 4000dc00: 80 a2 60 00 cmp %o1, 0 4000dc04: 22 80 00 05 be,a 4000dc18 <== NEVER TAKEN 4000dc08: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) obj->linkmap); 4000dc0c: 7f ff f2 2f call 4000a4c8 4000dc10: 90 10 20 00 clr %o0 rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, obj); 4000dc14: 92 10 00 18 mov %i0, %o1 4000dc18: 90 10 20 00 clr %o0 4000dc1c: 7f ff f2 2b call 4000a4c8 4000dc20: b0 10 20 01 mov 1, %i0 } 4000dc24: b0 0e 20 01 and %i0, 1, %i0 4000dc28: 81 c7 e0 08 ret 4000dc2c: 81 e8 00 00 restore rtems_rtl_set_error (EINVAL, "cannot free obj still in use"); 4000dc30: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED return false; 4000dc34: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "cannot free obj still in use"); 4000dc38: 92 12 62 08 or %o1, 0x208, %o1 <== NOT EXECUTED 4000dc3c: 7f ff f8 6c call 4000bdec <== NOT EXECUTED 4000dc40: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED } 4000dc44: 81 c7 e0 08 ret <== NOT EXECUTED 4000dc48: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000ec58 : return false; } bool rtems_rtl_obj_load (rtems_rtl_obj* obj) { 4000ec58: 9d e3 bf a0 save %sp, -96, %sp 4000ec5c: d0 06 20 14 ld [ %i0 + 0x14 ], %o0 int fd; if (!rtems_rtl_obj_fname_valid (obj)) 4000ec60: 80 a2 20 00 cmp %o0, 0 4000ec64: 22 80 00 24 be,a 4000ecf4 <== NEVER TAKEN 4000ec68: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED { rtems_rtl_set_error (ENOMEM, "invalid object file name path"); return false; } fd = open (rtems_rtl_obj_fname (obj), O_RDONLY); 4000ec6c: 7f ff e5 cb call 40008398 4000ec70: 92 10 20 00 clr %o1 if (fd < 0) 4000ec74: ba 92 20 00 orcc %o0, 0, %i5 4000ec78: 06 80 00 26 bl 4000ed10 <== NEVER TAKEN 4000ec7c: 90 10 20 0c mov 0xc, %o0 /* * Find the object file in the archive if it is an archive that * has been opened. */ if (rtems_rtl_obj_aname_valid (obj)) 4000ec80: c2 06 20 1c ld [ %i0 + 0x1c ], %g1 4000ec84: 80 a0 60 00 cmp %g1, 0 4000ec88: 02 80 00 07 be 4000eca4 <== ALWAYS TAKEN 4000ec8c: 92 10 00 1d mov %i5, %o1 { if (!rtems_rtl_obj_archive_find (obj, fd)) 4000ec90: 7f ff fc b1 call 4000df54 <== NOT EXECUTED 4000ec94: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4000ec98: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000ec9c: 02 80 00 24 be 4000ed2c <== NOT EXECUTED 4000eca0: b8 10 00 08 mov %o0, %i4 <== NOT EXECUTED if (loaders[l].check (obj, fd)) 4000eca4: 92 10 00 1d mov %i5, %o1 4000eca8: 40 00 00 c8 call 4000efc8 4000ecac: 90 10 00 18 mov %i0, %o0 4000ecb0: 80 a2 20 00 cmp %o0, 0 4000ecb4: 12 80 00 23 bne 4000ed40 4000ecb8: 92 10 00 1d mov %i5, %o1 4000ecbc: 7f ff f2 44 call 4000b5cc 4000ecc0: 90 10 00 18 mov %i0, %o0 4000ecc4: 80 a2 20 00 cmp %o0, 0 4000ecc8: 12 80 00 36 bne 4000eda0 <== ALWAYS TAKEN 4000eccc: 13 10 00 c5 sethi %hi(0x40031400), %o1 rtems_rtl_set_error (ENOENT, "no format loader found"); 4000ecd0: 90 10 20 02 mov 2, %o0 <== NOT EXECUTED 4000ecd4: 7f ff f4 46 call 4000bdec <== NOT EXECUTED 4000ecd8: 92 12 60 d8 or %o1, 0xd8, %o1 <== NOT EXECUTED /* * Call the format specific loader. */ if (!rtems_rtl_obj_file_load (obj, fd)) { close (fd); 4000ecdc: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4000ece0: 7f ff e1 8f call 4000731c <== NOT EXECUTED 4000ece4: b8 10 20 00 clr %i4 <== NOT EXECUTED } close (fd); return true; } 4000ece8: b0 0f 20 ff and %i4, 0xff, %i0 <== NOT EXECUTED 4000ecec: 81 c7 e0 08 ret <== NOT EXECUTED 4000ecf0: 81 e8 00 00 restore <== NOT EXECUTED return false; 4000ecf4: b8 10 20 00 clr %i4 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "invalid object file name path"); 4000ecf8: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED } 4000ecfc: b0 0f 20 ff and %i4, 0xff, %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "invalid object file name path"); 4000ed00: 7f ff f4 3b call 4000bdec <== NOT EXECUTED 4000ed04: 92 12 60 a0 or %o1, 0xa0, %o1 <== NOT EXECUTED } 4000ed08: 81 c7 e0 08 ret <== NOT EXECUTED 4000ed0c: 81 e8 00 00 restore <== NOT EXECUTED return false; 4000ed10: b8 10 20 00 clr %i4 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "opening for object file"); 4000ed14: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED } 4000ed18: b0 0f 20 ff and %i4, 0xff, %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "opening for object file"); 4000ed1c: 7f ff f4 34 call 4000bdec <== NOT EXECUTED 4000ed20: 92 12 60 c0 or %o1, 0xc0, %o1 <== NOT EXECUTED } 4000ed24: 81 c7 e0 08 ret <== NOT EXECUTED 4000ed28: 81 e8 00 00 restore <== NOT EXECUTED close (fd); 4000ed2c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4000ed30: 7f ff e1 7b call 4000731c <== NOT EXECUTED 4000ed34: b0 0f 20 ff and %i4, 0xff, %i0 <== NOT EXECUTED } 4000ed38: 81 c7 e0 08 ret <== NOT EXECUTED 4000ed3c: 81 e8 00 00 restore <== NOT EXECUTED if (loaders[l].check (obj, fd)) 4000ed40: 03 10 00 3c sethi %hi(0x4000f000), %g1 for (l = 0; l < (sizeof (loaders) / sizeof (rtems_rtl_loader_table)); ++l) 4000ed44: 84 10 20 00 clr %g2 if (loaders[l].check (obj, fd)) 4000ed48: 82 10 60 90 or %g1, 0x90, %g1 obj->format = l; 4000ed4c: c4 26 20 10 st %g2, [ %i0 + 0x10 ] return loaders[l].load (obj, fd); 4000ed50: 92 10 00 1d mov %i5, %o1 4000ed54: 9f c0 40 00 call %g1 4000ed58: 90 10 00 18 mov %i0, %o0 if (!rtems_rtl_obj_file_load (obj, fd)) 4000ed5c: 80 a2 20 00 cmp %o0, 0 4000ed60: 02 bf ff df be 4000ecdc <== NEVER TAKEN 4000ed64: b8 10 00 08 mov %o0, %i4 if (!_rtld_linkmap_add (obj)) /* For GDB */ 4000ed68: 7f ff ee 85 call 4000a77c <_rtld_linkmap_add> 4000ed6c: 90 10 00 18 mov %i0, %o0 4000ed70: 80 a2 20 00 cmp %o0, 0 4000ed74: 02 80 00 06 be 4000ed8c <== NEVER TAKEN 4000ed78: 90 10 00 1d mov %i5, %o0 close (fd); 4000ed7c: 7f ff e1 68 call 4000731c 4000ed80: b0 0f 20 ff and %i4, 0xff, %i0 } 4000ed84: 81 c7 e0 08 ret 4000ed88: 81 e8 00 00 restore close (fd); 4000ed8c: 7f ff e1 64 call 4000731c <== NOT EXECUTED 4000ed90: b8 10 20 00 clr %i4 <== NOT EXECUTED } 4000ed94: b0 0f 20 ff and %i4, 0xff, %i0 <== NOT EXECUTED 4000ed98: 81 c7 e0 08 ret <== NOT EXECUTED 4000ed9c: 81 e8 00 00 restore <== NOT EXECUTED if (loaders[l].check (obj, fd)) 4000eda0: 03 10 00 2d sethi %hi(0x4000b400), %g1 for (l = 0; l < (sizeof (loaders) / sizeof (rtems_rtl_loader_table)); ++l) 4000eda4: 84 10 20 01 mov 1, %g2 if (loaders[l].check (obj, fd)) 4000eda8: 10 bf ff e9 b 4000ed4c 4000edac: 82 10 62 90 or %g1, 0x290, %g1 =============================================================================== 4000e818 : { 4000e818: 9d e3 bf 68 save %sp, -152, %sp summer.mask = mask; 4000e81c: 82 10 20 01 mov 1, %g1 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e820: ba 06 20 2c add %i0, 0x2c, %i5 4000e824: 2d 10 00 36 sethi %hi(0x4000d800), %l6 summer.mask = mask; 4000e828: c2 27 bf f8 st %g1, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e82c: 92 15 a2 a4 or %l6, 0x2a4, %o1 4000e830: 94 07 bf f8 add %fp, -8, %o2 summer.size = 0; 4000e834: c0 27 bf fc clr [ %fp + -4 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e838: 7f ff ef be call 4000a730 4000e83c: 90 10 00 1d mov %i5, %o0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e840: 39 10 00 35 sethi %hi(0x4000d400), %i4 return summer.size; 4000e844: e0 07 bf fc ld [ %fp + -4 ], %l0 aligner.mask = mask; 4000e848: aa 10 20 02 mov 2, %l5 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e84c: 94 07 bf f8 add %fp, -8, %o2 4000e850: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000e854: ea 27 bf f8 st %l5, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e858: 90 10 00 1d mov %i5, %o0 4000e85c: 7f ff ef b5 call 4000a730 4000e860: c0 27 bf fc clr [ %fp + -4 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e864: 92 15 a2 a4 or %l6, 0x2a4, %o1 return aligner.alignment; 4000e868: e2 07 bf fc ld [ %fp + -4 ], %l1 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e86c: 94 07 bf f8 add %fp, -8, %o2 summer.mask = mask; 4000e870: ea 27 bf f8 st %l5, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e874: 90 10 00 1d mov %i5, %o0 4000e878: 7f ff ef ae call 4000a730 4000e87c: c0 27 bf fc clr [ %fp + -4 ] text_size = rtems_rtl_obj_text_size (obj) + rtems_rtl_obj_const_alignment (obj); 4000e880: a2 04 40 10 add %l1, %l0, %l1 aligner.mask = mask; 4000e884: a8 10 20 10 mov 0x10, %l4 return summer.size; 4000e888: e0 07 bf fc ld [ %fp + -4 ], %l0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e88c: 94 07 bf f8 add %fp, -8, %o2 4000e890: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000e894: e8 27 bf f8 st %l4, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e898: 90 10 00 1d mov %i5, %o0 4000e89c: 7f ff ef a5 call 4000a730 4000e8a0: c0 27 bf fc clr [ %fp + -4 ] return aligner.alignment; 4000e8a4: c2 07 bf fc ld [ %fp + -4 ], %g1 const_size = rtems_rtl_obj_const_size (obj) + rtems_rtl_obj_eh_alignment (obj); 4000e8a8: 82 00 40 10 add %g1, %l0, %g1 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8ac: 92 15 a2 a4 or %l6, 0x2a4, %o1 const_size = rtems_rtl_obj_const_size (obj) + rtems_rtl_obj_eh_alignment (obj); 4000e8b0: c2 27 bf f4 st %g1, [ %fp + -12 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8b4: 94 07 bf f8 add %fp, -8, %o2 summer.mask = mask; 4000e8b8: e8 27 bf f8 st %l4, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8bc: 90 10 00 1d mov %i5, %o0 4000e8c0: 7f ff ef 9c call 4000a730 4000e8c4: c0 27 bf fc clr [ %fp + -4 ] aligner.mask = mask; 4000e8c8: a6 10 20 04 mov 4, %l3 return summer.size; 4000e8cc: e0 07 bf fc ld [ %fp + -4 ], %l0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8d0: 94 07 bf f8 add %fp, -8, %o2 4000e8d4: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000e8d8: e6 27 bf f8 st %l3, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8dc: 90 10 00 1d mov %i5, %o0 4000e8e0: 7f ff ef 94 call 4000a730 4000e8e4: c0 27 bf fc clr [ %fp + -4 ] return aligner.alignment; 4000e8e8: c2 07 bf fc ld [ %fp + -4 ], %g1 eh_size = rtems_rtl_obj_eh_size (obj) + rtems_rtl_obj_data_alignment (obj); 4000e8ec: a0 00 40 10 add %g1, %l0, %l0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8f0: 92 15 a2 a4 or %l6, 0x2a4, %o1 4000e8f4: 94 07 bf f8 add %fp, -8, %o2 summer.mask = mask; 4000e8f8: e6 27 bf f8 st %l3, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e8fc: 90 10 00 1d mov %i5, %o0 4000e900: 7f ff ef 8c call 4000a730 4000e904: c0 27 bf fc clr [ %fp + -4 ] aligner.mask = mask; 4000e908: a4 10 20 08 mov 8, %l2 return summer.size; 4000e90c: ee 07 bf fc ld [ %fp + -4 ], %l7 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e910: 94 07 bf f8 add %fp, -8, %o2 4000e914: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000e918: e4 27 bf f8 st %l2, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e91c: 90 10 00 1d mov %i5, %o0 4000e920: 7f ff ef 84 call 4000a730 4000e924: c0 27 bf fc clr [ %fp + -4 ] return aligner.alignment; 4000e928: c2 07 bf fc ld [ %fp + -4 ], %g1 data_size = rtems_rtl_obj_data_size (obj) + rtems_rtl_obj_bss_alignment (obj); 4000e92c: ae 00 40 17 add %g1, %l7, %l7 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e930: 92 15 a2 a4 or %l6, 0x2a4, %o1 4000e934: 94 07 bf f8 add %fp, -8, %o2 summer.mask = mask; 4000e938: e4 27 bf f8 st %l2, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000e93c: 90 10 00 1d mov %i5, %o0 4000e940: 7f ff ef 7c call 4000a730 4000e944: c0 27 bf fc clr [ %fp + -4 ] return summer.size; 4000e948: ec 07 bf fc ld [ %fp + -4 ], %l6 obj->text_size = text_size; 4000e94c: e2 26 20 58 st %l1, [ %i0 + 0x58 ] if (!rtems_rtl_alloc_module_new (&obj->text_base, text_size, 4000e950: 84 06 20 68 add %i0, 0x68, %g2 obj->eh_size = eh_size; 4000e954: e0 26 20 64 st %l0, [ %i0 + 0x64 ] if (!rtems_rtl_alloc_module_new (&obj->text_base, text_size, 4000e958: 86 06 20 6c add %i0, 0x6c, %g3 obj->bss_size = bss_size; 4000e95c: ec 26 20 70 st %l6, [ %i0 + 0x70 ] if (!rtems_rtl_alloc_module_new (&obj->text_base, text_size, 4000e960: 90 06 20 54 add %i0, 0x54, %o0 4000e964: ec 23 a0 68 st %l6, [ %sp + 0x68 ] 4000e968: 94 06 20 5c add %i0, 0x5c, %o2 4000e96c: c6 23 a0 64 st %g3, [ %sp + 0x64 ] 4000e970: 98 06 20 60 add %i0, 0x60, %o4 4000e974: ee 23 a0 60 st %l7, [ %sp + 0x60 ] 4000e978: 9a 10 00 10 mov %l0, %o5 4000e97c: c4 23 a0 5c st %g2, [ %sp + 0x5c ] 4000e980: 92 10 00 11 mov %l1, %o1 4000e984: d6 07 bf f4 ld [ %fp + -12 ], %o3 4000e988: c4 27 bf e0 st %g2, [ %fp + -32 ] 4000e98c: c6 27 bf dc st %g3, [ %fp + -36 ] 4000e990: d0 27 bf ec st %o0, [ %fp + -20 ] 4000e994: d4 27 bf e8 st %o2, [ %fp + -24 ] 4000e998: 7f ff ef 04 call 4000a5a8 4000e99c: d8 27 bf e4 st %o4, [ %fp + -28 ] 4000e9a0: 80 a2 20 00 cmp %o0, 0 4000e9a4: 02 80 00 58 be 4000eb04 <== NEVER TAKEN 4000e9a8: d0 2f bf f3 stb %o0, [ %fp + -13 ] obj->exec_size = text_size + const_size + eh_size + data_size + bss_size; 4000e9ac: c2 07 bf f4 ld [ %fp + -12 ], %g1 4000e9b0: 84 04 40 01 add %l1, %g1, %g2 4000e9b4: 84 00 80 16 add %g2, %l6, %g2 4000e9b8: 84 00 80 10 add %g2, %l0, %g2 4000e9bc: 84 00 80 17 add %g2, %l7, %g2 4000e9c0: c4 26 20 74 st %g2, [ %i0 + 0x74 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD_SECT)) 4000e9c4: 40 00 07 10 call 40010604 4000e9c8: 90 10 21 00 mov 0x100, %o0 4000e9cc: 80 a2 20 00 cmp %o0, 0 4000e9d0: 12 80 00 55 bne 4000eb24 4000e9d4: 82 10 20 01 mov 1, %g1 rtems_rtl_obj_sections_link_order (RTEMS_RTL_OBJ_SECT_TEXT, obj); 4000e9d8: 90 10 20 01 mov 1, %o0 4000e9dc: 7f ff fb 38 call 4000d6bc 4000e9e0: 92 10 00 18 mov %i0, %o1 rtems_rtl_obj_sections_link_order (RTEMS_RTL_OBJ_SECT_CONST, obj); 4000e9e4: 92 10 00 18 mov %i0, %o1 4000e9e8: 7f ff fb 35 call 4000d6bc 4000e9ec: 90 10 20 02 mov 2, %o0 rtems_rtl_obj_sections_link_order (RTEMS_RTL_OBJ_SECT_EH, obj); 4000e9f0: 92 10 00 18 mov %i0, %o1 4000e9f4: 7f ff fb 32 call 4000d6bc 4000e9f8: 90 10 20 10 mov 0x10, %o0 rtems_rtl_obj_sections_link_order (RTEMS_RTL_OBJ_SECT_DATA, obj); 4000e9fc: 92 10 00 18 mov %i0, %o1 4000ea00: 7f ff fb 2f call 4000d6bc 4000ea04: 90 10 20 04 mov 4, %o0 if (!rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_TEXT, 4000ea08: d6 06 20 54 ld [ %i0 + 0x54 ], %o3 4000ea0c: 9a 10 00 1b mov %i3, %o5 4000ea10: 98 10 00 1a mov %i2, %o4 4000ea14: 94 10 00 19 mov %i1, %o2 4000ea18: 92 10 00 18 mov %i0, %o1 4000ea1c: 7f ff fb 7d call 4000d810 4000ea20: 90 10 20 01 mov 1, %o0 4000ea24: 80 a2 20 00 cmp %o0, 0 4000ea28: 32 80 00 0d bne,a 4000ea5c <== ALWAYS TAKEN 4000ea2c: d6 06 20 5c ld [ %i0 + 0x5c ], %o3 rtems_rtl_alloc_module_del (&obj->text_base, &obj->const_base, &obj->eh_base, 4000ea30: d8 07 bf dc ld [ %fp + -36 ], %o4 <== NOT EXECUTED 4000ea34: d6 07 bf e0 ld [ %fp + -32 ], %o3 <== NOT EXECUTED 4000ea38: d4 07 bf e4 ld [ %fp + -28 ], %o2 <== NOT EXECUTED 4000ea3c: d2 07 bf e8 ld [ %fp + -24 ], %o1 <== NOT EXECUTED 4000ea40: d0 07 bf ec ld [ %fp + -20 ], %o0 <== NOT EXECUTED 4000ea44: 7f ff ee c2 call 4000a54c <== NOT EXECUTED 4000ea48: c0 2f bf f3 clrb [ %fp + -13 ] <== NOT EXECUTED obj->exec_size = 0; 4000ea4c: c0 26 20 74 clr [ %i0 + 0x74 ] <== NOT EXECUTED } 4000ea50: f0 0f bf f3 ldub [ %fp + -13 ], %i0 <== NOT EXECUTED 4000ea54: 81 c7 e0 08 ret <== NOT EXECUTED 4000ea58: 81 e8 00 00 restore <== NOT EXECUTED !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_CONST, 4000ea5c: 9a 10 00 1b mov %i3, %o5 4000ea60: 98 10 00 1a mov %i2, %o4 4000ea64: 94 10 00 19 mov %i1, %o2 4000ea68: 92 10 00 18 mov %i0, %o1 4000ea6c: 7f ff fb 69 call 4000d810 4000ea70: 90 10 20 02 mov 2, %o0 obj, fd, obj->text_base, handler, data) || 4000ea74: 80 a2 20 00 cmp %o0, 0 4000ea78: 02 bf ff ef be 4000ea34 <== NEVER TAKEN 4000ea7c: d8 07 bf dc ld [ %fp + -36 ], %o4 !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_EH, 4000ea80: d6 06 20 60 ld [ %i0 + 0x60 ], %o3 4000ea84: 9a 10 00 1b mov %i3, %o5 4000ea88: 98 10 00 1a mov %i2, %o4 4000ea8c: 94 10 00 19 mov %i1, %o2 4000ea90: 92 10 00 18 mov %i0, %o1 4000ea94: 7f ff fb 5f call 4000d810 4000ea98: 90 10 20 10 mov 0x10, %o0 obj, fd, obj->const_base, handler, data) || 4000ea9c: 80 a2 20 00 cmp %o0, 0 4000eaa0: 02 bf ff e5 be 4000ea34 <== NEVER TAKEN 4000eaa4: d8 07 bf dc ld [ %fp + -36 ], %o4 !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_DATA, 4000eaa8: d6 06 20 68 ld [ %i0 + 0x68 ], %o3 4000eaac: 9a 10 00 1b mov %i3, %o5 4000eab0: 98 10 00 1a mov %i2, %o4 4000eab4: 94 10 00 19 mov %i1, %o2 4000eab8: 92 10 00 18 mov %i0, %o1 4000eabc: 7f ff fb 55 call 4000d810 4000eac0: 90 10 20 04 mov 4, %o0 obj, fd, obj->eh_base, handler, data) || 4000eac4: 80 a2 20 00 cmp %o0, 0 4000eac8: 02 bf ff db be 4000ea34 <== NEVER TAKEN 4000eacc: d8 07 bf dc ld [ %fp + -36 ], %o4 !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_BSS, 4000ead0: d6 06 20 6c ld [ %i0 + 0x6c ], %o3 4000ead4: 9a 10 00 1b mov %i3, %o5 4000ead8: 98 10 00 1a mov %i2, %o4 4000eadc: 94 10 00 19 mov %i1, %o2 4000eae0: 92 10 00 18 mov %i0, %o1 4000eae4: 7f ff fb 4b call 4000d810 4000eae8: 90 10 20 08 mov 8, %o0 obj, fd, obj->data_base, handler, data) || 4000eaec: 80 a2 20 00 cmp %o0, 0 4000eaf0: 02 bf ff d1 be 4000ea34 <== NEVER TAKEN 4000eaf4: d8 07 bf dc ld [ %fp + -36 ], %o4 4000eaf8: f0 0f bf f3 ldub [ %fp + -13 ], %i0 4000eafc: 81 c7 e0 08 ret 4000eb00: 81 e8 00 00 restore obj->exec_size = 0; 4000eb04: c0 26 20 74 clr [ %i0 + 0x74 ] <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory to load obj"); 4000eb08: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000eb0c: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED 4000eb10: 7f ff f4 b7 call 4000bdec <== NOT EXECUTED 4000eb14: 92 12 63 98 or %o1, 0x398, %o1 ! 40031398 <== NOT EXECUTED } 4000eb18: f0 0f bf f3 ldub [ %fp + -13 ], %i0 <== NOT EXECUTED 4000eb1c: 81 c7 e0 08 ret <== NOT EXECUTED 4000eb20: 81 e8 00 00 restore <== NOT EXECUTED printf ("rtl: load sect: text - b:%p s:%zi a:%" PRIu32 "\n", 4000eb24: c4 06 20 54 ld [ %i0 + 0x54 ], %g2 aligner.mask = mask; 4000eb28: c2 27 bf f8 st %g1, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb2c: 94 07 bf f8 add %fp, -8, %o2 printf ("rtl: load sect: text - b:%p s:%zi a:%" PRIu32 "\n", 4000eb30: c4 27 bf d8 st %g2, [ %fp + -40 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb34: 92 17 21 a8 or %i4, 0x1a8, %o1 4000eb38: 90 10 00 1d mov %i5, %o0 4000eb3c: 7f ff ee fd call 4000a730 4000eb40: c0 27 bf fc clr [ %fp + -4 ] printf ("rtl: load sect: text - b:%p s:%zi a:%" PRIu32 "\n", 4000eb44: c4 07 bf d8 ld [ %fp + -40 ], %g2 4000eb48: d6 07 bf fc ld [ %fp + -4 ], %o3 4000eb4c: 92 10 00 02 mov %g2, %o1 4000eb50: 94 10 00 11 mov %l1, %o2 4000eb54: 11 10 00 c4 sethi %hi(0x40031000), %o0 4000eb58: 40 00 27 7c call 40018948 <__wrap_printf> 4000eb5c: 90 12 23 b0 or %o0, 0x3b0, %o0 ! 400313b0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb60: 94 07 bf f8 add %fp, -8, %o2 printf ("rtl: load sect: const - b:%p s:%zi a:%" PRIu32 "\n", 4000eb64: e2 06 20 5c ld [ %i0 + 0x5c ], %l1 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb68: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000eb6c: ea 27 bf f8 st %l5, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb70: 90 10 00 1d mov %i5, %o0 4000eb74: 7f ff ee ef call 4000a730 4000eb78: c0 27 bf fc clr [ %fp + -4 ] printf ("rtl: load sect: const - b:%p s:%zi a:%" PRIu32 "\n", 4000eb7c: d6 07 bf fc ld [ %fp + -4 ], %o3 4000eb80: d4 07 bf f4 ld [ %fp + -12 ], %o2 4000eb84: 92 10 00 11 mov %l1, %o1 4000eb88: 11 10 00 c4 sethi %hi(0x40031000), %o0 4000eb8c: 40 00 27 6f call 40018948 <__wrap_printf> 4000eb90: 90 12 23 e0 or %o0, 0x3e0, %o0 ! 400313e0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb94: 94 07 bf f8 add %fp, -8, %o2 printf ("rtl: load sect: eh - b:%p s:%zi a:%" PRIu32 "\n", 4000eb98: e2 06 20 60 ld [ %i0 + 0x60 ], %l1 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eb9c: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000eba0: e8 27 bf f8 st %l4, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000eba4: 90 10 00 1d mov %i5, %o0 4000eba8: 7f ff ee e2 call 4000a730 4000ebac: c0 27 bf fc clr [ %fp + -4 ] printf ("rtl: load sect: eh - b:%p s:%zi a:%" PRIu32 "\n", 4000ebb0: d6 07 bf fc ld [ %fp + -4 ], %o3 4000ebb4: 94 10 00 10 mov %l0, %o2 4000ebb8: 92 10 00 11 mov %l1, %o1 4000ebbc: 11 10 00 c5 sethi %hi(0x40031400), %o0 4000ebc0: 40 00 27 62 call 40018948 <__wrap_printf> 4000ebc4: 90 12 20 10 or %o0, 0x10, %o0 ! 40031410 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000ebc8: 94 07 bf f8 add %fp, -8, %o2 printf ("rtl: load sect: data - b:%p s:%zi a:%" PRIu32 "\n", 4000ebcc: e0 06 20 68 ld [ %i0 + 0x68 ], %l0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000ebd0: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000ebd4: e6 27 bf f8 st %l3, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000ebd8: 90 10 00 1d mov %i5, %o0 4000ebdc: 7f ff ee d5 call 4000a730 4000ebe0: c0 27 bf fc clr [ %fp + -4 ] printf ("rtl: load sect: data - b:%p s:%zi a:%" PRIu32 "\n", 4000ebe4: d6 07 bf fc ld [ %fp + -4 ], %o3 4000ebe8: 94 10 00 17 mov %l7, %o2 4000ebec: 92 10 00 10 mov %l0, %o1 4000ebf0: 11 10 00 c5 sethi %hi(0x40031400), %o0 4000ebf4: 40 00 27 55 call 40018948 <__wrap_printf> 4000ebf8: 90 12 20 40 or %o0, 0x40, %o0 ! 40031440 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000ebfc: 94 07 bf f8 add %fp, -8, %o2 printf ("rtl: load sect: bss - b:%p s:%zi a:%" PRIu32 "\n", 4000ec00: e0 06 20 6c ld [ %i0 + 0x6c ], %l0 rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000ec04: 92 17 21 a8 or %i4, 0x1a8, %o1 aligner.mask = mask; 4000ec08: e4 27 bf f8 st %l2, [ %fp + -8 ] rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, 4000ec0c: 90 10 00 1d mov %i5, %o0 4000ec10: 7f ff ee c8 call 4000a730 4000ec14: c0 27 bf fc clr [ %fp + -4 ] printf ("rtl: load sect: bss - b:%p s:%zi a:%" PRIu32 "\n", 4000ec18: d6 07 bf fc ld [ %fp + -4 ], %o3 4000ec1c: 94 10 00 16 mov %l6, %o2 4000ec20: 92 10 00 10 mov %l0, %o1 4000ec24: 11 10 00 c5 sethi %hi(0x40031400), %o0 4000ec28: 40 00 27 48 call 40018948 <__wrap_printf> 4000ec2c: 90 12 20 70 or %o0, 0x70, %o0 ! 40031470 rtems_rtl_obj_sections_link_order (RTEMS_RTL_OBJ_SECT_TEXT, obj); 4000ec30: 10 bf ff 6b b 4000e9dc 4000ec34: 90 10 20 01 mov 1, %o0 =============================================================================== 4000e7b0 : { 4000e7b0: 9d e3 bf a0 save %sp, -96, %sp return _Chain_Immutable_head( the_chain )->next; 4000e7b4: fa 06 20 2c ld [ %i0 + 0x2c ], %i5 return &the_chain->Tail.Node; 4000e7b8: b8 06 20 30 add %i0, 0x30, %i4 while (!rtems_chain_is_tail (&obj->sections, node)) 4000e7bc: 80 a7 40 1c cmp %i5, %i4 4000e7c0: 22 80 00 13 be,a 4000e80c <== NEVER TAKEN 4000e7c4: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED if ((sect->flags & mask) != 0) 4000e7c8: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 if (!handler (obj, fd, sect, data)) 4000e7cc: 94 10 00 1d mov %i5, %o2 4000e7d0: 96 10 00 1b mov %i3, %o3 4000e7d4: 92 10 00 19 mov %i1, %o1 if ((sect->flags & mask) != 0) 4000e7d8: 80 88 60 80 btst 0x80, %g1 4000e7dc: 02 80 00 07 be 4000e7f8 4000e7e0: 90 10 00 18 mov %i0, %o0 if (!handler (obj, fd, sect, data)) 4000e7e4: 9f c6 80 00 call %i2 4000e7e8: 01 00 00 00 nop 4000e7ec: 80 a2 20 00 cmp %o0, 0 4000e7f0: 22 80 00 08 be,a 4000e810 <== NEVER TAKEN 4000e7f4: b0 0a 20 ff and %o0, 0xff, %i0 <== NOT EXECUTED 4000e7f8: fa 07 40 00 ld [ %i5 ], %i5 while (!rtems_chain_is_tail (&obj->sections, node)) 4000e7fc: 80 a7 40 1c cmp %i5, %i4 4000e800: 32 bf ff f3 bne,a 4000e7cc 4000e804: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 return true; 4000e808: 90 10 20 01 mov 1, %o0 } 4000e80c: b0 0a 20 ff and %o0, 0xff, %i0 4000e810: 81 c7 e0 08 ret 4000e814: 81 e8 00 00 restore =============================================================================== 4000e6d0 : { 4000e6d0: 9d e3 bf a0 save %sp, -96, %sp return _Chain_Immutable_head( the_chain )->next; 4000e6d4: fa 06 20 2c ld [ %i0 + 0x2c ], %i5 return &the_chain->Tail.Node; 4000e6d8: b8 06 20 30 add %i0, 0x30, %i4 while (!rtems_chain_is_tail (&obj->sections, node)) 4000e6dc: 80 a7 40 1c cmp %i5, %i4 4000e6e0: 22 80 00 13 be,a 4000e72c <== NEVER TAKEN 4000e6e4: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED if ((sect->flags & mask) != 0) 4000e6e8: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 if (!handler (obj, fd, sect, data)) 4000e6ec: 94 10 00 1d mov %i5, %o2 4000e6f0: 96 10 00 1b mov %i3, %o3 4000e6f4: 92 10 00 19 mov %i1, %o1 if ((sect->flags & mask) != 0) 4000e6f8: 80 88 60 60 btst 0x60, %g1 4000e6fc: 02 80 00 07 be 4000e718 4000e700: 90 10 00 18 mov %i0, %o0 if (!handler (obj, fd, sect, data)) 4000e704: 9f c6 80 00 call %i2 4000e708: 01 00 00 00 nop 4000e70c: 80 a2 20 00 cmp %o0, 0 4000e710: 22 80 00 08 be,a 4000e730 <== NEVER TAKEN 4000e714: b0 0a 20 ff and %o0, 0xff, %i0 <== NOT EXECUTED 4000e718: fa 07 40 00 ld [ %i5 ], %i5 while (!rtems_chain_is_tail (&obj->sections, node)) 4000e71c: 80 a7 40 1c cmp %i5, %i4 4000e720: 32 bf ff f3 bne,a 4000e6ec 4000e724: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 return true; 4000e728: 90 10 20 01 mov 1, %o0 } 4000e72c: b0 0a 20 ff and %o0, 0xff, %i0 4000e730: 81 c7 e0 08 ret 4000e734: 81 e8 00 00 restore =============================================================================== 4000b454 : { 4000b454: 9d e3 bf 90 save %sp, -112, %sp 4000b458: c2 16 20 04 lduh [ %i0 + 4 ], %g1 sect = rtems_rtl_obj_find_section_by_index (reloc->obj, reloc->sect); 4000b45c: d2 16 20 08 lduh [ %i0 + 8 ], %o1 4000b460: d0 06 00 00 ld [ %i0 ], %o0 4000b464: 40 00 0c 90 call 4000e6a4 4000b468: ba 08 60 01 and %g1, 1, %i5 if (!sect) 4000b46c: b8 92 20 00 orcc %o0, 0, %i4 4000b470: 02 80 00 3c be 4000b560 <== NEVER TAKEN 4000b474: 80 a7 60 00 cmp %i5, 0 symvalue = (Elf_Word) (intptr_t) sym->value; 4000b478: f6 06 60 0c ld [ %i1 + 0xc ], %i3 4000b47c: c4 06 20 0c ld [ %i0 + 0xc ], %g2 if (is_rela) 4000b480: 12 80 00 22 bne 4000b508 <== ALWAYS TAKEN 4000b484: c2 06 20 10 ld [ %i0 + 0x10 ], %g1 rel.r_offset = reloc->rel[REL_R_OFFSET]; 4000b488: c4 27 bf f4 st %g2, [ %fp + -12 ] <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000b48c: 90 10 20 40 mov 0x40, %o0 <== NOT EXECUTED 4000b490: 40 00 14 5d call 40010604 <== NOT EXECUTED 4000b494: c2 27 bf f8 st %g1, [ %fp + -8 ] <== NOT EXECUTED 4000b498: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000b49c: 12 80 00 39 bne 4000b580 <== NOT EXECUTED 4000b4a0: d2 07 bf f8 ld [ %fp + -8 ], %o1 <== NOT EXECUTED if (!rtems_rtl_elf_relocate_rel (reloc->obj, &rel, sect, 4000b4a4: d8 0e 60 13 ldub [ %i1 + 0x13 ], %o4 <== NOT EXECUTED 4000b4a8: d6 06 60 08 ld [ %i1 + 8 ], %o3 <== NOT EXECUTED 4000b4ac: d0 06 00 00 ld [ %i0 ], %o0 <== NOT EXECUTED 4000b4b0: 9a 10 00 1b mov %i3, %o5 <== NOT EXECUTED 4000b4b4: 94 10 00 1c mov %i4, %o2 <== NOT EXECUTED 4000b4b8: 40 00 03 7d call 4000c2ac <== NOT EXECUTED 4000b4bc: 92 07 bf f4 add %fp, -12, %o1 <== NOT EXECUTED 4000b4c0: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000b4c4: 02 80 00 0e be 4000b4fc <== NOT EXECUTED 4000b4c8: 82 10 00 08 mov %o0, %g1 <== NOT EXECUTED if (reloc->obj->unresolved) 4000b4cc: c4 06 00 00 ld [ %i0 ], %g2 4000b4d0: c2 00 a0 50 ld [ %g2 + 0x50 ], %g1 4000b4d4: 80 a0 60 00 cmp %g1, 0 4000b4d8: 02 80 00 08 be 4000b4f8 <== NEVER TAKEN 4000b4dc: 82 00 7f ff add %g1, -1, %g1 if (!reloc->obj->unresolved) 4000b4e0: 80 a0 60 00 cmp %g1, 0 4000b4e4: 12 80 00 05 bne 4000b4f8 4000b4e8: c2 20 a0 50 st %g1, [ %g2 + 0x50 ] reloc->obj->flags &= ~RTEMS_RTL_OBJ_UNRESOLVED; 4000b4ec: c2 00 a0 08 ld [ %g2 + 8 ], %g1 4000b4f0: 82 08 7f fd and %g1, -3, %g1 4000b4f4: c2 20 a0 08 st %g1, [ %g2 + 8 ] return true; 4000b4f8: 82 10 20 01 mov 1, %g1 } 4000b4fc: b0 08 60 ff and %g1, 0xff, %i0 4000b500: 81 c7 e0 08 ret 4000b504: 81 e8 00 00 restore rela.r_addend = reloc->rel[REL_R_ADDEND]; 4000b508: c6 06 20 14 ld [ %i0 + 0x14 ], %g3 rela.r_offset = reloc->rel[REL_R_OFFSET]; 4000b50c: c4 27 bf f4 st %g2, [ %fp + -12 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000b510: 90 10 20 40 mov 0x40, %o0 rela.r_info = reloc->rel[REL_R_INFO]; 4000b514: c2 27 bf f8 st %g1, [ %fp + -8 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000b518: 40 00 14 3b call 40010604 4000b51c: c6 27 bf fc st %g3, [ %fp + -4 ] 4000b520: 80 a2 20 00 cmp %o0, 0 4000b524: 12 80 00 20 bne 4000b5a4 <== NEVER TAKEN 4000b528: d2 07 bf f8 ld [ %fp + -8 ], %o1 if (!rtems_rtl_elf_relocate_rela (reloc->obj, &rela, sect, 4000b52c: d8 0e 60 13 ldub [ %i1 + 0x13 ], %o4 4000b530: d6 06 60 08 ld [ %i1 + 8 ], %o3 4000b534: d0 06 00 00 ld [ %i0 ], %o0 4000b538: 9a 10 00 1b mov %i3, %o5 4000b53c: 94 10 00 1c mov %i4, %o2 4000b540: 40 00 02 d5 call 4000c094 4000b544: 92 07 bf f4 add %fp, -12, %o1 4000b548: 80 a2 20 00 cmp %o0, 0 4000b54c: 12 bf ff e0 bne 4000b4cc <== ALWAYS TAKEN 4000b550: 82 10 00 08 mov %o0, %g1 } 4000b554: b0 08 60 ff and %g1, 0xff, %i0 <== NOT EXECUTED 4000b558: 81 c7 e0 08 ret <== NOT EXECUTED 4000b55c: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_set_error (ENOEXEC, "unresolved sect not found"); 4000b560: 90 10 20 08 mov 8, %o0 <== NOT EXECUTED 4000b564: 13 10 00 c2 sethi %hi(0x40030800), %o1 <== NOT EXECUTED 4000b568: 40 00 02 21 call 4000bdec <== NOT EXECUTED 4000b56c: 92 12 60 78 or %o1, 0x78, %o1 ! 40030878 <== NOT EXECUTED return false; 4000b570: 82 10 20 00 clr %g1 <== NOT EXECUTED } 4000b574: b0 08 60 ff and %g1, 0xff, %i0 <== NOT EXECUTED 4000b578: 81 c7 e0 08 ret <== NOT EXECUTED 4000b57c: 81 e8 00 00 restore <== NOT EXECUTED printf ("rtl: rel: sym:%d type:%d off:%08jx\n", 4000b580: d8 07 bf f4 ld [ %fp + -12 ], %o4 <== NOT EXECUTED 4000b584: 94 0a 60 ff and %o1, 0xff, %o2 <== NOT EXECUTED 4000b588: 96 10 20 00 clr %o3 <== NOT EXECUTED 4000b58c: 93 32 60 08 srl %o1, 8, %o1 <== NOT EXECUTED 4000b590: 11 10 00 c2 sethi %hi(0x40030800), %o0 <== NOT EXECUTED 4000b594: 40 00 34 ed call 40018948 <__wrap_printf> <== NOT EXECUTED 4000b598: 90 12 20 c8 or %o0, 0xc8, %o0 ! 400308c8 <== NOT EXECUTED if (!rtems_rtl_elf_relocate_rel (reloc->obj, &rel, sect, 4000b59c: 10 bf ff c3 b 4000b4a8 <== NOT EXECUTED 4000b5a0: d8 0e 60 13 ldub [ %i1 + 0x13 ], %o4 <== NOT EXECUTED printf ("rtl: rela: sym:%d type:%d off:%08jx addend:%d\n", 4000b5a4: da 07 bf fc ld [ %fp + -4 ], %o5 <== NOT EXECUTED 4000b5a8: d8 07 bf f4 ld [ %fp + -12 ], %o4 <== NOT EXECUTED 4000b5ac: 94 0a 60 ff and %o1, 0xff, %o2 <== NOT EXECUTED 4000b5b0: 96 10 20 00 clr %o3 <== NOT EXECUTED 4000b5b4: 93 32 60 08 srl %o1, 8, %o1 <== NOT EXECUTED 4000b5b8: 11 10 00 c2 sethi %hi(0x40030800), %o0 <== NOT EXECUTED 4000b5bc: 40 00 34 e3 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000b5c0: 90 12 20 98 or %o0, 0x98, %o0 ! 40030898 <== NOT EXECUTED if (!rtems_rtl_elf_relocate_rela (reloc->obj, &rela, sect, 4000b5c4: 10 bf ff db b 4000b530 <== NOT EXECUTED 4000b5c8: d8 0e 60 13 ldub [ %i1 + 0x13 ], %o4 <== NOT EXECUTED =============================================================================== 4000e738 : { 4000e738: 9d e3 bf 90 save %sp, -112, %sp if (rtems_cache_get_instruction_line_size() == 0) 4000e73c: 7f ff d8 b7 call 40004a18 4000e740: 01 00 00 00 nop 4000e744: 80 a2 20 00 cmp %o0, 0 4000e748: 12 80 00 04 bne 4000e758 <== ALWAYS TAKEN 4000e74c: 01 00 00 00 nop } 4000e750: 81 c7 e0 08 ret <== NOT EXECUTED 4000e754: 81 e8 00 00 restore <== NOT EXECUTED sync_ctx.cache_line_size = rtems_cache_get_maximal_line_size(); 4000e758: 7f ff d8 b2 call 40004a20 4000e75c: 01 00 00 00 nop sync_ctx.mask = RTEMS_RTL_OBJ_SECT_TEXT | RTEMS_RTL_OBJ_SECT_CONST | 4000e760: 03 00 00 04 sethi %hi(0x1000), %g1 4000e764: 82 10 60 1f or %g1, 0x1f, %g1 ! 101f sync_ctx.cache_line_size = rtems_cache_get_maximal_line_size(); 4000e768: d0 27 bf fc st %o0, [ %fp + -4 ] rtems_rtl_chain_iterate (&obj->sections, 4000e76c: 94 07 bf f0 add %fp, -16, %o2 sync_ctx.start_va = 0; 4000e770: c0 27 bf f4 clr [ %fp + -12 ] rtems_rtl_chain_iterate (&obj->sections, 4000e774: 13 10 00 36 sethi %hi(0x4000d800), %o1 sync_ctx.end_va = sync_ctx.start_va; 4000e778: c0 27 bf f8 clr [ %fp + -8 ] rtems_rtl_chain_iterate (&obj->sections, 4000e77c: 92 12 61 b8 or %o1, 0x1b8, %o1 sync_ctx.mask = RTEMS_RTL_OBJ_SECT_TEXT | RTEMS_RTL_OBJ_SECT_CONST | 4000e780: c2 27 bf f0 st %g1, [ %fp + -16 ] rtems_rtl_chain_iterate (&obj->sections, 4000e784: 7f ff ef eb call 4000a730 4000e788: 90 06 20 2c add %i0, 0x2c, %o0 if (sync_ctx.end_va != sync_ctx.start_va) { 4000e78c: d2 07 bf f8 ld [ %fp + -8 ], %o1 4000e790: d0 07 bf f4 ld [ %fp + -12 ], %o0 4000e794: 80 a2 40 08 cmp %o1, %o0 4000e798: 02 80 00 04 be 4000e7a8 <== NEVER TAKEN 4000e79c: 01 00 00 00 nop rtems_cache_instruction_sync_after_code_change(sync_ctx.start_va, 4000e7a0: 7f ff d8 a2 call 40004a28 4000e7a4: 92 22 40 08 sub %o1, %o0, %o1 } 4000e7a8: 81 c7 e0 08 ret 4000e7ac: 81 e8 00 00 restore =============================================================================== 4000edb0 : bool rtems_rtl_obj_unload (rtems_rtl_obj* obj) { 4000edb0: 9d e3 bf a0 save %sp, -96, %sp _rtld_linkmap_delete(obj); 4000edb4: 7f ff ee a1 call 4000a838 <_rtld_linkmap_delete> 4000edb8: 90 10 00 18 mov %i0, %o0 if (obj->format >= 0 && obj->format < RTEMS_RTL_LOADERS) 4000edbc: c2 06 20 10 ld [ %i0 + 0x10 ], %g1 4000edc0: 80 a0 60 01 cmp %g1, 1 4000edc4: 18 80 00 08 bgu 4000ede4 <== NEVER TAKEN 4000edc8: 85 28 60 04 sll %g1, 4, %g2 return loaders[obj->format].unload (obj); 4000edcc: 03 10 00 c5 sethi %hi(0x40031400), %g1 4000edd0: 82 10 60 f0 or %g1, 0xf0, %g1 ! 400314f0 4000edd4: 82 00 40 02 add %g1, %g2, %g1 4000edd8: c2 00 60 08 ld [ %g1 + 8 ], %g1 4000eddc: 9f c0 40 00 call %g1 4000ede0: 90 10 00 18 mov %i0, %o0 rtems_rtl_obj_file_unload (obj); return true; } 4000ede4: 81 c7 e0 08 ret 4000ede8: 91 e8 20 01 restore %g0, 1, %o0 =============================================================================== 4000dc5c : { 4000dc5c: 9d e3 bf a0 save %sp, -96, %sp end = name + strlen (name); 4000dc60: 40 00 3b ff call 4001cc5c 4000dc64: 90 10 00 18 mov %i0, %o0 colon = strrchr (name, ':'); 4000dc68: 92 10 20 3a mov 0x3a, %o1 end = name + strlen (name); 4000dc6c: b8 10 00 08 mov %o0, %i4 colon = strrchr (name, ':'); 4000dc70: 90 10 00 18 mov %i0, %o0 4000dc74: 40 00 3c b8 call 4001cf54 4000dc78: a0 06 00 1c add %i0, %i4, %l0 if (colon == NULL || colon < strrchr(name, '/')) 4000dc7c: 80 a2 20 00 cmp %o0, 0 4000dc80: 02 80 00 32 be 4000dd48 <== ALWAYS TAKEN 4000dc84: ba 10 00 08 mov %o0, %i5 4000dc88: 92 10 20 2f mov 0x2f, %o1 <== NOT EXECUTED 4000dc8c: 40 00 3c b2 call 4001cf54 <== NOT EXECUTED 4000dc90: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4000dc94: 80 a7 40 08 cmp %i5, %o0 <== NOT EXECUTED 4000dc98: 0a 80 00 2d bcs 4000dd4c <== NOT EXECUTED 4000dc9c: 94 10 20 01 mov 1, %o2 <== NOT EXECUTED loname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, colon - name + 1, true); 4000dca0: b8 27 40 18 sub %i5, %i0, %i4 <== NOT EXECUTED 4000dca4: 92 07 20 01 add %i4, 1, %o1 <== NOT EXECUTED 4000dca8: 7f ff f1 df call 4000a424 <== NOT EXECUTED 4000dcac: 90 10 20 00 clr %o0 <== NOT EXECUTED if (!oname) 4000dcb0: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 4000dcb4: 02 80 00 2c be 4000dd64 <== NOT EXECUTED 4000dcb8: a4 10 00 08 mov %o0, %l2 <== NOT EXECUTED memcpy ((void*) loname, name, colon - name); 4000dcbc: 94 10 00 1c mov %i4, %o2 <== NOT EXECUTED 4000dcc0: 40 00 34 29 call 4001ad64 <== NOT EXECUTED 4000dcc4: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED if (colon != end) 4000dcc8: 80 a4 00 1d cmp %l0, %i5 <== NOT EXECUTED 4000dccc: 02 80 00 44 be 4000dddc <== NOT EXECUTED 4000dcd0: 92 10 20 40 mov 0x40, %o1 <== NOT EXECUTED ++colon; 4000dcd4: ba 07 60 01 inc %i5 <== NOT EXECUTED at = strchr (colon, '@'); 4000dcd8: 40 00 39 42 call 4001c1e0 <== NOT EXECUTED 4000dcdc: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED if (at == NULL) 4000dce0: b8 92 20 00 orcc %o0, 0, %i4 <== NOT EXECUTED 4000dce4: 02 80 00 2e be 4000dd9c <== NOT EXECUTED 4000dce8: b0 27 00 1d sub %i4, %i5, %i0 <== NOT EXECUTED loname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, at - colon + 1, true); 4000dcec: 94 10 20 01 mov 1, %o2 <== NOT EXECUTED 4000dcf0: 92 06 20 01 add %i0, 1, %o1 <== NOT EXECUTED 4000dcf4: 7f ff f1 cc call 4000a424 <== NOT EXECUTED 4000dcf8: 90 10 20 00 clr %o0 <== NOT EXECUTED if (!loname) 4000dcfc: a2 92 20 00 orcc %o0, 0, %l1 <== NOT EXECUTED 4000dd00: 02 80 00 32 be 4000ddc8 <== NOT EXECUTED 4000dd04: 94 10 00 18 mov %i0, %o2 <== NOT EXECUTED memcpy ((void*) loname, colon, at - colon); 4000dd08: 40 00 34 17 call 4001ad64 <== NOT EXECUTED 4000dd0c: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED if (at != end) 4000dd10: 80 a4 00 1c cmp %l0, %i4 <== NOT EXECUTED 4000dd14: 02 80 00 07 be 4000dd30 <== NOT EXECUTED 4000dd18: 94 10 20 00 clr %o2 <== NOT EXECUTED *ooffset = strtoul (at + 1, 0, 0); 4000dd1c: 92 10 20 00 clr %o1 <== NOT EXECUTED 4000dd20: 40 00 3d 38 call 4001d200 <== NOT EXECUTED 4000dd24: 90 07 20 01 add %i4, 1, %o0 <== NOT EXECUTED 4000dd28: c0 26 c0 00 clr [ %i3 ] <== NOT EXECUTED 4000dd2c: d0 26 e0 04 st %o0, [ %i3 + 4 ] <== NOT EXECUTED return true; 4000dd30: b0 10 20 01 mov 1, %i0 <== NOT EXECUTED *oname = loname; 4000dd34: e2 26 80 00 st %l1, [ %i2 ] 4000dd38: b0 0e 20 ff and %i0, 0xff, %i0 *aname = laname; 4000dd3c: e4 26 40 00 st %l2, [ %i1 ] } 4000dd40: 81 c7 e0 08 ret 4000dd44: 81 e8 00 00 restore loname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, colon - name + 1, true); 4000dd48: 94 10 20 01 mov 1, %o2 4000dd4c: 92 07 20 01 add %i4, 1, %o1 4000dd50: 7f ff f1 b5 call 4000a424 4000dd54: 90 10 20 00 clr %o0 if (!oname) 4000dd58: 80 a6 a0 00 cmp %i2, 0 4000dd5c: 12 80 00 0a bne 4000dd84 <== ALWAYS TAKEN 4000dd60: a2 10 00 08 mov %o0, %l1 rtems_rtl_set_error (ENOMEM, "no memory for object file name"); 4000dd64: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000dd68: 13 10 00 c4 sethi %hi(0x40031000), %o1 <== NOT EXECUTED return false; 4000dd6c: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for object file name"); 4000dd70: 92 12 62 28 or %o1, 0x228, %o1 <== NOT EXECUTED 4000dd74: 7f ff f8 1e call 4000bdec <== NOT EXECUTED 4000dd78: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED } 4000dd7c: 81 c7 e0 08 ret <== NOT EXECUTED 4000dd80: 81 e8 00 00 restore <== NOT EXECUTED memcpy ((void*) loname, name, colon - name); 4000dd84: 94 10 00 1c mov %i4, %o2 4000dd88: 92 10 00 18 mov %i0, %o1 4000dd8c: 40 00 33 f6 call 4001ad64 4000dd90: a4 10 20 00 clr %l2 return true; 4000dd94: 10 bf ff e8 b 4000dd34 4000dd98: b0 10 20 01 mov 1, %i0 loname = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, at - colon + 1, true); 4000dd9c: a0 24 00 1d sub %l0, %i5, %l0 <== NOT EXECUTED 4000dda0: 94 10 20 01 mov 1, %o2 <== NOT EXECUTED 4000dda4: 7f ff f1 a0 call 4000a424 <== NOT EXECUTED 4000dda8: 92 04 20 01 add %l0, 1, %o1 <== NOT EXECUTED if (!loname) 4000ddac: a2 92 20 00 orcc %o0, 0, %l1 <== NOT EXECUTED 4000ddb0: 02 80 00 06 be 4000ddc8 <== NOT EXECUTED 4000ddb4: 94 10 00 10 mov %l0, %o2 <== NOT EXECUTED memcpy ((void*) loname, colon, at - colon); 4000ddb8: 40 00 33 eb call 4001ad64 <== NOT EXECUTED 4000ddbc: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED return true; 4000ddc0: 10 bf ff dd b 4000dd34 <== NOT EXECUTED 4000ddc4: b0 10 20 01 mov 1, %i0 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) laname); 4000ddc8: 92 10 00 12 mov %l2, %o1 <== NOT EXECUTED 4000ddcc: 7f ff f1 bf call 4000a4c8 <== NOT EXECUTED 4000ddd0: 90 10 20 00 clr %o0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for object file name"); 4000ddd4: 10 bf ff e5 b 4000dd68 <== NOT EXECUTED 4000ddd8: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000dddc: a2 10 00 12 mov %l2, %l1 <== NOT EXECUTED const char* laname = NULL; 4000dde0: 10 bf ff d4 b 4000dd30 <== NOT EXECUTED 4000dde4: a4 10 20 00 clr %l2 <== NOT EXECUTED =============================================================================== 4000efc8 : bool rtems_rtl_rap_file_check (rtems_rtl_obj* obj, int fd) { 4000efc8: 9d e3 bf 80 save %sp, -128, %sp rtems_rtl_obj_cache* header; uint8_t* rhdr = NULL; size_t rlen = 64; 4000efcc: 82 10 20 40 mov 0x40, %g1 uint32_t length = 0; uint32_t version = 0; uint32_t compression = 0; uint32_t checksum = 0; rtems_rtl_obj_caches (&header, NULL, NULL); 4000efd0: 94 10 20 00 clr %o2 4000efd4: 92 10 20 00 clr %o1 4000efd8: 90 07 bf e4 add %fp, -28, %o0 size_t rlen = 64; 4000efdc: c2 27 bf ec st %g1, [ %fp + -20 ] uint8_t* rhdr = NULL; 4000efe0: c0 27 bf e8 clr [ %fp + -24 ] uint32_t length = 0; 4000efe4: c0 27 bf f0 clr [ %fp + -16 ] uint32_t version = 0; 4000efe8: c0 27 bf f4 clr [ %fp + -12 ] uint32_t compression = 0; 4000efec: c0 27 bf f8 clr [ %fp + -8 ] rtems_rtl_obj_caches (&header, NULL, NULL); 4000eff0: 7f ff f4 d9 call 4000c354 4000eff4: c0 27 bf fc clr [ %fp + -4 ] if (!rtems_rtl_obj_cache_read (header, fd, obj->ooffset, 4000eff8: d4 1e 20 20 ldd [ %i0 + 0x20 ], %o2 4000effc: d0 07 bf e4 ld [ %fp + -28 ], %o0 4000f000: 9a 07 bf ec add %fp, -20, %o5 4000f004: 98 07 bf e8 add %fp, -24, %o4 4000f008: 7f ff f7 57 call 4000cd64 4000f00c: 92 10 00 19 mov %i1, %o1 4000f010: 80 a2 20 00 cmp %o0, 0 4000f014: 32 80 00 06 bne,a 4000f02c <== ALWAYS TAKEN 4000f018: c0 27 bf ec clr [ %fp + -20 ] (void**) &rhdr, &rlen)) return false; 4000f01c: b0 10 20 00 clr %i0 <== NOT EXECUTED &compression, &checksum)) return false; return true; } 4000f020: b0 0e 20 ff and %i0, 0xff, %i0 4000f024: 81 c7 e0 08 ret 4000f028: 81 e8 00 00 restore if (!rtems_rtl_rap_parse_header (rhdr, 4000f02c: d0 07 bf e8 ld [ %fp + -24 ], %o0 if ((rhdr[0] != 'R') || (rhdr[1] != 'A') || (rhdr[2] != 'P') || (rhdr[3] != ',')) 4000f030: c2 0a 00 00 ldub [ %o0 ], %g1 4000f034: 80 a0 60 52 cmp %g1, 0x52 4000f038: 12 bf ff fa bne 4000f020 4000f03c: b0 10 20 00 clr %i0 4000f040: c2 0a 20 01 ldub [ %o0 + 1 ], %g1 4000f044: 80 a0 60 41 cmp %g1, 0x41 4000f048: 12 bf ff f7 bne 4000f024 <== NEVER TAKEN 4000f04c: b0 0e 20 ff and %i0, 0xff, %i0 4000f050: c2 0a 20 02 ldub [ %o0 + 2 ], %g1 4000f054: 80 a0 60 50 cmp %g1, 0x50 4000f058: 32 bf ff f2 bne,a 4000f020 <== NEVER TAKEN 4000f05c: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000f060: c2 0a 20 03 ldub [ %o0 + 3 ], %g1 4000f064: 80 a0 60 2c cmp %g1, 0x2c 4000f068: 32 bf ff ee bne,a 4000f020 <== NEVER TAKEN 4000f06c: b0 10 20 00 clr %i0 <== NOT EXECUTED 4000f070: 9a 07 bf fc add %fp, -4, %o5 4000f074: 98 07 bf f8 add %fp, -8, %o4 4000f078: 96 07 bf f4 add %fp, -12, %o3 4000f07c: 94 07 bf f0 add %fp, -16, %o2 4000f080: 7f ff ff 81 call 4000ee84 4000f084: 92 07 bf ec add %fp, -20, %o1 4000f088: 10 bf ff e6 b 4000f020 4000f08c: b0 10 00 08 mov %o0, %i0 =============================================================================== 4000f090 : bool rtems_rtl_rap_file_load (rtems_rtl_obj* obj, int fd) { 4000f090: 9d e3 be d8 save %sp, -296, %sp rtems_rtl_rap rap = { 0 }; 4000f094: 94 10 20 7c mov 0x7c, %o2 4000f098: 92 10 20 00 clr %o1 4000f09c: 40 00 2f bc call 4001af8c 4000f0a0: 90 07 bf 84 add %fp, -124, %o0 uint8_t* rhdr = NULL; size_t rlen = 64; 4000f0a4: 82 10 20 40 mov 0x40, %g1 int section; rtems_rtl_obj_caches (&rap.file, NULL, NULL); 4000f0a8: 94 10 20 00 clr %o2 4000f0ac: 92 10 20 00 clr %o1 4000f0b0: 90 07 bf 84 add %fp, -124, %o0 size_t rlen = 64; 4000f0b4: c2 27 bf 64 st %g1, [ %fp + -156 ] rtems_rtl_obj_caches (&rap.file, NULL, NULL); 4000f0b8: 7f ff f4 a7 call 4000c354 4000f0bc: c0 27 bf 60 clr [ %fp + -160 ] if (!rtems_rtl_obj_cache_read (rap.file, fd, obj->ooffset, 4000f0c0: d0 07 bf 84 ld [ %fp + -124 ], %o0 4000f0c4: d4 1e 20 20 ldd [ %i0 + 0x20 ], %o2 4000f0c8: 98 07 bf 60 add %fp, -160, %o4 4000f0cc: 9a 07 bf 64 add %fp, -156, %o5 4000f0d0: 7f ff f7 25 call 4000cd64 4000f0d4: 92 10 00 19 mov %i1, %o1 4000f0d8: 80 a2 20 00 cmp %o0, 0 4000f0dc: 32 80 00 06 bne,a 4000f0f4 <== ALWAYS TAKEN 4000f0e0: c0 27 bf 64 clr [ %fp + -156 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) printf ("rtl: rap: input relocs=%" PRIu32 "\n", rtems_rtl_obj_comp_input (rap.decomp)); if (!rtems_rtl_rap_relocate (&rap, obj)) return false; 4000f0e4: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_obj_synchronize_cache (obj); return true; } 4000f0e8: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f0ec: 81 c7 e0 08 ret <== NOT EXECUTED 4000f0f0: 81 e8 00 00 restore <== NOT EXECUTED if (!rtems_rtl_rap_parse_header (rhdr, 4000f0f4: d0 07 bf 60 ld [ %fp + -160 ], %o0 if ((rhdr[0] != 'R') || (rhdr[1] != 'A') || (rhdr[2] != 'P') || (rhdr[3] != ',')) 4000f0f8: c2 0a 00 00 ldub [ %o0 ], %g1 4000f0fc: 80 a0 60 52 cmp %g1, 0x52 4000f100: 22 80 00 0a be,a 4000f128 <== ALWAYS TAKEN 4000f104: c2 0a 20 01 ldub [ %o0 + 1 ], %g1 rtems_rtl_set_error (EINVAL, "invalid RAP file format"); 4000f108: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED return false; 4000f10c: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid RAP file format"); 4000f110: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED } 4000f114: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid RAP file format"); 4000f118: 7f ff f3 35 call 4000bdec <== NOT EXECUTED 4000f11c: 92 12 61 38 or %o1, 0x138, %o1 <== NOT EXECUTED } 4000f120: 81 c7 e0 08 ret <== NOT EXECUTED 4000f124: 81 e8 00 00 restore <== NOT EXECUTED if ((rhdr[0] != 'R') || (rhdr[1] != 'A') || (rhdr[2] != 'P') || (rhdr[3] != ',')) 4000f128: 80 a0 60 41 cmp %g1, 0x41 4000f12c: 32 bf ff f8 bne,a 4000f10c <== NEVER TAKEN 4000f130: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000f134: c2 0a 20 02 ldub [ %o0 + 2 ], %g1 4000f138: 80 a0 60 50 cmp %g1, 0x50 4000f13c: 32 bf ff f4 bne,a 4000f10c <== NEVER TAKEN 4000f140: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000f144: c2 0a 20 03 ldub [ %o0 + 3 ], %g1 4000f148: 80 a0 60 2c cmp %g1, 0x2c 4000f14c: 32 bf ff f0 bne,a 4000f10c <== NEVER TAKEN 4000f150: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000f154: 9a 07 bf 98 add %fp, -104, %o5 4000f158: 98 07 bf 94 add %fp, -108, %o4 4000f15c: 96 07 bf 90 add %fp, -112, %o3 4000f160: 94 07 bf 8c add %fp, -116, %o2 4000f164: 7f ff ff 48 call 4000ee84 4000f168: 92 07 bf 64 add %fp, -156, %o1 if (!rtems_rtl_rap_parse_header (rhdr, 4000f16c: 80 a2 20 00 cmp %o0, 0 4000f170: 02 bf ff e6 be 4000f108 <== NEVER TAKEN 4000f174: d8 07 bf 64 ld [ %fp + -156 ], %o4 rtems_rtl_obj_decompress (&rap.decomp, rap.file, fd, rap.compression, 4000f178: c4 1e 20 20 ldd [ %i0 + 0x20 ], %g2 4000f17c: ba 80 c0 0c addcc %g3, %o4, %i5 4000f180: d6 07 bf 94 ld [ %fp + -108 ], %o3 4000f184: d2 07 bf 84 ld [ %fp + -124 ], %o1 4000f188: b8 40 a0 00 addx %g2, 0, %i4 4000f18c: 9a 10 00 1d mov %i5, %o5 4000f190: 98 10 00 1c mov %i4, %o4 4000f194: 94 10 00 19 mov %i1, %o2 4000f198: 7f ff f4 9b call 4000c404 4000f19c: 90 07 bf 88 add %fp, -120, %o0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f1a0: 40 00 05 19 call 40010604 4000f1a4: 90 10 20 04 mov 4, %o0 4000f1a8: 80 a2 20 00 cmp %o0, 0 4000f1ac: 12 80 00 1a bne 4000f214 <== NEVER TAKEN 4000f1b0: c2 07 bf 88 ld [ %fp + -120 ], %g1 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.machinetype)) 4000f1b4: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f1b8: 7f ff ff 1f call 4000ee34 4000f1bc: 92 07 bf 9c add %fp, -100, %o1 4000f1c0: 80 a2 20 00 cmp %o0, 0 4000f1c4: 02 bf ff c9 be 4000f0e8 <== NEVER TAKEN 4000f1c8: ae 10 20 00 clr %l7 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f1cc: 40 00 05 0e call 40010604 4000f1d0: 90 10 20 04 mov 4, %o0 4000f1d4: 80 a2 20 00 cmp %o0, 0 4000f1d8: 12 80 00 2b bne 4000f284 <== NEVER TAKEN 4000f1dc: d2 07 bf 9c ld [ %fp + -100 ], %o1 switch (machinetype) 4000f1e0: c2 07 bf 9c ld [ %fp + -100 ], %g1 4000f1e4: 80 a0 60 02 cmp %g1, 2 4000f1e8: 02 80 00 11 be 4000f22c <== ALWAYS TAKEN 4000f1ec: 80 a0 60 12 cmp %g1, 0x12 4000f1f0: 02 80 00 0f be 4000f22c <== NOT EXECUTED 4000f1f4: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid machinetype"); 4000f1f8: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED return false; 4000f1fc: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid machinetype"); 4000f200: 7f ff f2 fb call 4000bdec <== NOT EXECUTED 4000f204: 92 12 61 90 or %o1, 0x190, %o1 <== NOT EXECUTED 4000f208: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f20c: 81 c7 e0 08 ret <== NOT EXECUTED 4000f210: 81 e8 00 00 restore <== NOT EXECUTED printf ("rtl: rap: input machine=%" PRIu32 "\n", 4000f214: d2 00 60 24 ld [ %g1 + 0x24 ], %o1 <== NOT EXECUTED 4000f218: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f21c: 40 00 25 cb call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f220: 90 12 21 50 or %o0, 0x150, %o0 ! 40031550 <== NOT EXECUTED if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.machinetype)) 4000f224: 10 bf ff e5 b 4000f1b8 <== NOT EXECUTED 4000f228: d0 07 bf 88 ld [ %fp + -120 ], %o0 <== NOT EXECUTED if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.datatype)) 4000f22c: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f230: 7f ff ff 01 call 4000ee34 4000f234: 92 07 bf a0 add %fp, -96, %o1 4000f238: 80 a2 20 00 cmp %o0, 0 4000f23c: 02 bf ff ab be 4000f0e8 <== NEVER TAKEN 4000f240: ae 10 20 00 clr %l7 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f244: 40 00 04 f0 call 40010604 4000f248: 90 10 20 04 mov 4, %o0 4000f24c: 80 a2 20 00 cmp %o0, 0 4000f250: 12 80 01 1d bne 4000f6c4 <== NEVER TAKEN 4000f254: d2 07 bf a0 ld [ %fp + -96 ], %o1 if (datatype != ELFDEFNNAME (MACHDEP_ENDIANNESS)) 4000f258: c2 07 bf a0 ld [ %fp + -96 ], %g1 4000f25c: 80 a0 60 02 cmp %g1, 2 4000f260: 02 80 00 0e be 4000f298 <== ALWAYS TAKEN 4000f264: 90 10 20 16 mov 0x16, %o0 rtems_rtl_set_error (EINVAL, "invalid datatype"); 4000f268: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED return false; 4000f26c: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid datatype"); 4000f270: 7f ff f2 df call 4000bdec <== NOT EXECUTED 4000f274: 92 12 61 c0 or %o1, 0x1c0, %o1 <== NOT EXECUTED 4000f278: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f27c: 81 c7 e0 08 ret <== NOT EXECUTED 4000f280: 81 e8 00 00 restore <== NOT EXECUTED printf ("rtl: rap: machinetype=%" PRIu32 "\n", rap.machinetype); 4000f284: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f288: 40 00 25 b0 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f28c: 90 12 21 70 or %o0, 0x170, %o0 ! 40031570 <== NOT EXECUTED switch (machinetype) 4000f290: 10 bf ff d5 b 4000f1e4 <== NOT EXECUTED 4000f294: c2 07 bf 9c ld [ %fp + -100 ], %g1 <== NOT EXECUTED if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.class)) 4000f298: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f29c: 7f ff fe e6 call 4000ee34 4000f2a0: 92 07 bf a4 add %fp, -92, %o1 4000f2a4: 80 a2 20 00 cmp %o0, 0 4000f2a8: 02 bf ff 90 be 4000f0e8 <== NEVER TAKEN 4000f2ac: ae 10 20 00 clr %l7 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f2b0: 40 00 04 d5 call 40010604 4000f2b4: 90 10 20 04 mov 4, %o0 4000f2b8: 80 a2 20 00 cmp %o0, 0 4000f2bc: 02 80 00 07 be 4000f2d8 <== ALWAYS TAKEN 4000f2c0: c2 07 bf a4 ld [ %fp + -92 ], %g1 printf ("rtl: rap: class=%" PRIu32 "\n", rap.class); 4000f2c4: d2 07 bf a4 ld [ %fp + -92 ], %o1 <== NOT EXECUTED 4000f2c8: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f2cc: 40 00 25 9f call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f2d0: 90 12 21 d8 or %o0, 0x1d8, %o0 ! 400315d8 <== NOT EXECUTED switch (class) 4000f2d4: c2 07 bf a4 ld [ %fp + -92 ], %g1 <== NOT EXECUTED 4000f2d8: 80 a0 60 01 cmp %g1, 1 4000f2dc: 12 80 00 ff bne 4000f6d8 <== NEVER TAKEN 4000f2e0: 90 10 20 16 mov 0x16, %o0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f2e4: 40 00 04 c8 call 40010604 4000f2e8: 90 10 20 04 mov 4, %o0 4000f2ec: 80 a2 20 00 cmp %o0, 0 4000f2f0: 22 80 00 08 be,a 4000f310 <== ALWAYS TAKEN 4000f2f4: d0 07 bf 88 ld [ %fp + -120 ], %o0 printf ("rtl: rap: input header=%" PRIu32 "\n", 4000f2f8: c2 07 bf 88 ld [ %fp + -120 ], %g1 <== NOT EXECUTED 4000f2fc: d2 00 60 24 ld [ %g1 + 0x24 ], %o1 <== NOT EXECUTED 4000f300: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f304: 40 00 25 91 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f308: 90 12 22 00 or %o0, 0x200, %o0 ! 40031600 <== NOT EXECUTED if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.init)) 4000f30c: d0 07 bf 88 ld [ %fp + -120 ], %o0 <== NOT EXECUTED 4000f310: 7f ff fe c9 call 4000ee34 4000f314: 92 07 bf a8 add %fp, -88, %o1 4000f318: 80 a2 20 00 cmp %o0, 0 4000f31c: 02 bf ff 73 be 4000f0e8 <== NEVER TAKEN 4000f320: ae 10 20 00 clr %l7 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.fini)) 4000f324: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f328: 7f ff fe c3 call 4000ee34 4000f32c: 92 07 bf ac add %fp, -84, %o1 4000f330: 80 a2 20 00 cmp %o0, 0 4000f334: 02 bf ff 6d be 4000f0e8 <== NEVER TAKEN 4000f338: ae 10 20 00 clr %l7 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.symtab_size)) 4000f33c: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f340: 7f ff fe bd call 4000ee34 4000f344: 92 07 bf e0 add %fp, -32, %o1 4000f348: 80 a2 20 00 cmp %o0, 0 4000f34c: 02 bf ff 67 be 4000f0e8 <== NEVER TAKEN 4000f350: ae 10 20 00 clr %l7 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.strtab_size)) 4000f354: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f358: 7f ff fe b7 call 4000ee34 4000f35c: 92 07 bf e8 add %fp, -24, %o1 4000f360: 80 a2 20 00 cmp %o0, 0 4000f364: 02 bf ff 61 be 4000f0e8 <== NEVER TAKEN 4000f368: ae 10 20 00 clr %l7 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.relocs_size)) 4000f36c: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f370: 7f ff fe b1 call 4000ee34 4000f374: 92 07 bf ec add %fp, -20, %o1 4000f378: 80 a2 20 00 cmp %o0, 0 4000f37c: 02 bf ff 5b be 4000f0e8 <== NEVER TAKEN 4000f380: ae 10 20 00 clr %l7 rap.symbols = rap.symtab_size / (3 * sizeof (uint32_t)); 4000f384: c2 07 bf e0 ld [ %fp + -32 ], %g1 4000f388: 05 2a aa aa sethi %hi(0xaaaaa800), %g2 4000f38c: 84 10 a2 ab or %g2, 0x2ab, %g2 ! aaaaaaab 4000f390: 80 50 40 02 umul %g1, %g2, %g0 4000f394: 83 40 00 00 rd %y, %g1 4000f398: 83 30 60 03 srl %g1, 3, %g1 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f39c: 90 10 20 04 mov 4, %o0 4000f3a0: 40 00 04 99 call 40010604 4000f3a4: c2 27 bf f0 st %g1, [ %fp + -16 ] 4000f3a8: 80 a2 20 00 cmp %o0, 0 4000f3ac: 22 80 00 0a be,a 4000f3d4 <== ALWAYS TAKEN 4000f3b0: d0 07 bf 88 ld [ %fp + -120 ], %o0 printf ("rtl: rap: load: symtab=%" PRIu32 " (%" PRIu32 4000f3b4: d8 07 bf ec ld [ %fp + -20 ], %o4 <== NOT EXECUTED 4000f3b8: d6 07 bf e8 ld [ %fp + -24 ], %o3 <== NOT EXECUTED 4000f3bc: d4 07 bf f0 ld [ %fp + -16 ], %o2 <== NOT EXECUTED 4000f3c0: d2 07 bf e0 ld [ %fp + -32 ], %o1 <== NOT EXECUTED 4000f3c4: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f3c8: 40 00 25 60 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f3cc: 90 12 22 20 or %o0, 0x220, %o0 ! 40031620 <== NOT EXECUTED if (!rtems_rtl_rap_read_uint32 (rap.decomp, &obj->obj_num)) 4000f3d0: d0 07 bf 88 ld [ %fp + -120 ], %o0 <== NOT EXECUTED 4000f3d4: 7f ff fe 98 call 4000ee34 4000f3d8: 92 06 20 84 add %i0, 0x84, %o1 4000f3dc: 80 a2 20 00 cmp %o0, 0 4000f3e0: 02 bf ff 42 be 4000f0e8 <== NEVER TAKEN 4000f3e4: ae 10 20 00 clr %l7 if (obj->obj_num > 0) 4000f3e8: d0 06 20 84 ld [ %i0 + 0x84 ], %o0 4000f3ec: 80 a2 20 00 cmp %o0, 0 4000f3f0: 12 80 00 c1 bne 4000f6f4 <== ALWAYS TAKEN 4000f3f4: fa 07 bf 88 ld [ %fp + -120 ], %i5 4000f3f8: 23 10 00 c6 sethi %hi(0x40031800), %l1 printf ("rtl: rap: %s: size=%" PRIu32 " align=%" PRIu32 "\n", 4000f3fc: 35 10 00 c5 sethi %hi(0x40031400), %i2 4000f400: a2 14 61 7c or %l1, 0x17c, %l1 4000f404: ba 07 bf b0 add %fp, -80, %i5 4000f408: b6 10 00 11 mov %l1, %i3 for (i = 0; i < obj->obj_num; ++i) 4000f40c: b8 10 20 00 clr %i4 printf ("rtl: rap: %s: size=%" PRIu32 " align=%" PRIu32 "\n", 4000f410: b4 16 a2 f0 or %i2, 0x2f0, %i2 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.secs[section].size)) 4000f414: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000f418: 7f ff fe 87 call 4000ee34 4000f41c: 92 10 00 1d mov %i5, %o1 4000f420: 80 a2 20 00 cmp %o0, 0 4000f424: 02 bf ff 30 be 4000f0e4 <== NEVER TAKEN 4000f428: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.secs[section].alignment)) 4000f42c: 7f ff fe 82 call 4000ee34 4000f430: 92 07 60 04 add %i5, 4, %o1 4000f434: 80 a2 20 00 cmp %o0, 0 4000f438: 02 bf ff 2c be 4000f0e8 <== NEVER TAKEN 4000f43c: ae 10 20 00 clr %l7 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD_SECT)) 4000f440: 40 00 04 71 call 40010604 4000f444: 90 10 21 00 mov 0x100, %o0 4000f448: 80 a2 20 00 cmp %o0, 0 4000f44c: 02 80 00 07 be 4000f468 <== ALWAYS TAKEN 4000f450: e0 06 c0 00 ld [ %i3 ], %l0 printf ("rtl: rap: %s: size=%" PRIu32 " align=%" PRIu32 "\n", 4000f454: d6 07 60 04 ld [ %i5 + 4 ], %o3 <== NOT EXECUTED 4000f458: d4 07 40 00 ld [ %i5 ], %o2 <== NOT EXECUTED 4000f45c: 92 10 00 10 mov %l0, %o1 <== NOT EXECUTED 4000f460: 40 00 25 3a call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f464: 90 10 00 1a mov %i2, %o0 <== NOT EXECUTED if (!rtems_rtl_obj_add_section (obj, 4000f468: c4 06 e0 04 ld [ %i3 + 4 ], %g2 4000f46c: c2 07 60 04 ld [ %i5 + 4 ], %g1 4000f470: c2 23 a0 5c st %g1, [ %sp + 0x5c ] 4000f474: 92 10 00 1c mov %i4, %o1 4000f478: c4 23 a0 68 st %g2, [ %sp + 0x68 ] 4000f47c: 98 10 20 00 clr %o4 4000f480: c0 23 a0 64 clr [ %sp + 0x64 ] 4000f484: 9a 10 20 00 clr %o5 4000f488: c0 23 a0 60 clr [ %sp + 0x60 ] 4000f48c: 94 10 00 10 mov %l0, %o2 4000f490: d6 07 40 00 ld [ %i5 ], %o3 4000f494: 7f ff fc 42 call 4000e59c 4000f498: 90 10 00 18 mov %i0, %o0 4000f49c: 80 a2 20 00 cmp %o0, 0 4000f4a0: 02 bf ff 11 be 4000f0e4 <== NEVER TAKEN 4000f4a4: b8 07 20 01 inc %i4 4000f4a8: ba 07 60 08 add %i5, 8, %i5 for (section = 0; section < RTEMS_RTL_RAP_SECS; ++section) 4000f4ac: 80 a7 20 06 cmp %i4, 6 4000f4b0: 12 bf ff d9 bne 4000f414 4000f4b4: b6 06 e0 08 add %i3, 8, %i3 if (!rtems_rtl_obj_load_sections (obj, fd, rtems_rtl_rap_loader, &rap)) 4000f4b8: 96 07 bf 84 add %fp, -124, %o3 4000f4bc: 92 10 00 19 mov %i1, %o1 4000f4c0: 15 10 00 3b sethi %hi(0x4000ec00), %o2 4000f4c4: 90 10 00 18 mov %i0, %o0 4000f4c8: 7f ff fc d4 call 4000e818 4000f4cc: 94 12 a1 ec or %o2, 0x1ec, %o2 4000f4d0: 80 a2 20 00 cmp %o0, 0 4000f4d4: 02 bf ff 05 be 4000f0e8 <== NEVER TAKEN 4000f4d8: ae 10 20 00 clr %l7 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f4dc: 40 00 04 4a call 40010604 4000f4e0: 90 10 20 04 mov 4, %o0 4000f4e4: 80 a2 20 00 cmp %o0, 0 4000f4e8: 22 80 00 08 be,a 4000f508 <== ALWAYS TAKEN 4000f4ec: c2 07 bf f0 ld [ %fp + -16 ], %g1 printf ("rtl: rap: input symbols=%" PRIu32 "\n", 4000f4f0: c2 07 bf 88 ld [ %fp + -120 ], %g1 <== NOT EXECUTED 4000f4f4: d2 00 60 24 ld [ %g1 + 0x24 ], %o1 <== NOT EXECUTED 4000f4f8: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f4fc: 40 00 25 13 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f500: 90 12 23 18 or %o0, 0x318, %o0 ! 40031718 <== NOT EXECUTED rap->symbols * sizeof (rtems_rtl_obj_sym) + rap->strtab_size; 4000f504: c2 07 bf f0 ld [ %fp + -16 ], %g1 <== NOT EXECUTED 4000f508: 93 28 60 02 sll %g1, 2, %o1 4000f50c: 92 02 40 01 add %o1, %g1, %o1 4000f510: c2 07 bf e8 ld [ %fp + -24 ], %g1 4000f514: 93 2a 60 02 sll %o1, 2, %o1 4000f518: 92 02 40 01 add %o1, %g1, %o1 obj->global_size = 4000f51c: d2 26 20 4c st %o1, [ %i0 + 0x4c ] obj->global_table = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL, 4000f520: 94 10 20 01 mov 1, %o2 4000f524: 7f ff eb c0 call 4000a424 4000f528: 90 10 20 01 mov 1, %o0 4000f52c: d0 26 20 44 st %o0, [ %i0 + 0x44 ] if (!obj->global_table) 4000f530: 80 a2 20 00 cmp %o0, 0 4000f534: 02 80 00 f3 be 4000f900 <== NEVER TAKEN 4000f538: 82 10 00 08 mov %o0, %g1 obj->global_syms = rap->symbols; 4000f53c: c4 07 bf f0 ld [ %fp + -16 ], %g2 4000f540: c4 26 20 48 st %g2, [ %i0 + 0x48 ] (rap->symbols * sizeof (rtems_rtl_obj_sym))); 4000f544: 93 28 a0 02 sll %g2, 2, %o1 if (!rtems_rtl_obj_comp_read (rap->decomp, rap->strtab, rap->strtab_size)) 4000f548: d4 07 bf e8 ld [ %fp + -24 ], %o2 4000f54c: d0 07 bf 88 ld [ %fp + -120 ], %o0 (rap->symbols * sizeof (rtems_rtl_obj_sym))); 4000f550: 92 02 40 02 add %o1, %g2, %o1 4000f554: 93 2a 60 02 sll %o1, 2, %o1 rap->strtab = (((char*) obj->global_table) + 4000f558: 92 00 40 09 add %g1, %o1, %o1 if (!rtems_rtl_obj_comp_read (rap->decomp, rap->strtab, rap->strtab_size)) 4000f55c: 7f ff f7 88 call 4000d37c 4000f560: d2 27 bf e4 st %o1, [ %fp + -28 ] 4000f564: 80 a2 20 00 cmp %o0, 0 4000f568: 02 80 00 e0 be 4000f8e8 <== NEVER TAKEN 4000f56c: ae 10 00 08 mov %o0, %l7 for (sym = 0, gsym = obj->global_table; sym < rap->symbols; ++sym) 4000f570: fa 06 20 44 ld [ %i0 + 0x44 ], %i5 printf ("rtl: sym:load: data=0x%08" PRIx32 " name=0x%08" PRIx32 4000f574: 33 10 00 c5 sethi %hi(0x40031400), %i1 gsym->data = data & 0xffff; 4000f578: 35 00 00 3f sethi %hi(0xfc00), %i2 printf ("rtl: sym:add:%-2d name:%-20s bind:%-2d type:%-2d val:%8p sect:%d\n", 4000f57c: 37 10 00 c5 sethi %hi(0x40031400), %i3 for (sym = 0, gsym = obj->global_table; sym < rap->symbols; ++sym) 4000f580: b8 10 20 00 clr %i4 printf ("rtl: sym:load: data=0x%08" PRIx32 " name=0x%08" PRIx32 4000f584: b2 16 63 38 or %i1, 0x338, %i1 gsym->data = data & 0xffff; 4000f588: b4 16 a3 ff or %i2, 0x3ff, %i2 printf ("rtl: sym:add:%-2d name:%-20s bind:%-2d type:%-2d val:%8p sect:%d\n", 4000f58c: b6 16 e3 90 or %i3, 0x390, %i3 for (sym = 0, gsym = obj->global_table; sym < rap->symbols; ++sym) 4000f590: c4 07 bf f0 ld [ %fp + -16 ], %g2 4000f594: 80 a0 80 1c cmp %g2, %i4 4000f598: 08 80 00 88 bleu 4000f7b8 4000f59c: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &data) || 4000f5a0: 7f ff fe 25 call 4000ee34 4000f5a4: 92 07 bf 70 add %fp, -144, %o1 4000f5a8: 80 a2 20 00 cmp %o0, 0 4000f5ac: 02 80 00 7c be 4000f79c <== NEVER TAKEN 4000f5b0: d0 07 bf 88 ld [ %fp + -120 ], %o0 !rtems_rtl_rap_read_uint32 (rap->decomp, &name) || 4000f5b4: 7f ff fe 20 call 4000ee34 4000f5b8: 92 07 bf 74 add %fp, -140, %o1 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &data) || 4000f5bc: 80 a2 20 00 cmp %o0, 0 4000f5c0: 02 80 00 77 be 4000f79c <== NEVER TAKEN 4000f5c4: d0 07 bf 88 ld [ %fp + -120 ], %o0 !rtems_rtl_rap_read_uint32 (rap->decomp, &value)) 4000f5c8: 7f ff fe 1b call 4000ee34 4000f5cc: 92 07 bf 78 add %fp, -136, %o1 !rtems_rtl_rap_read_uint32 (rap->decomp, &name) || 4000f5d0: 80 a2 20 00 cmp %o0, 0 4000f5d4: 22 80 00 73 be,a 4000f7a0 <== NEVER TAKEN 4000f5d8: d2 06 20 44 ld [ %i0 + 0x44 ], %o1 <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_SYMBOL)) 4000f5dc: 40 00 04 0a call 40010604 4000f5e0: 90 10 20 20 mov 0x20, %o0 4000f5e4: 80 a2 20 00 cmp %o0, 0 4000f5e8: 22 80 00 08 be,a 4000f608 <== ALWAYS TAKEN 4000f5ec: d0 07 bf e4 ld [ %fp + -28 ], %o0 printf ("rtl: sym:load: data=0x%08" PRIx32 " name=0x%08" PRIx32 4000f5f0: d6 07 bf 78 ld [ %fp + -136 ], %o3 <== NOT EXECUTED 4000f5f4: d4 07 bf 74 ld [ %fp + -140 ], %o2 <== NOT EXECUTED 4000f5f8: d2 07 bf 70 ld [ %fp + -144 ], %o1 <== NOT EXECUTED 4000f5fc: 40 00 24 d3 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f600: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED if (rtems_rtl_symbol_global_find (rap->strtab + name) && 4000f604: d0 07 bf e4 ld [ %fp + -28 ], %o0 <== NOT EXECUTED 4000f608: c4 07 bf 74 ld [ %fp + -140 ], %g2 4000f60c: 40 00 02 ba call 400100f4 4000f610: 90 02 00 02 add %o0, %g2, %o0 4000f614: 80 a2 20 00 cmp %o0, 0 4000f618: 02 80 00 07 be 4000f634 <== ALWAYS TAKEN 4000f61c: d2 07 bf 70 ld [ %fp + -144 ], %o1 (ELF_ST_BIND (data & 0xffff) != STB_WEAK)) 4000f620: 85 32 60 04 srl %o1, 4, %g2 <== NOT EXECUTED 4000f624: 84 08 af ff and %g2, 0xfff, %g2 <== NOT EXECUTED if (rtems_rtl_symbol_global_find (rap->strtab + name) && 4000f628: 80 a0 a0 02 cmp %g2, 2 <== NOT EXECUTED 4000f62c: 12 80 00 56 bne 4000f784 <== NOT EXECUTED 4000f630: d4 07 bf e4 ld [ %fp + -28 ], %o2 <== NOT EXECUTED symsect = rtems_rtl_obj_find_section_by_index (obj, data >> 16); 4000f634: 93 32 60 10 srl %o1, 0x10, %o1 4000f638: 7f ff fc 1b call 4000e6a4 4000f63c: 90 10 00 18 mov %i0, %o0 if (!symsect) 4000f640: 86 92 20 00 orcc %o0, 0, %g3 4000f644: 02 80 00 43 be 4000f750 <== NEVER TAKEN 4000f648: c4 07 bf e4 ld [ %fp + -28 ], %g2 gsym->name = rap->strtab + name; 4000f64c: c8 07 bf 74 ld [ %fp + -140 ], %g4 4000f650: 84 00 80 04 add %g2, %g4, %g2 node->next = NULL; 4000f654: c0 27 40 00 clr [ %i5 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_SYMBOL)) 4000f658: 90 10 20 20 mov 0x20, %o0 gsym->name = rap->strtab + name; 4000f65c: c4 27 60 08 st %g2, [ %i5 + 8 ] gsym->value = (uint8_t*) (value + symsect->base); 4000f660: c4 07 bf 78 ld [ %fp + -136 ], %g2 4000f664: c6 00 e0 30 ld [ %g3 + 0x30 ], %g3 4000f668: 86 00 c0 02 add %g3, %g2, %g3 gsym->data = data & 0xffff; 4000f66c: c4 07 bf 70 ld [ %fp + -144 ], %g2 4000f670: 84 08 80 1a and %g2, %i2, %g2 gsym->value = (uint8_t*) (value + symsect->base); 4000f674: c6 27 60 0c st %g3, [ %i5 + 0xc ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_SYMBOL)) 4000f678: 40 00 03 e3 call 40010604 4000f67c: c4 27 60 10 st %g2, [ %i5 + 0x10 ] 4000f680: 80 a2 20 00 cmp %o0, 0 4000f684: 22 80 00 0e be,a 4000f6bc <== ALWAYS TAKEN 4000f688: ba 07 60 14 add %i5, 0x14, %i5 (int) ELF_ST_BIND (data & 0xffff), 4000f68c: d8 07 bf 70 ld [ %fp + -144 ], %o4 <== NOT EXECUTED gsym->value, (int) (data >> 16)); 4000f690: 85 33 20 10 srl %o4, 0x10, %g2 <== NOT EXECUTED printf ("rtl: sym:add:%-2d name:%-20s bind:%-2d type:%-2d val:%8p sect:%d\n", 4000f694: c4 23 a0 5c st %g2, [ %sp + 0x5c ] <== NOT EXECUTED (int) ELF_ST_BIND (data & 0xffff), 4000f698: 97 33 20 04 srl %o4, 4, %o3 <== NOT EXECUTED printf ("rtl: sym:add:%-2d name:%-20s bind:%-2d type:%-2d val:%8p sect:%d\n", 4000f69c: da 07 60 0c ld [ %i5 + 0xc ], %o5 <== NOT EXECUTED 4000f6a0: d4 07 60 08 ld [ %i5 + 8 ], %o2 <== NOT EXECUTED 4000f6a4: 98 0b 20 0f and %o4, 0xf, %o4 <== NOT EXECUTED 4000f6a8: 96 0a ef ff and %o3, 0xfff, %o3 <== NOT EXECUTED 4000f6ac: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED 4000f6b0: 40 00 24 a6 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f6b4: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED ++gsym; 4000f6b8: ba 07 60 14 add %i5, 0x14, %i5 <== NOT EXECUTED for (sym = 0, gsym = obj->global_table; sym < rap->symbols; ++sym) 4000f6bc: 10 bf ff b5 b 4000f590 4000f6c0: b8 07 20 01 inc %i4 printf ("rtl: rap: datatype=%" PRIu32 "\n", rap.datatype); 4000f6c4: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f6c8: 40 00 24 a0 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f6cc: 90 12 21 a8 or %o0, 0x1a8, %o0 ! 400315a8 <== NOT EXECUTED if (datatype != ELFDEFNNAME (MACHDEP_ENDIANNESS)) 4000f6d0: 10 bf fe e3 b 4000f25c <== NOT EXECUTED 4000f6d4: c2 07 bf a0 ld [ %fp + -96 ], %g1 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid class"); 4000f6d8: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED return false; 4000f6dc: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid class"); 4000f6e0: 7f ff f1 c3 call 4000bdec <== NOT EXECUTED 4000f6e4: 92 12 61 f0 or %o1, 0x1f0, %o1 <== NOT EXECUTED 4000f6e8: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f6ec: 81 c7 e0 08 ret <== NOT EXECUTED 4000f6f0: 81 e8 00 00 restore <== NOT EXECUTED obj->sec_num = (uint32_t*) malloc (sizeof (uint32_t) * obj->obj_num); 4000f6f4: 7f ff e1 74 call 40007cc4 4000f6f8: 91 2a 20 02 sll %o0, 2, %o0 4000f6fc: d0 26 20 80 st %o0, [ %i0 + 0x80 ] if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.rpathlen)) 4000f700: 92 07 bf f8 add %fp, -8, %o1 4000f704: 90 10 00 1d mov %i5, %o0 4000f708: 7f ff fd cb call 4000ee34 4000f70c: ba 10 20 00 clr %i5 4000f710: 80 a2 20 00 cmp %o0, 0 4000f714: 02 bf fe 75 be 4000f0e8 <== NEVER TAKEN 4000f718: ae 10 20 00 clr %l7 for (i = 0; i < obj->obj_num; ++i) 4000f71c: c2 06 20 84 ld [ %i0 + 0x84 ], %g1 4000f720: 80 a0 40 1d cmp %g1, %i5 4000f724: 08 80 00 80 bleu 4000f924 4000f728: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_rap_read_uint32 (rap.decomp, &(obj->sec_num[i]))) 4000f72c: d2 06 20 80 ld [ %i0 + 0x80 ], %o1 4000f730: 83 2f 60 02 sll %i5, 2, %g1 4000f734: 7f ff fd c0 call 4000ee34 4000f738: 92 02 40 01 add %o1, %g1, %o1 4000f73c: 80 a2 20 00 cmp %o0, 0 4000f740: 02 bf fe 69 be 4000f0e4 <== NEVER TAKEN 4000f744: ba 07 60 01 inc %i5 for (i = 0; i < obj->obj_num; ++i) 4000f748: 10 bf ff f6 b 4000f720 4000f74c: c2 06 20 84 ld [ %i0 + 0x84 ], %g1 rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->global_table); 4000f750: d2 06 20 44 ld [ %i0 + 0x44 ], %o1 <== NOT EXECUTED 4000f754: 7f ff eb 5d call 4000a4c8 <== NOT EXECUTED 4000f758: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED obj->global_table = NULL; 4000f75c: c0 26 20 44 clr [ %i0 + 0x44 ] <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "section index not found: %" PRIu32, data >> 16); 4000f760: 13 10 00 c5 sethi %hi(0x40031400), %o1 <== NOT EXECUTED obj->global_syms = 0; 4000f764: c0 26 20 48 clr [ %i0 + 0x48 ] <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "section index not found: %" PRIu32, data >> 16); 4000f768: 92 12 63 70 or %o1, 0x370, %o1 <== NOT EXECUTED obj->global_size = 0; 4000f76c: c0 26 20 4c clr [ %i0 + 0x4c ] <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "section index not found: %" PRIu32, data >> 16); 4000f770: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000f774: 7f ff f1 9e call 4000bdec <== NOT EXECUTED 4000f778: d4 17 bf 70 lduh [ %fp + -144 ], %o2 <== NOT EXECUTED return false; 4000f77c: 10 bf fe 5b b 4000f0e8 <== NOT EXECUTED 4000f780: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, 4000f784: c2 07 bf 74 ld [ %fp + -140 ], %g1 <== NOT EXECUTED 4000f788: 13 10 00 c1 sethi %hi(0x40030400), %o1 <== NOT EXECUTED 4000f78c: 94 02 80 01 add %o2, %g1, %o2 <== NOT EXECUTED 4000f790: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000f794: 7f ff f1 96 call 4000bdec <== NOT EXECUTED 4000f798: 92 12 62 90 or %o1, 0x290, %o1 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->global_table); 4000f79c: d2 06 20 44 ld [ %i0 + 0x44 ], %o1 <== NOT EXECUTED 4000f7a0: 7f ff eb 4a call 4000a4c8 <== NOT EXECUTED 4000f7a4: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED obj->global_table = NULL; 4000f7a8: c0 26 20 44 clr [ %i0 + 0x44 ] <== NOT EXECUTED obj->global_syms = 0; 4000f7ac: c0 26 20 48 clr [ %i0 + 0x48 ] <== NOT EXECUTED obj->global_size = 0; 4000f7b0: 10 bf fe 4d b 4000f0e4 <== NOT EXECUTED 4000f7b4: c0 26 20 4c clr [ %i0 + 0x4c ] <== NOT EXECUTED if (obj->global_syms) 4000f7b8: c4 06 20 48 ld [ %i0 + 0x48 ], %g2 4000f7bc: 80 a0 a0 00 cmp %g2, 0 4000f7c0: 02 80 00 04 be 4000f7d0 <== NEVER TAKEN 4000f7c4: 01 00 00 00 nop rtems_rtl_symbol_obj_add (obj); 4000f7c8: 40 00 03 49 call 400104ec 4000f7cc: 90 10 00 18 mov %i0, %o0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD)) 4000f7d0: 40 00 03 8d call 40010604 4000f7d4: 90 10 20 04 mov 4, %o0 4000f7d8: 80 a2 20 00 cmp %o0, 0 4000f7dc: 02 80 00 06 be 4000f7f4 <== ALWAYS TAKEN 4000f7e0: c4 07 bf 88 ld [ %fp + -120 ], %g2 printf ("rtl: rap: input relocs=%" PRIu32 "\n", 4000f7e4: d2 00 a0 24 ld [ %g2 + 0x24 ], %o1 <== NOT EXECUTED 4000f7e8: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f7ec: 40 00 24 57 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f7f0: 90 12 23 d8 or %o0, 0x3d8, %o0 ! 400317d8 <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000f7f4: 40 00 03 84 call 40010604 4000f7f8: 90 10 20 40 mov 0x40, %o0 4000f7fc: 80 a2 20 00 cmp %o0, 0 4000f800: 22 80 00 06 be,a 4000f818 <== ALWAYS TAKEN 4000f804: 90 10 24 00 mov 0x400, %o0 printf ("rtl: relocation\n"); 4000f808: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f80c: 40 00 24 5e call 40018984 <__wrap_puts> <== NOT EXECUTED 4000f810: 90 12 23 f8 or %o0, 0x3f8, %o0 ! 400317f8 <== NOT EXECUTED symname_buffer = malloc (SYMNAME_BUFFER_SIZE); 4000f814: 90 10 24 00 mov 0x400, %o0 <== NOT EXECUTED 4000f818: 7f ff e1 2b call 40007cc4 4000f81c: a0 10 20 00 clr %l0 if (!symname_buffer) 4000f820: 80 a2 20 00 cmp %o0, 0 4000f824: 02 80 00 29 be 4000f8c8 <== NEVER TAKEN 4000f828: ba 10 00 08 mov %o0, %i5 printf (" %2d: rel: type:%-2d off:%" PRIu32 4000f82c: 25 10 00 c6 sethi %hi(0x40031800), %l2 4000f830: 82 14 a1 00 or %l2, 0x100, %g1 ! 40031900 printf (" %2d: rela: type:%-2d off:%" PRIu32 " addend:%d" 4000f834: 05 10 00 c6 sethi %hi(0x40031800), %g2 printf (" %2d: rel: type:%-2d off:%" PRIu32 4000f838: c2 27 bf 50 st %g1, [ %fp + -176 ] printf (" %2d: rela: type:%-2d off:%" PRIu32 " addend:%d" 4000f83c: 82 10 a0 a8 or %g2, 0xa8, %g1 4000f840: c2 27 bf 4c st %g1, [ %fp + -180 ] printf (" %2d: info=%08" PRIx32 " offset=%" PRIu32 4000f844: 29 10 00 c6 sethi %hi(0x40031800), %l4 symname_size = (info & ~(3 << 30)) >> 8; 4000f848: 27 00 0f ff sethi %hi(0x3ffc00), %l3 printf (" %2d: info=%08" PRIx32 " offset=%" PRIu32 4000f84c: a8 15 20 68 or %l4, 0x68, %l4 symname_size = (info & ~(3 << 30)) >> 8; 4000f850: a6 14 e3 ff or %l3, 0x3ff, %l3 targetsect = rtems_rtl_obj_find_section (obj, rap_sections[section].name); 4000f854: 85 2c 20 03 sll %l0, 3, %g2 4000f858: f8 04 40 02 ld [ %l1 + %g2 ], %i4 uint32_t header = 0; 4000f85c: c0 27 bf 68 clr [ %fp + -152 ] targetsect = rtems_rtl_obj_find_section (obj, rap_sections[section].name); 4000f860: 92 10 00 1c mov %i4, %o1 4000f864: 7f ff fb 85 call 4000e678 4000f868: 90 10 00 18 mov %i0, %o0 if (!targetsect) 4000f86c: ac 92 20 00 orcc %o0, 0, %l6 4000f870: 02 80 00 0b be 4000f89c 4000f874: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &header)) 4000f878: 7f ff fd 6f call 4000ee34 4000f87c: 92 07 bf 68 add %fp, -152, %o1 4000f880: 80 a2 20 00 cmp %o0, 0 4000f884: 02 80 00 d1 be 4000fbc8 <== NEVER TAKEN 4000f888: c4 07 bf 68 ld [ %fp + -152 ], %g2 relocs = header & ~(1 << 31); 4000f88c: 35 20 00 00 sethi %hi(0x80000000), %i2 if (relocs && rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000f890: b4 a8 80 1a andncc %g2, %i2, %i2 4000f894: 12 80 00 3e bne 4000f98c 4000f898: ab 30 a0 1f srl %g2, 0x1f, %l5 for (section = 0; section < RTEMS_RTL_RAP_SECS; ++section) 4000f89c: a0 04 20 01 inc %l0 4000f8a0: 80 a4 20 06 cmp %l0, 6 4000f8a4: 12 bf ff ed bne 4000f858 4000f8a8: 85 2c 20 03 sll %l0, 3, %g2 free (symname_buffer); 4000f8ac: 7f ff df 0a call 400074d4 4000f8b0: 90 10 00 1d mov %i5, %o0 rtems_rtl_obj_synchronize_cache (obj); 4000f8b4: 7f ff fb a1 call 4000e738 4000f8b8: 90 10 00 18 mov %i0, %o0 4000f8bc: b0 0d e0 ff and %l7, 0xff, %i0 4000f8c0: 81 c7 e0 08 ret 4000f8c4: 81 e8 00 00 restore rtems_rtl_set_error (ENOMEM, "no memory for local symbol name buffer"); 4000f8c8: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000f8cc: 13 10 00 c6 sethi %hi(0x40031800), %o1 <== NOT EXECUTED return false; 4000f8d0: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for local symbol name buffer"); 4000f8d4: 7f ff f1 46 call 4000bdec <== NOT EXECUTED 4000f8d8: 92 12 60 08 or %o1, 8, %o1 <== NOT EXECUTED 4000f8dc: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f8e0: 81 c7 e0 08 ret <== NOT EXECUTED 4000f8e4: 81 e8 00 00 restore <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->global_table); 4000f8e8: d2 06 20 44 ld [ %i0 + 0x44 ], %o1 <== NOT EXECUTED 4000f8ec: 7f ff ea f7 call 4000a4c8 <== NOT EXECUTED 4000f8f0: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 4000f8f4: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f8f8: 81 c7 e0 08 ret <== NOT EXECUTED 4000f8fc: 81 e8 00 00 restore <== NOT EXECUTED obj->global_size = 0; 4000f900: c0 26 20 4c clr [ %i0 + 0x4c ] <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for obj global syms"); 4000f904: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 4000f908: 13 10 00 c1 sethi %hi(0x40030400), %o1 <== NOT EXECUTED return false; 4000f90c: ae 10 20 00 clr %l7 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for obj global syms"); 4000f910: 7f ff f1 37 call 4000bdec <== NOT EXECUTED 4000f914: 92 12 62 d0 or %o1, 0x2d0, %o1 <== NOT EXECUTED 4000f918: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000f91c: 81 c7 e0 08 ret <== NOT EXECUTED 4000f920: 81 e8 00 00 restore <== NOT EXECUTED if (!rtems_rtl_rap_read_uint32 (rap.decomp, &rap.strtable_size)) 4000f924: 7f ff fd 44 call 4000ee34 4000f928: 92 07 bf f4 add %fp, -12, %o1 4000f92c: 80 a2 20 00 cmp %o0, 0 4000f930: 02 bf fd ee be 4000f0e8 <== NEVER TAKEN 4000f934: ae 10 20 00 clr %l7 if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000f938: 40 00 03 33 call 40010604 4000f93c: 90 10 20 01 mov 1, %o0 4000f940: 80 a2 20 00 cmp %o0, 0 4000f944: 22 80 00 07 be,a 4000f960 <== ALWAYS TAKEN 4000f948: c6 06 20 84 ld [ %i0 + 0x84 ], %g3 printf ("rtl: rap: details: obj_num=%" PRIu32 "\n", obj->obj_num); 4000f94c: d2 06 20 84 ld [ %i0 + 0x84 ], %o1 <== NOT EXECUTED 4000f950: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED 4000f954: 40 00 23 fd call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f958: 90 12 22 58 or %o0, 0x258, %o0 ! 40031658 <== NOT EXECUTED obj_detail_size = sizeof (struct link_map) * obj->obj_num; 4000f95c: c6 06 20 84 ld [ %i0 + 0x84 ], %g3 <== NOT EXECUTED 4000f960: ba 58 e0 34 smul %g3, 0x34, %i5 for (i = 0; i < obj->obj_num; ++i) 4000f964: 82 10 20 00 clr %g1 4000f968: 80 a0 40 03 cmp %g1, %g3 4000f96c: 02 80 00 b4 be 4000fc3c 4000f970: 85 28 60 02 sll %g1, 2, %g2 obj_detail_size += (obj->sec_num[i] * sizeof (section_detail)); 4000f974: c8 06 20 80 ld [ %i0 + 0x80 ], %g4 4000f978: c4 01 00 02 ld [ %g4 + %g2 ], %g2 4000f97c: 85 28 a0 04 sll %g2, 4, %g2 for (i = 0; i < obj->obj_num; ++i) 4000f980: 82 00 60 01 inc %g1 obj_detail_size += (obj->sec_num[i] * sizeof (section_detail)); 4000f984: 10 bf ff f9 b 4000f968 4000f988: ba 07 40 02 add %i5, %g2, %i5 if (relocs && rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000f98c: 40 00 03 1e call 40010604 4000f990: 90 10 20 40 mov 0x40, %o0 4000f994: 80 a2 20 00 cmp %o0, 0 4000f998: 22 80 00 0d be,a 4000f9cc <== ALWAYS TAKEN 4000f99c: ea 27 bf 54 st %l5, [ %fp + -172 ] printf ("rtl: relocation: %s: header: %08" PRIx32 " relocs: %d %s\n", 4000f9a0: 80 a5 60 00 cmp %l5, 0 <== NOT EXECUTED 4000f9a4: 02 80 00 a3 be 4000fc30 <== NOT EXECUTED 4000f9a8: d4 07 bf 68 ld [ %fp + -152 ], %o2 <== NOT EXECUTED 4000f9ac: 19 10 00 c5 sethi %hi(0x40031400), %o4 <== NOT EXECUTED 4000f9b0: 98 13 21 28 or %o4, 0x128, %o4 ! 40031528 <== NOT EXECUTED 4000f9b4: 11 10 00 c6 sethi %hi(0x40031800), %o0 <== NOT EXECUTED 4000f9b8: 96 10 00 1a mov %i2, %o3 <== NOT EXECUTED 4000f9bc: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED 4000f9c0: 40 00 23 e2 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000f9c4: 90 12 20 30 or %o0, 0x30, %o0 <== NOT EXECUTED if (((info & (1 << 31)) == 0) || is_rela) 4000f9c8: ea 27 bf 54 st %l5, [ %fp + -172 ] <== NOT EXECUTED printf ("rtl: relocation: %s: header: %08" PRIx32 " relocs: %d %s\n", 4000f9cc: b6 10 20 00 clr %i3 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &info)) 4000f9d0: d0 07 bf 88 ld [ %fp + -120 ], %o0 uint32_t info = 0; 4000f9d4: c0 27 bf 6c clr [ %fp + -148 ] if (!rtems_rtl_rap_read_uint32 (rap->decomp, &info)) 4000f9d8: 92 07 bf 6c add %fp, -148, %o1 uint32_t offset = 0; 4000f9dc: c0 27 bf 70 clr [ %fp + -144 ] if (!rtems_rtl_rap_read_uint32 (rap->decomp, &info)) 4000f9e0: 7f ff fd 15 call 4000ee34 4000f9e4: c0 27 bf 74 clr [ %fp + -140 ] 4000f9e8: 80 a2 20 00 cmp %o0, 0 4000f9ec: 02 80 00 77 be 4000fbc8 <== NEVER TAKEN 4000f9f0: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &offset)) 4000f9f4: 7f ff fd 10 call 4000ee34 4000f9f8: 92 07 bf 70 add %fp, -144, %o1 4000f9fc: 80 a2 20 00 cmp %o0, 0 4000fa00: 02 80 00 72 be 4000fbc8 <== NEVER TAKEN 4000fa04: c4 07 bf 6c ld [ %fp + -148 ], %g2 if (((info & (1 << 31)) == 0) || is_rela) 4000fa08: 80 a0 a0 00 cmp %g2, 0 4000fa0c: 16 80 00 05 bge 4000fa20 4000fa10: c2 07 bf 54 ld [ %fp + -172 ], %g1 4000fa14: 80 a0 60 00 cmp %g1, 0 4000fa18: 02 80 00 08 be 4000fa38 <== NEVER TAKEN 4000fa1c: 01 00 00 00 nop if (!rtems_rtl_rap_read_uint32 (rap->decomp, &addend)) 4000fa20: d0 07 bf 88 ld [ %fp + -120 ], %o0 4000fa24: 7f ff fd 04 call 4000ee34 4000fa28: 92 07 bf 74 add %fp, -140, %o1 4000fa2c: 80 a2 20 00 cmp %o0, 0 4000fa30: 02 80 00 66 be 4000fbc8 <== NEVER TAKEN 4000fa34: 01 00 00 00 nop if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000fa38: 40 00 02 f3 call 40010604 4000fa3c: 90 10 20 40 mov 0x40, %o0 ! 40 <_TLS_Alignment+0x3f> 4000fa40: 80 a2 20 00 cmp %o0, 0 4000fa44: 02 80 00 09 be 4000fa68 <== ALWAYS TAKEN 4000fa48: d2 07 bf 6c ld [ %fp + -148 ], %o1 printf (" %2d: info=%08" PRIx32 " offset=%" PRIu32 4000fa4c: d8 07 bf 74 ld [ %fp + -140 ], %o4 <== NOT EXECUTED 4000fa50: d6 07 bf 70 ld [ %fp + -144 ], %o3 <== NOT EXECUTED 4000fa54: d4 07 bf 6c ld [ %fp + -148 ], %o2 <== NOT EXECUTED 4000fa58: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 4000fa5c: 40 00 23 bb call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fa60: 90 10 00 14 mov %l4, %o0 <== NOT EXECUTED type = info & 0xff; 4000fa64: d2 07 bf 6c ld [ %fp + -148 ], %o1 <== NOT EXECUTED if ((info & (1 << 31)) == 0) 4000fa68: 80 a2 60 00 cmp %o1, 0 4000fa6c: 06 80 00 5b bl 4000fbd8 4000fa70: b2 0a 60 ff and %o1, 0xff, %i1 symsect = rtems_rtl_obj_find_section_by_index (obj, info >> 8); 4000fa74: 93 32 60 08 srl %o1, 8, %o1 4000fa78: 7f ff fb 0b call 4000e6a4 4000fa7c: 90 10 00 18 mov %i0, %o0 if (!symsect) 4000fa80: 80 a2 20 00 cmp %o0, 0 4000fa84: 02 80 00 51 be 4000fbc8 <== NEVER TAKEN 4000fa88: c4 07 bf 74 ld [ %fp + -140 ], %g2 symvalue = (Elf_Addr) symsect->base + addend; 4000fa8c: f8 02 20 30 ld [ %o0 + 0x30 ], %i4 4000fa90: b8 07 00 02 add %i4, %g2, %i4 const char* symname = NULL; 4000fa94: a4 10 20 00 clr %l2 4000fa98: c6 07 bf 70 ld [ %fp + -144 ], %g3 if (is_rela) 4000fa9c: 80 a5 60 00 cmp %l5, 0 4000faa0: 02 80 00 2e be 4000fb58 <== NEVER TAKEN 4000faa4: c6 27 bf 78 st %g3, [ %fp + -136 ] rela.r_info = type; 4000faa8: f2 27 bf 7c st %i1, [ %fp + -132 ] if ((info & (1 << 31)) == 0) 4000faac: c6 07 bf 6c ld [ %fp + -148 ], %g3 4000fab0: 80 a0 e0 00 cmp %g3, 0 4000fab4: 06 80 00 27 bl 4000fb50 4000fab8: c6 07 bf 74 ld [ %fp + -140 ], %g3 rela.r_addend = 0; 4000fabc: c0 27 bf 80 clr [ %fp + -128 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000fac0: 40 00 02 d1 call 40010604 4000fac4: 90 10 20 40 mov 0x40, %o0 4000fac8: 80 a2 20 00 cmp %o0, 0 4000facc: 02 80 00 12 be 4000fb14 <== ALWAYS TAKEN 4000fad0: 9a 10 00 1c mov %i4, %o5 printf (" %2d: rela: type:%-2d off:%" PRIu32 " addend:%d" 4000fad4: c0 27 bf 58 clr [ %fp + -168 ] <== NOT EXECUTED 4000fad8: 9a 10 00 12 mov %l2, %o5 <== NOT EXECUTED 4000fadc: c0 27 bf 5c clr [ %fp + -164 ] <== NOT EXECUTED 4000fae0: 94 10 00 19 mov %i1, %o2 <== NOT EXECUTED 4000fae4: c6 07 bf 58 ld [ %fp + -168 ], %g3 <== NOT EXECUTED 4000fae8: c6 23 a0 5c st %g3, [ %sp + 0x5c ] <== NOT EXECUTED 4000faec: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 4000faf0: c6 07 bf 5c ld [ %fp + -164 ], %g3 <== NOT EXECUTED 4000faf4: c0 23 a0 64 clr [ %sp + 0x64 ] <== NOT EXECUTED 4000faf8: f8 23 a0 68 st %i4, [ %sp + 0x68 ] <== NOT EXECUTED 4000fafc: c6 23 a0 60 st %g3, [ %sp + 0x60 ] <== NOT EXECUTED 4000fb00: d0 07 bf 4c ld [ %fp + -180 ], %o0 <== NOT EXECUTED 4000fb04: d8 07 bf 74 ld [ %fp + -140 ], %o4 <== NOT EXECUTED 4000fb08: 40 00 23 90 call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fb0c: d6 07 bf 70 ld [ %fp + -144 ], %o3 <== NOT EXECUTED if (!rtems_rtl_elf_relocate_rela (obj, &rela, targetsect, 4000fb10: 9a 10 00 1c mov %i4, %o5 <== NOT EXECUTED 4000fb14: 98 10 20 00 clr %o4 4000fb18: 96 10 00 12 mov %l2, %o3 4000fb1c: 94 10 00 16 mov %l6, %o2 4000fb20: 92 07 bf 78 add %fp, -136, %o1 4000fb24: 7f ff f1 5c call 4000c094 4000fb28: 90 10 00 18 mov %i0, %o0 4000fb2c: 80 a2 20 00 cmp %o0, 0 4000fb30: 02 80 00 26 be 4000fbc8 <== NEVER TAKEN 4000fb34: 01 00 00 00 nop for (r = 0; r < relocs; ++r) 4000fb38: b6 06 e0 01 inc %i3 4000fb3c: 80 a6 80 1b cmp %i2, %i3 4000fb40: 12 bf ff a5 bne 4000f9d4 4000fb44: d0 07 bf 88 ld [ %fp + -120 ], %o0 for (section = 0; section < RTEMS_RTL_RAP_SECS; ++section) 4000fb48: 10 bf ff 56 b 4000f8a0 4000fb4c: a0 04 20 01 inc %l0 else rela.r_addend = addend; 4000fb50: 10 bf ff dc b 4000fac0 4000fb54: c6 27 bf 80 st %g3, [ %fp + -128 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) 4000fb58: 90 10 20 40 mov 0x40, %o0 <== NOT EXECUTED 4000fb5c: 40 00 02 aa call 40010604 <== NOT EXECUTED 4000fb60: f2 27 bf 7c st %i1, [ %fp + -132 ] <== NOT EXECUTED 4000fb64: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000fb68: 02 80 00 0f be 4000fba4 <== NOT EXECUTED 4000fb6c: 9a 10 00 1c mov %i4, %o5 <== NOT EXECUTED printf (" %2d: rel: type:%-2d off:%" PRIu32 4000fb70: c0 23 a0 60 clr [ %sp + 0x60 ] <== NOT EXECUTED 4000fb74: 9a 10 20 00 clr %o5 <== NOT EXECUTED 4000fb78: f8 23 a0 64 st %i4, [ %sp + 0x64 ] <== NOT EXECUTED 4000fb7c: 98 10 00 12 mov %l2, %o4 <== NOT EXECUTED 4000fb80: c0 23 a0 5c clr [ %sp + 0x5c ] <== NOT EXECUTED 4000fb84: 94 10 00 19 mov %i1, %o2 <== NOT EXECUTED 4000fb88: d6 07 bf 70 ld [ %fp + -144 ], %o3 <== NOT EXECUTED 4000fb8c: d0 07 bf 50 ld [ %fp + -176 ], %o0 <== NOT EXECUTED 4000fb90: c0 27 bf 58 clr [ %fp + -168 ] <== NOT EXECUTED 4000fb94: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 4000fb98: 40 00 23 6c call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fb9c: c0 27 bf 5c clr [ %fp + -164 ] <== NOT EXECUTED if (!rtems_rtl_elf_relocate_rel (obj, &rel, targetsect, 4000fba0: 9a 10 00 1c mov %i4, %o5 <== NOT EXECUTED 4000fba4: 98 10 20 00 clr %o4 <== NOT EXECUTED 4000fba8: 96 10 00 12 mov %l2, %o3 <== NOT EXECUTED 4000fbac: 94 10 00 16 mov %l6, %o2 <== NOT EXECUTED 4000fbb0: 92 07 bf 78 add %fp, -136, %o1 <== NOT EXECUTED 4000fbb4: 7f ff f1 be call 4000c2ac <== NOT EXECUTED 4000fbb8: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4000fbbc: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000fbc0: 32 bf ff df bne,a 4000fb3c <== NOT EXECUTED 4000fbc4: b6 06 e0 01 inc %i3 <== NOT EXECUTED free (symname_buffer); 4000fbc8: 7f ff de 43 call 400074d4 <== NOT EXECUTED 4000fbcc: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED return false; 4000fbd0: 10 bf fd 46 b 4000f0e8 <== NOT EXECUTED 4000fbd4: ae 10 20 00 clr %l7 <== NOT EXECUTED else if (rtems_rtl_elf_rel_resolve_sym (type)) 4000fbd8: 7f ff f1 29 call 4000c07c 4000fbdc: 90 10 00 19 mov %i1, %o0 4000fbe0: 80 a2 20 00 cmp %o0, 0 4000fbe4: 02 80 00 da be 4000ff4c <== NEVER TAKEN 4000fbe8: b8 10 20 00 clr %i4 symname_size = (info & ~(3 << 30)) >> 8; 4000fbec: c6 07 bf 6c ld [ %fp + -148 ], %g3 4000fbf0: 85 30 e0 08 srl %g3, 8, %g2 4000fbf4: a4 08 80 13 and %g2, %l3, %l2 if ((info & (1 << 30)) != 0) 4000fbf8: 05 10 00 00 sethi %hi(0x40000000), %g2 4000fbfc: 80 88 c0 02 btst %g3, %g2 4000fc00: 02 80 00 c8 be 4000ff20 4000fc04: 80 a4 a3 ff cmp %l2, 0x3ff symname = rap->strtab + symname_size; 4000fc08: c4 07 bf e4 ld [ %fp + -28 ], %g2 4000fc0c: a4 00 80 12 add %g2, %l2, %l2 symbol = rtems_rtl_symbol_obj_find (obj, symname); 4000fc10: 92 10 00 12 mov %l2, %o1 4000fc14: 40 00 02 11 call 40010458 4000fc18: 90 10 00 18 mov %i0, %o0 if (!symbol) 4000fc1c: 80 a2 20 00 cmp %o0, 0 4000fc20: 02 80 00 3c be 4000fd10 <== NEVER TAKEN 4000fc24: 94 10 00 12 mov %l2, %o2 symvalue = (Elf_Addr) symbol->value; 4000fc28: 10 bf ff 9c b 4000fa98 4000fc2c: f8 02 20 0c ld [ %o0 + 0xc ], %i4 printf ("rtl: relocation: %s: header: %08" PRIx32 " relocs: %d %s\n", 4000fc30: 19 10 00 c5 sethi %hi(0x40031400), %o4 <== NOT EXECUTED 4000fc34: 10 bf ff 60 b 4000f9b4 <== NOT EXECUTED 4000fc38: 98 13 21 30 or %o4, 0x130, %o4 ! 40031530 <== NOT EXECUTED detail = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, 4000fc3c: d2 07 bf f4 ld [ %fp + -12 ], %o1 4000fc40: 94 10 20 01 mov 1, %o2 4000fc44: 92 07 40 09 add %i5, %o1, %o1 4000fc48: 7f ff e9 f7 call 4000a424 4000fc4c: 90 10 20 00 clr %o0 if (!detail) 4000fc50: b8 92 20 00 orcc %o0, 0, %i4 4000fc54: 02 80 00 b1 be 4000ff18 <== NEVER TAKEN 4000fc58: d4 07 bf f4 ld [ %fp + -12 ], %o2 if (!rtems_rtl_obj_comp_read (rap->decomp, 4000fc5c: d0 07 bf 88 ld [ %fp + -120 ], %o0 rap->strtable = detail + obj_detail_size; 4000fc60: 92 07 00 1d add %i4, %i5, %o1 if (!rtems_rtl_obj_comp_read (rap->decomp, 4000fc64: 7f ff f5 c6 call 4000d37c 4000fc68: d2 27 bf fc st %o1, [ %fp + -4 ] 4000fc6c: 80 a2 20 00 cmp %o0, 0 4000fc70: 02 80 00 a5 be 4000ff04 <== NEVER TAKEN 4000fc74: ae 10 00 08 mov %o0, %l7 obj->linkmap = (struct link_map*) detail; 4000fc78: f8 26 20 88 st %i4, [ %i0 + 0x88 ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000fc7c: 40 00 02 62 call 40010604 4000fc80: 90 10 20 01 mov 1, %o0 4000fc84: 80 a2 20 00 cmp %o0, 0 4000fc88: 02 80 00 85 be 4000fe9c <== ALWAYS TAKEN 4000fc8c: 39 10 00 c5 sethi %hi(0x40031400), %i4 if (rap->rpathlen > 0) 4000fc90: f6 07 bf f8 ld [ %fp + -8 ], %i3 <== NOT EXECUTED 4000fc94: a0 96 e0 00 orcc %i3, 0, %l0 <== NOT EXECUTED 4000fc98: 32 80 00 7e bne,a 4000fe90 <== NOT EXECUTED 4000fc9c: 11 10 00 c5 sethi %hi(0x40031400), %o0 <== NOT EXECUTED for (i = 0; i < obj->obj_num; ++i) 4000fca0: e2 06 20 84 ld [ %i0 + 0x84 ], %l1 tmp1->name = rap->strtable + pos; 4000fca4: e6 07 bf fc ld [ %fp + -4 ], %l3 4000fca8: fa 06 20 88 ld [ %i0 + 0x88 ], %i5 tmp1->rpathlen = rap->rpathlen; 4000fcac: a4 10 20 00 clr %l2 4000fcb0: b4 10 20 00 clr %i2 tmp1->name = rap->strtable + pos; 4000fcb4: 82 04 c0 10 add %l3, %l0, %g1 tmp1->sec_num = obj->sec_num[i]; 4000fcb8: 85 2e a0 02 sll %i2, 2, %g2 tmp1 = obj->linkmap + i; 4000fcbc: b8 07 40 12 add %i5, %l2, %i4 for (i = 0; i < obj->obj_num; ++i) 4000fcc0: 80 a6 80 11 cmp %i2, %l1 4000fcc4: 02 80 00 1c be 4000fd34 4000fcc8: 90 10 00 01 mov %g1, %o0 tmp1->sec_num = obj->sec_num[i]; 4000fccc: c6 06 20 80 ld [ %i0 + 0x80 ], %g3 4000fcd0: c4 00 c0 02 ld [ %g3 + %g2 ], %g2 tmp1->name = rap->strtable + pos; 4000fcd4: c2 27 40 12 st %g1, [ %i5 + %l2 ] tmp1->sec_num = obj->sec_num[i]; 4000fcd8: c4 27 20 04 st %g2, [ %i4 + 4 ] tmp1->rpathlen = rap->rpathlen; 4000fcdc: f6 27 20 24 st %i3, [ %i4 + 0x24 ] pos += strlen (tmp1->name) + 1; 4000fce0: 40 00 33 df call 4001cc5c 4000fce4: e6 27 20 28 st %l3, [ %i4 + 0x28 ] tmp1->l_prev = tmp1 - 1; 4000fce8: 82 07 3f cc add %i4, -52, %g1 pos += strlen (tmp1->name) + 1; 4000fcec: 90 02 20 01 inc %o0 if (!i) 4000fcf0: 80 a6 a0 00 cmp %i2, 0 4000fcf4: 12 80 00 0c bne 4000fd24 4000fcf8: a0 04 00 08 add %l0, %o0, %l0 tmp1->l_next = NULL; 4000fcfc: c0 27 20 2c clr [ %i4 + 0x2c ] tmp1->l_prev = NULL; 4000fd00: c0 27 20 30 clr [ %i4 + 0x30 ] for (i = 0; i < obj->obj_num; ++i) 4000fd04: b4 06 a0 01 inc %i2 4000fd08: 10 bf ff eb b 4000fcb4 4000fd0c: a4 04 a0 34 add %l2, 0x34, %l2 rtems_rtl_set_error (EINVAL, "global symbol not found: %s", symname); 4000fd10: 13 10 00 c1 sethi %hi(0x40030400), %o1 <== NOT EXECUTED 4000fd14: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000fd18: 7f ff f0 35 call 4000bdec <== NOT EXECUTED 4000fd1c: 92 12 63 80 or %o1, 0x380, %o1 <== NOT EXECUTED 4000fd20: 30 bf ff aa b,a 4000fbc8 <== NOT EXECUTED (tmp1 - 1)->l_next = tmp1; 4000fd24: f8 27 3f f8 st %i4, [ %i4 + -8 ] tmp1->l_prev = tmp1 - 1; 4000fd28: c2 27 20 30 st %g1, [ %i4 + 0x30 ] tmp1->l_next = NULL; 4000fd2c: 10 bf ff f6 b 4000fd04 4000fd30: c0 27 20 2c clr [ %i4 + 0x2c ] tmp2 = (section_detail*) (obj->linkmap + obj->obj_num); 4000fd34: 82 5c 60 34 smul %l1, 0x34, %g1 printf ("File %d: %s\n", i, (obj->linkmap + i)->name); 4000fd38: 27 10 00 c5 sethi %hi(0x40031400), %l3 printf ("Section: %d sections\n", (unsigned int) obj->sec_num[i]); 4000fd3c: 25 10 00 c5 sethi %hi(0x40031400), %l2 offset = offset & 0xfffffff; 4000fd40: 21 03 ff ff sethi %hi(0xffffc00), %l0 printf ("name:%16s offset:0x%08x rap_id:%d size:0x%x\n", 4000fd44: 35 10 00 c5 sethi %hi(0x40031400), %i2 tmp2 = (section_detail*) (obj->linkmap + obj->obj_num); 4000fd48: ba 07 40 01 add %i5, %g1, %i5 4000fd4c: b6 10 20 00 clr %i3 for (i = 0; i < obj->obj_num; ++i) 4000fd50: b8 10 20 00 clr %i4 printf ("File %d: %s\n", i, (obj->linkmap + i)->name); 4000fd54: a6 14 e2 98 or %l3, 0x298, %l3 printf ("Section: %d sections\n", (unsigned int) obj->sec_num[i]); 4000fd58: a4 14 a2 a8 or %l2, 0x2a8, %l2 offset = offset & 0xfffffff; 4000fd5c: a0 14 23 ff or %l0, 0x3ff, %l0 printf ("name:%16s offset:0x%08x rap_id:%d size:0x%x\n", 4000fd60: b4 16 a2 c0 or %i2, 0x2c0, %i2 for (i = 0; i < obj->obj_num; ++i) 4000fd64: 80 a7 00 11 cmp %i4, %l1 4000fd68: 1a bf fd a4 bcc 4000f3f8 4000fd6c: 90 10 20 01 mov 1, %o0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000fd70: 40 00 02 25 call 40010604 4000fd74: a3 2f 20 02 sll %i4, 2, %l1 4000fd78: 80 a2 20 00 cmp %o0, 0 4000fd7c: 02 80 00 0b be 4000fda8 <== ALWAYS TAKEN 4000fd80: c2 06 20 88 ld [ %i0 + 0x88 ], %g1 printf ("File %d: %s\n", i, (obj->linkmap + i)->name); 4000fd84: d4 00 40 1b ld [ %g1 + %i3 ], %o2 <== NOT EXECUTED 4000fd88: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED 4000fd8c: 40 00 22 ef call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fd90: 90 10 00 13 mov %l3, %o0 <== NOT EXECUTED printf ("Section: %d sections\n", (unsigned int) obj->sec_num[i]); 4000fd94: c2 06 20 80 ld [ %i0 + 0x80 ], %g1 <== NOT EXECUTED 4000fd98: d2 00 40 11 ld [ %g1 + %l1 ], %o1 <== NOT EXECUTED 4000fd9c: 40 00 22 eb call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fda0: 90 10 00 12 mov %l2, %o0 <== NOT EXECUTED obj->linkmap[i].sec_detail = tmp2; 4000fda4: c2 06 20 88 ld [ %i0 + 0x88 ], %g1 <== NOT EXECUTED 4000fda8: 82 00 40 1b add %g1, %i3, %g1 4000fdac: fa 20 60 08 st %i5, [ %g1 + 8 ] for (j = 0; j < obj->sec_num[i]; ++j) 4000fdb0: a8 10 20 00 clr %l4 4000fdb4: c2 06 20 80 ld [ %i0 + 0x80 ], %g1 4000fdb8: c2 00 40 11 ld [ %g1 + %l1 ], %g1 4000fdbc: 80 a0 40 14 cmp %g1, %l4 4000fdc0: 08 80 00 30 bleu 4000fe80 4000fdc4: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &name) || 4000fdc8: 7f ff fc 1b call 4000ee34 4000fdcc: 92 07 bf 70 add %fp, -144, %o1 4000fdd0: 80 a2 20 00 cmp %o0, 0 4000fdd4: 02 80 00 25 be 4000fe68 <== NEVER TAKEN 4000fdd8: d0 07 bf 88 ld [ %fp + -120 ], %o0 !rtems_rtl_rap_read_uint32 (rap->decomp, &offset) || 4000fddc: 7f ff fc 16 call 4000ee34 4000fde0: 92 07 bf 74 add %fp, -140, %o1 if (!rtems_rtl_rap_read_uint32 (rap->decomp, &name) || 4000fde4: 80 a2 20 00 cmp %o0, 0 4000fde8: 02 80 00 20 be 4000fe68 <== NEVER TAKEN 4000fdec: d0 07 bf 88 ld [ %fp + -120 ], %o0 !rtems_rtl_rap_read_uint32 (rap->decomp, &size)) 4000fdf0: 7f ff fc 11 call 4000ee34 4000fdf4: 92 07 bf 78 add %fp, -136, %o1 !rtems_rtl_rap_read_uint32 (rap->decomp, &offset) || 4000fdf8: 80 a2 20 00 cmp %o0, 0 4000fdfc: 02 80 00 1b be 4000fe68 <== NEVER TAKEN 4000fe00: c2 07 bf 74 ld [ %fp + -140 ], %g1 offset = offset & 0xfffffff; 4000fe04: 86 08 40 10 and %g1, %l0, %g3 4000fe08: c6 27 bf 74 st %g3, [ %fp + -140 ] rap_id = offset >> 28; 4000fe0c: 83 30 60 1c srl %g1, 0x1c, %g1 tmp2->name = rap->strtable + name; 4000fe10: c4 07 bf fc ld [ %fp + -4 ], %g2 4000fe14: c8 07 bf 70 ld [ %fp + -144 ], %g4 tmp2->offset = offset; 4000fe18: c6 27 60 04 st %g3, [ %i5 + 4 ] tmp2->name = rap->strtable + name; 4000fe1c: 84 00 80 04 add %g2, %g4, %g2 tmp2->rap_id = rap_id; 4000fe20: c2 27 60 0c st %g1, [ %i5 + 0xc ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000fe24: 90 10 20 01 mov 1, %o0 tmp2->size = size; 4000fe28: c2 07 bf 78 ld [ %fp + -136 ], %g1 4000fe2c: c2 27 60 08 st %g1, [ %i5 + 8 ] for (j = 0; j < obj->sec_num[i]; ++j) 4000fe30: a8 05 20 01 inc %l4 if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000fe34: 40 00 01 f4 call 40010604 4000fe38: c4 27 40 00 st %g2, [ %i5 ] 4000fe3c: 80 a2 20 00 cmp %o0, 0 4000fe40: 22 bf ff dd be,a 4000fdb4 <== ALWAYS TAKEN 4000fe44: ba 07 60 10 add %i5, 0x10, %i5 printf ("name:%16s offset:0x%08x rap_id:%d size:0x%x\n", 4000fe48: d8 07 60 08 ld [ %i5 + 8 ], %o4 <== NOT EXECUTED 4000fe4c: d6 07 60 0c ld [ %i5 + 0xc ], %o3 <== NOT EXECUTED 4000fe50: d4 07 60 04 ld [ %i5 + 4 ], %o2 <== NOT EXECUTED 4000fe54: d2 07 40 00 ld [ %i5 ], %o1 <== NOT EXECUTED 4000fe58: 40 00 22 bc call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fe5c: 90 10 00 1a mov %i2, %o0 <== NOT EXECUTED tmp2 += 1; 4000fe60: 10 bf ff d5 b 4000fdb4 <== NOT EXECUTED 4000fe64: ba 07 60 10 add %i5, 0x10, %i5 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->linkmap); 4000fe68: d2 06 20 88 ld [ %i0 + 0x88 ], %o1 <== NOT EXECUTED 4000fe6c: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 4000fe70: 7f ff e9 96 call 4000a4c8 <== NOT EXECUTED 4000fe74: ae 10 20 00 clr %l7 <== NOT EXECUTED obj->linkmap = NULL; 4000fe78: 10 bf fc 9c b 4000f0e8 <== NOT EXECUTED 4000fe7c: c0 26 20 88 clr [ %i0 + 0x88 ] <== NOT EXECUTED 4000fe80: e2 06 20 84 ld [ %i0 + 0x84 ], %l1 for (i = 0; i < obj->obj_num; ++i) 4000fe84: b8 07 20 01 inc %i4 4000fe88: 10 bf ff b7 b 4000fd64 4000fe8c: b6 06 e0 34 add %i3, 0x34, %i3 printf ("File rpath:\n"); 4000fe90: 40 00 22 bd call 40018984 <__wrap_puts> <== NOT EXECUTED 4000fe94: 90 12 22 78 or %o0, 0x278, %o0 <== NOT EXECUTED printf (" %s\n", rap->strtable + pos); 4000fe98: 39 10 00 c5 sethi %hi(0x40031400), %i4 <== NOT EXECUTED for (i = 0; i < obj->obj_num; ++i) 4000fe9c: ba 10 20 00 clr %i5 printf (" %s\n", rap->strtable + pos); 4000fea0: b8 17 22 88 or %i4, 0x288, %i4 while (pos < rap->rpathlen) 4000fea4: f6 07 bf f8 ld [ %fp + -8 ], %i3 4000fea8: 80 a7 40 1b cmp %i5, %i3 4000feac: 1a 80 00 11 bcc 4000fef0 <== ALWAYS TAKEN 4000feb0: a0 10 00 1b mov %i3, %l0 if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) 4000feb4: 40 00 01 d4 call 40010604 <== NOT EXECUTED 4000feb8: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 4000febc: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000fec0: 22 80 00 07 be,a 4000fedc <== NOT EXECUTED 4000fec4: d0 07 bf fc ld [ %fp + -4 ], %o0 <== NOT EXECUTED printf (" %s\n", rap->strtable + pos); 4000fec8: d2 07 bf fc ld [ %fp + -4 ], %o1 <== NOT EXECUTED 4000fecc: 92 02 40 1d add %o1, %i5, %o1 <== NOT EXECUTED 4000fed0: 40 00 22 9e call 40018948 <__wrap_printf> <== NOT EXECUTED 4000fed4: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED pos = pos + strlen (rap->strtable + pos) + 1; 4000fed8: d0 07 bf fc ld [ %fp + -4 ], %o0 <== NOT EXECUTED 4000fedc: 40 00 33 60 call 4001cc5c <== NOT EXECUTED 4000fee0: 90 02 00 1d add %o0, %i5, %o0 <== NOT EXECUTED 4000fee4: 90 02 20 01 inc %o0 <== NOT EXECUTED 4000fee8: 10 bf ff ef b 4000fea4 <== NOT EXECUTED 4000feec: ba 07 40 08 add %i5, %o0, %i5 <== NOT EXECUTED if (rap->rpathlen > 0) 4000fef0: 80 a6 e0 00 cmp %i3, 0 4000fef4: 22 bf ff 6b be,a 4000fca0 <== ALWAYS TAKEN 4000fef8: a0 10 00 1d mov %i5, %l0 for (i = 0; i < obj->obj_num; ++i) 4000fefc: 10 bf ff 6a b 4000fca4 <== NOT EXECUTED 4000ff00: e2 06 20 84 ld [ %i0 + 0x84 ], %l1 <== NOT EXECUTED rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, detail); 4000ff04: 7f ff e9 71 call 4000a4c8 <== NOT EXECUTED 4000ff08: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED 4000ff0c: b0 0d e0 ff and %l7, 0xff, %i0 <== NOT EXECUTED 4000ff10: 81 c7 e0 08 ret <== NOT EXECUTED 4000ff14: 81 e8 00 00 restore <== NOT EXECUTED rap->strtable_size = 0; 4000ff18: 10 bf fe 7b b 4000f904 <== NOT EXECUTED 4000ff1c: c0 27 bf f4 clr [ %fp + -12 ] <== NOT EXECUTED if (symname_size > (SYMNAME_BUFFER_SIZE - 1)) 4000ff20: 18 80 00 0d bgu 4000ff54 <== NEVER TAKEN 4000ff24: d0 07 bf 88 ld [ %fp + -120 ], %o0 if (!rtems_rtl_obj_comp_read (rap->decomp, symname_buffer, symname_size)) 4000ff28: 94 10 00 12 mov %l2, %o2 4000ff2c: 7f ff f5 14 call 4000d37c 4000ff30: 92 10 00 1d mov %i5, %o1 4000ff34: 80 a2 20 00 cmp %o0, 0 4000ff38: 02 bf ff 24 be 4000fbc8 <== NEVER TAKEN 4000ff3c: 01 00 00 00 nop symname_buffer[symname_size] = '\0'; 4000ff40: c0 2f 40 12 clrb [ %i5 + %l2 ] 4000ff44: 10 bf ff 33 b 4000fc10 4000ff48: a4 10 00 1d mov %i5, %l2 const char* symname = NULL; 4000ff4c: 10 bf fe d3 b 4000fa98 <== NOT EXECUTED 4000ff50: a4 10 20 00 clr %l2 <== NOT EXECUTED free (symname_buffer); 4000ff54: 7f ff dd 60 call 400074d4 <== NOT EXECUTED 4000ff58: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "reloc symbol too big"); 4000ff5c: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 4000ff60: 13 10 00 c6 sethi %hi(0x40031800), %o1 <== NOT EXECUTED 4000ff64: 7f ff ef a2 call 4000bdec <== NOT EXECUTED 4000ff68: 92 12 60 90 or %o1, 0x90, %o1 ! 40031890 <== NOT EXECUTED return false; 4000ff6c: 10 bf fc 5f b 4000f0e8 <== NOT EXECUTED 4000ff70: ae 10 20 00 clr %l7 <== NOT EXECUTED =============================================================================== 4000ff7c : rtems_rtl_loader_format* rtems_rtl_rap_file_sig (void) { return &rap_sig; 4000ff7c: 11 10 00 d3 sethi %hi(0x40034c00), %o0 <== NOT EXECUTED } 4000ff80: 81 c3 e0 08 retl <== NOT EXECUTED 4000ff84: 90 12 23 84 or %o0, 0x384, %o0 ! 40034f84 <== NOT EXECUTED =============================================================================== 4000ff88 : #include #include "rtl-string.h" char* rtems_rtl_strdup (const char *s1) { 4000ff88: 9d e3 bf a0 save %sp, -96, %sp size_t len = strlen (s1); 4000ff8c: 40 00 33 34 call 4001cc5c 4000ff90: 90 10 00 18 mov %i0, %o0 char* s2 = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, len + 1, false); 4000ff94: 94 10 20 00 clr %o2 4000ff98: 92 02 20 01 add %o0, 1, %o1 size_t len = strlen (s1); 4000ff9c: b8 10 00 08 mov %o0, %i4 char* s2 = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, len + 1, false); 4000ffa0: 7f ff e9 21 call 4000a424 4000ffa4: 90 10 20 00 clr %o0 if (s2) 4000ffa8: ba 92 20 00 orcc %o0, 0, %i5 4000ffac: 02 80 00 05 be 4000ffc0 <== NEVER TAKEN 4000ffb0: 94 10 00 1c mov %i4, %o2 { memcpy (s2, s1, len); 4000ffb4: 40 00 2b 6c call 4001ad64 4000ffb8: 92 10 00 18 mov %i0, %o1 s2[len] = '\0'; 4000ffbc: c0 2f 40 1c clrb [ %i5 + %i4 ] } return s2; } 4000ffc0: 81 c7 e0 08 ret 4000ffc4: 91 e8 00 1d restore %g0, %i5, %o0 =============================================================================== 400101c8 : { 400101c8: 9d e3 bf 98 save %sp, -104, %sp while ((s < size) && (esyms[s] != 0)) 400101cc: 80 a6 a0 00 cmp %i2, 0 400101d0: 02 80 00 97 be 4001042c <== NEVER TAKEN 400101d4: b8 10 20 00 clr %i4 400101d8: c2 0e 40 00 ldub [ %i1 ], %g1 400101dc: 80 a0 60 00 cmp %g1, 0 400101e0: 02 80 00 98 be 40010440 <== NEVER TAKEN 400101e4: 90 10 00 19 mov %i1, %o0 s = 0; 400101e8: 10 80 00 0b b 40010214 400101ec: ba 10 20 00 clr %i5 if ((esyms[s + l] != '\0') || ((s + l) > size)) 400101f0: 0a 80 00 10 bcs 40010230 <== NEVER TAKEN 400101f4: ba 00 60 05 add %g1, 5, %i5 while ((s < size) && (esyms[s] != 0)) 400101f8: 80 a6 80 1d cmp %i2, %i5 400101fc: 08 80 00 15 bleu 40010250 <== NEVER TAKEN 40010200: b8 07 20 01 inc %i4 40010204: c4 0e 40 1d ldub [ %i1 + %i5 ], %g2 40010208: 80 a0 a0 00 cmp %g2, 0 4001020c: 02 80 00 11 be 40010250 40010210: 90 06 40 1d add %i1, %i5, %o0 int l = strlen ((char*) &esyms[s]); 40010214: 40 00 32 92 call 4001cc5c 40010218: 01 00 00 00 nop if ((esyms[s + l] != '\0') || ((s + l) > size)) 4001021c: 82 02 00 1d add %o0, %i5, %g1 40010220: c4 0e 40 01 ldub [ %i1 + %g1 ], %g2 40010224: 80 a0 a0 00 cmp %g2, 0 40010228: 02 bf ff f2 be 400101f0 <== ALWAYS TAKEN 4001022c: 80 a6 80 01 cmp %i2, %g1 rtems_rtl_set_error (EINVAL, "invalid exported symbol table"); 40010230: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED 40010234: 13 10 00 c6 sethi %hi(0x40031800), %o1 <== NOT EXECUTED return false; 40010238: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "invalid exported symbol table"); 4001023c: 7f ff ee ec call 4000bdec <== NOT EXECUTED 40010240: 92 12 61 d8 or %o1, 0x1d8, %o1 <== NOT EXECUTED } 40010244: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 40010248: 81 c7 e0 08 ret <== NOT EXECUTED 4001024c: 81 e8 00 00 restore <== NOT EXECUTED 40010250: 88 00 60 06 add %g1, 6, %g4 40010254: 86 00 60 07 add %g1, 7, %g3 40010258: 84 00 60 08 add %g1, 8, %g2 4001025c: 82 00 60 09 add %g1, 9, %g1 marker = esyms[s + 1]; 40010260: fa 0e 40 04 ldub [ %i1 + %g4 ], %i5 marker |= esyms[s + 3]; 40010264: c4 0e 40 02 ldub [ %i1 + %g2 ], %g2 marker |= esyms[s + 4]; 40010268: c8 0e 40 01 ldub [ %i1 + %g1 ], %g4 marker |= esyms[s + 2]; 4001026c: c6 0e 40 03 ldub [ %i1 + %g3 ], %g3 marker <<= 8; 40010270: 83 2f 60 08 sll %i5, 8, %g1 marker |= esyms[s + 2]; 40010274: 82 10 c0 01 or %g3, %g1, %g1 marker <<= 8; 40010278: 83 28 60 08 sll %g1, 8, %g1 marker |= esyms[s + 3]; 4001027c: 82 10 80 01 or %g2, %g1, %g1 if (marker != 0xdeadbeefUL) 40010280: 05 37 ab 6f sethi %hi(0xdeadbc00), %g2 marker <<= 8; 40010284: 83 28 60 08 sll %g1, 8, %g1 if (marker != 0xdeadbeefUL) 40010288: 84 10 a2 ef or %g2, 0x2ef, %g2 marker |= esyms[s + 4]; 4001028c: 82 11 00 01 or %g4, %g1, %g1 if (marker != 0xdeadbeefUL) 40010290: 80 a0 40 02 cmp %g1, %g2 40010294: 02 80 00 09 be 400102b8 <== ALWAYS TAKEN 40010298: 90 10 20 0c mov 0xc, %o0 rtems_rtl_set_error (ENOMEM, "invalid export symbol table"); 4001029c: 13 10 00 c6 sethi %hi(0x40031800), %o1 <== NOT EXECUTED return false; 400102a0: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "invalid export symbol table"); 400102a4: 92 12 61 f8 or %o1, 0x1f8, %o1 <== NOT EXECUTED 400102a8: 7f ff ee d1 call 4000bdec <== NOT EXECUTED 400102ac: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED } 400102b0: 81 c7 e0 08 ret <== NOT EXECUTED 400102b4: 81 e8 00 00 restore <== NOT EXECUTED if (rtems_rtl_trace (RTEMS_RTL_TRACE_GLOBAL_SYM)) 400102b8: 40 00 00 d3 call 40010604 400102bc: 90 10 20 80 mov 0x80, %o0 400102c0: 80 a2 20 00 cmp %o0, 0 400102c4: 12 80 00 4c bne 400103f4 400102c8: 92 10 00 1c mov %i4, %o1 obj->global_size = count * sizeof (rtems_rtl_obj_sym); 400102cc: 93 2f 20 02 sll %i4, 2, %o1 400102d0: 92 02 40 1c add %o1, %i4, %o1 400102d4: 93 2a 60 02 sll %o1, 2, %o1 400102d8: d2 26 20 4c st %o1, [ %i0 + 0x4c ] obj->global_table = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL, 400102dc: 94 10 20 01 mov 1, %o2 400102e0: 7f ff e8 51 call 4000a424 400102e4: 90 10 20 01 mov 1, %o0 if (!obj->global_table) 400102e8: 80 a2 20 00 cmp %o0, 0 400102ec: 02 80 00 47 be 40010408 <== NEVER TAKEN 400102f0: d0 26 20 44 st %o0, [ %i0 + 0x44 ] symbols = rtems_rtl_global_symbols (); 400102f4: 7f ff ef fe call 4000c2ec 400102f8: 01 00 00 00 nop while ((s < size) && (esyms[s] != 0)) 400102fc: 80 a6 a0 00 cmp %i2, 0 symbols = rtems_rtl_global_symbols (); 40010300: a4 10 00 08 mov %o0, %l2 while ((s < size) && (esyms[s] != 0)) 40010304: 02 80 00 2a be 400103ac <== NEVER TAKEN 40010308: f6 06 20 44 ld [ %i0 + 0x44 ], %i3 4001030c: c2 0e 40 00 ldub [ %i1 ], %g1 40010310: 80 a0 60 00 cmp %g1, 0 40010314: 22 80 00 27 be,a 400103b0 <== NEVER TAKEN 40010318: f8 26 20 48 st %i4, [ %i0 + 0x48 ] <== NOT EXECUTED printf ("rtl: esyms: %s -> %8p\n", sym->name, sym->value); 4001031c: 23 10 00 c6 sethi %hi(0x40031800), %l1 while ((s < size) && (esyms[s] != 0)) 40010320: 90 10 00 19 mov %i1, %o0 s = 0; 40010324: ba 10 20 00 clr %i5 40010328: a0 07 bf fc add %fp, -4, %l0 printf ("rtl: esyms: %s -> %8p\n", sym->name, sym->value); 4001032c: a2 14 62 58 or %l1, 0x258, %l1 s += strlen (sym->name) + 1; 40010330: 40 00 32 4b call 4001cc5c 40010334: d0 26 e0 08 st %o0, [ %i3 + 8 ] for (b = 0; b < sizeof (void*); ++b, ++s) 40010338: 82 10 20 00 clr %g1 s += strlen (sym->name) + 1; 4001033c: ba 02 00 1d add %o0, %i5, %i5 40010340: 84 07 60 01 add %i5, 1, %g2 copy_voidp.data[b] = esyms[s]; 40010344: c6 0e 40 02 ldub [ %i1 + %g2 ], %g3 40010348: c6 2c 00 01 stb %g3, [ %l0 + %g1 ] for (b = 0; b < sizeof (void*); ++b, ++s) 4001034c: 82 00 60 01 inc %g1 40010350: 80 a0 60 04 cmp %g1, 4 40010354: 12 bf ff fc bne 40010344 40010358: 84 00 a0 01 inc %g2 sym->value = copy_voidp.value; 4001035c: c2 07 bf fc ld [ %fp + -4 ], %g1 40010360: c2 26 e0 0c st %g1, [ %i3 + 0xc ] if (rtems_rtl_trace (RTEMS_RTL_TRACE_GLOBAL_SYM)) 40010364: 90 10 20 80 mov 0x80, %o0 40010368: 40 00 00 a7 call 40010604 4001036c: ba 07 60 05 add %i5, 5, %i5 40010370: 80 a2 20 00 cmp %o0, 0 40010374: 32 80 00 13 bne,a 400103c0 40010378: d4 06 e0 0c ld [ %i3 + 0xc ], %o2 if (rtems_rtl_symbol_global_find (sym->name) == NULL) 4001037c: 7f ff ff 5e call 400100f4 40010380: d0 06 e0 08 ld [ %i3 + 8 ], %o0 40010384: 80 a2 20 00 cmp %o0, 0 40010388: 02 80 00 17 be 400103e4 4001038c: 92 10 00 1b mov %i3, %o1 while ((s < size) && (esyms[s] != 0)) 40010390: 80 a6 80 1d cmp %i2, %i5 40010394: 08 80 00 06 bleu 400103ac <== NEVER TAKEN 40010398: b6 06 e0 14 add %i3, 0x14, %i3 4001039c: c2 0e 40 1d ldub [ %i1 + %i5 ], %g1 400103a0: 80 a0 60 00 cmp %g1, 0 400103a4: 12 bf ff e3 bne 40010330 400103a8: 90 06 40 1d add %i1, %i5, %o0 obj->global_syms = count; 400103ac: f8 26 20 48 st %i4, [ %i0 + 0x48 ] return true; 400103b0: b0 10 20 01 mov 1, %i0 } 400103b4: b0 0e 20 01 and %i0, 1, %i0 400103b8: 81 c7 e0 08 ret 400103bc: 81 e8 00 00 restore printf ("rtl: esyms: %s -> %8p\n", sym->name, sym->value); 400103c0: d2 06 e0 08 ld [ %i3 + 8 ], %o1 400103c4: 40 00 21 61 call 40018948 <__wrap_printf> 400103c8: 90 10 00 11 mov %l1, %o0 if (rtems_rtl_symbol_global_find (sym->name) == NULL) 400103cc: 7f ff ff 4a call 400100f4 400103d0: d0 06 e0 08 ld [ %i3 + 8 ], %o0 400103d4: 80 a2 20 00 cmp %o0, 0 400103d8: 32 bf ff ef bne,a 40010394 400103dc: 80 a6 80 1d cmp %i2, %i5 rtems_rtl_symbol_global_insert (symbols, sym); 400103e0: 92 10 00 1b mov %i3, %o1 400103e4: 7f ff fe f9 call 4000ffc8 400103e8: 90 10 00 12 mov %l2, %o0 while ((s < size) && (esyms[s] != 0)) 400103ec: 10 bf ff ea b 40010394 400103f0: 80 a6 80 1d cmp %i2, %i5 printf ("rtl: global symbol add: %zi\n", count); 400103f4: 11 10 00 c6 sethi %hi(0x40031800), %o0 400103f8: 40 00 21 54 call 40018948 <__wrap_printf> 400103fc: 90 12 22 18 or %o0, 0x218, %o0 ! 40031a18 obj->global_size = count * sizeof (rtems_rtl_obj_sym); 40010400: 10 bf ff b4 b 400102d0 40010404: 93 2f 20 02 sll %i4, 2, %o1 obj->global_size = 0; 40010408: c0 26 20 4c clr [ %i0 + 0x4c ] <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for global symbols"); 4001040c: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 40010410: 13 10 00 c6 sethi %hi(0x40031800), %o1 <== NOT EXECUTED return false; 40010414: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for global symbols"); 40010418: 7f ff ee 75 call 4000bdec <== NOT EXECUTED 4001041c: 92 12 62 38 or %o1, 0x238, %o1 <== NOT EXECUTED 40010420: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 40010424: 81 c7 e0 08 ret <== NOT EXECUTED 40010428: 81 e8 00 00 restore <== NOT EXECUTED while ((s < size) && (esyms[s] != 0)) 4001042c: 82 10 20 04 mov 4, %g1 <== NOT EXECUTED 40010430: 84 10 20 03 mov 3, %g2 <== NOT EXECUTED 40010434: 86 10 20 02 mov 2, %g3 <== NOT EXECUTED 40010438: 10 bf ff 8a b 40010260 <== NOT EXECUTED 4001043c: 88 10 20 01 mov 1, %g4 <== NOT EXECUTED 40010440: 82 10 20 04 mov 4, %g1 <== NOT EXECUTED 40010444: 84 10 20 03 mov 3, %g2 <== NOT EXECUTED 40010448: 86 10 20 02 mov 2, %g3 <== NOT EXECUTED 4001044c: 88 10 20 01 mov 1, %g4 <== NOT EXECUTED count = 0; 40010450: 10 bf ff 84 b 40010260 <== NOT EXECUTED 40010454: b8 10 20 00 clr %i4 <== NOT EXECUTED =============================================================================== 400100f4 : return true; } rtems_rtl_obj_sym* rtems_rtl_symbol_global_find (const char* name) { 400100f4: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_symbols* symbols; uint_fast32_t hash; rtems_chain_control* bucket; rtems_chain_node* node; symbols = rtems_rtl_global_symbols (); 400100f8: 7f ff f0 7d call 4000c2ec 400100fc: 01 00 00 00 nop for (c = *s; c != '\0'; c = *++s) 40010100: c4 0e 00 00 ldub [ %i0 ], %g2 40010104: 80 a0 a0 00 cmp %g2, 0 40010108: 02 80 00 2d be 400101bc <== NEVER TAKEN 4001010c: 86 10 00 18 mov %i0, %g3 uint_fast32_t h = 5381; 40010110: 03 00 00 05 sethi %hi(0x1400), %g1 40010114: 82 10 61 05 or %g1, 0x105, %g1 ! 1505 h = h * 33 + c; 40010118: 89 28 60 05 sll %g1, 5, %g4 for (c = *s; c != '\0'; c = *++s) 4001011c: 86 00 e0 01 inc %g3 h = h * 33 + c; 40010120: 82 01 00 01 add %g4, %g1, %g1 40010124: 82 00 80 01 add %g2, %g1, %g1 for (c = *s; c != '\0'; c = *++s) 40010128: c4 08 c0 00 ldub [ %g3 ], %g2 4001012c: 80 a0 a0 00 cmp %g2, 0 40010130: 12 bf ff fb bne 4001011c 40010134: 89 28 60 05 sll %g1, 5, %g4 hash = rtems_rtl_symbol_hash (name); bucket = &symbols->buckets[hash % symbols->nbuckets]; 40010138: c6 02 20 04 ld [ %o0 + 4 ], %g3 4001013c: f8 02 00 00 ld [ %o0 ], %i4 40010140: 81 80 20 00 wr %g0, %y 40010144: 01 00 00 00 nop 40010148: 01 00 00 00 nop 4001014c: 01 00 00 00 nop 40010150: 84 70 40 03 udiv %g1, %g3, %g2 40010154: 84 58 80 03 smul %g2, %g3, %g2 40010158: 82 20 40 02 sub %g1, %g2, %g1 4001015c: 85 28 60 01 sll %g1, 1, %g2 40010160: 82 00 80 01 add %g2, %g1, %g1 40010164: 83 28 60 02 sll %g1, 2, %g1 return _Chain_Immutable_head( the_chain )->next; 40010168: fa 07 00 01 ld [ %i4 + %g1 ], %i5 4001016c: b8 07 00 01 add %i4, %g1, %i4 return &the_chain->Tail.Node; 40010170: b8 07 20 04 add %i4, 4, %i4 node = rtems_chain_first (bucket); while (!rtems_chain_is_tail (bucket, node)) 40010174: 80 a7 40 1c cmp %i5, %i4 40010178: 32 80 00 08 bne,a 40010198 4001017c: d2 07 60 08 ld [ %i5 + 8 ], %o1 if (strcmp (name, sym->name) == 0) return sym; node = rtems_chain_next (node); } return NULL; 40010180: 10 80 00 0d b 400101b4 40010184: ba 10 20 00 clr %i5 while (!rtems_chain_is_tail (bucket, node)) 40010188: 80 a7 40 1c cmp %i5, %i4 4001018c: 22 80 00 0a be,a 400101b4 40010190: ba 10 20 00 clr %i5 if (strcmp (name, sym->name) == 0) 40010194: d2 07 60 08 ld [ %i5 + 8 ], %o1 40010198: 40 00 30 84 call 4001c3a8 4001019c: 90 10 00 18 mov %i0, %o0 400101a0: 80 a2 20 00 cmp %o0, 0 400101a4: 32 bf ff f9 bne,a 40010188 400101a8: fa 07 40 00 ld [ %i5 ], %i5 } 400101ac: 81 c7 e0 08 ret 400101b0: 91 e8 00 1d restore %g0, %i5, %o0 400101b4: 81 c7 e0 08 ret 400101b8: 91 e8 00 1d restore %g0, %i5, %o0 uint_fast32_t h = 5381; 400101bc: 03 00 00 05 sethi %hi(0x1400), %g1 <== NOT EXECUTED 400101c0: 10 bf ff de b 40010138 <== NOT EXECUTED 400101c4: 82 10 61 05 or %g1, 0x105, %g1 ! 1505 <== NOT EXECUTED =============================================================================== 400104ec : void rtems_rtl_symbol_obj_add (rtems_rtl_obj* obj) { 400104ec: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_symbols* symbols; rtems_rtl_obj_sym* sym; size_t s; symbols = rtems_rtl_global_symbols (); 400104f0: 7f ff ef 7f call 4000c2ec 400104f4: 01 00 00 00 nop for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) 400104f8: c2 06 20 48 ld [ %i0 + 0x48 ], %g1 symbols = rtems_rtl_global_symbols (); 400104fc: b6 10 00 08 mov %o0, %i3 for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) 40010500: 80 a0 60 00 cmp %g1, 0 40010504: 02 80 00 0b be 40010530 <== NEVER TAKEN 40010508: fa 06 20 44 ld [ %i0 + 0x44 ], %i5 4001050c: b8 10 20 00 clr %i4 rtems_rtl_symbol_global_insert (symbols, sym); 40010510: 92 10 00 1d mov %i5, %o1 40010514: 7f ff fe ad call 4000ffc8 40010518: 90 10 00 1b mov %i3, %o0 for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) 4001051c: c2 06 20 48 ld [ %i0 + 0x48 ], %g1 40010520: b8 07 20 01 inc %i4 40010524: 80 a0 40 1c cmp %g1, %i4 40010528: 18 bf ff fa bgu 40010510 4001052c: ba 07 60 14 add %i5, 0x14, %i5 } 40010530: 81 c7 e0 08 ret 40010534: 81 e8 00 00 restore =============================================================================== 40010568 : void rtems_rtl_symbol_obj_erase (rtems_rtl_obj* obj) { 40010568: 9d e3 bf a0 save %sp, -96, %sp if (obj->local_table) 4001056c: d2 06 20 38 ld [ %i0 + 0x38 ], %o1 40010570: 80 a2 60 00 cmp %o1, 0 40010574: 22 80 00 08 be,a 40010594 <== ALWAYS TAKEN 40010578: fa 06 20 44 ld [ %i0 + 0x44 ], %i5 rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->local_table); 4001057c: 7f ff e7 d3 call 4000a4c8 <== NOT EXECUTED 40010580: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED obj->local_table = NULL; 40010584: c0 26 20 38 clr [ %i0 + 0x38 ] <== NOT EXECUTED obj->local_size = 0; 40010588: c0 26 20 40 clr [ %i0 + 0x40 ] <== NOT EXECUTED obj->local_syms = 0; 4001058c: c0 26 20 3c clr [ %i0 + 0x3c ] <== NOT EXECUTED rtems_rtl_symbol_obj_erase_local (obj); if (obj->global_table) 40010590: fa 06 20 44 ld [ %i0 + 0x44 ], %i5 <== NOT EXECUTED 40010594: 80 a7 60 00 cmp %i5, 0 40010598: 02 80 00 19 be 400105fc <== NEVER TAKEN 4001059c: 01 00 00 00 nop { rtems_rtl_obj_sym* sym; size_t s; for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) 400105a0: c4 06 20 48 ld [ %i0 + 0x48 ], %g2 400105a4: 80 a0 a0 00 cmp %g2, 0 400105a8: 02 80 00 10 be 400105e8 <== NEVER TAKEN 400105ac: 92 10 00 1d mov %i5, %o1 400105b0: b8 10 20 00 clr %i4 if (!rtems_chain_is_node_off_chain (&sym->node)) 400105b4: c2 07 40 00 ld [ %i5 ], %g1 400105b8: 80 a0 60 00 cmp %g1, 0 400105bc: 02 80 00 05 be 400105d0 <== NEVER TAKEN 400105c0: 90 10 00 1d mov %i5, %o0 rtems_chain_extract (&sym->node); 400105c4: 40 00 06 e4 call 40012154 400105c8: 01 00 00 00 nop 400105cc: c4 06 20 48 ld [ %i0 + 0x48 ], %g2 for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) 400105d0: b8 07 20 01 inc %i4 400105d4: 80 a0 80 1c cmp %g2, %i4 400105d8: 18 bf ff f7 bgu 400105b4 400105dc: ba 07 60 14 add %i5, 0x14, %i5 400105e0: fa 06 20 44 ld [ %i0 + 0x44 ], %i5 rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->global_table); 400105e4: 92 10 00 1d mov %i5, %o1 400105e8: 7f ff e7 b8 call 4000a4c8 400105ec: 90 10 20 01 mov 1, %o0 obj->global_table = NULL; 400105f0: c0 26 20 44 clr [ %i0 + 0x44 ] obj->global_size = 0; 400105f4: c0 26 20 4c clr [ %i0 + 0x4c ] obj->global_syms = 0; 400105f8: c0 26 20 48 clr [ %i0 + 0x48 ] } } 400105fc: 81 c7 e0 08 ret 40010600: 81 e8 00 00 restore =============================================================================== 40010458 : rtems_rtl_obj_sym* rtems_rtl_symbol_obj_find (rtems_rtl_obj* obj, const char* name) { 40010458: 9d e3 bf a0 save %sp, -96, %sp size_t s; /* * Check the object file's symbols first. If not found search the * global symbol table. */ if (obj->local_syms) 4001045c: f6 06 20 3c ld [ %i0 + 0x3c ], %i3 40010460: 80 a6 e0 00 cmp %i3, 0 40010464: 22 80 00 11 be,a 400104a8 40010468: f6 06 20 48 ld [ %i0 + 0x48 ], %i3 { for (s = 0, sym = obj->local_table; s < obj->local_syms; ++s, ++sym) 4001046c: fa 06 20 38 ld [ %i0 + 0x38 ], %i5 40010470: 10 80 00 05 b 40010484 40010474: b8 10 20 00 clr %i4 40010478: 80 a6 c0 1c cmp %i3, %i4 4001047c: 02 80 00 0a be 400104a4 <== ALWAYS TAKEN 40010480: ba 07 60 14 add %i5, 0x14, %i5 if (strcmp (name, sym->name) == 0) 40010484: d2 07 60 08 ld [ %i5 + 8 ], %o1 40010488: 40 00 2f c8 call 4001c3a8 4001048c: 90 10 00 19 mov %i1, %o0 40010490: 80 a2 20 00 cmp %o0, 0 40010494: 12 bf ff f9 bne 40010478 <== ALWAYS TAKEN 40010498: b8 07 20 01 inc %i4 for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) if (strcmp (name, sym->name) == 0) return sym; } return rtems_rtl_symbol_global_find (name); } 4001049c: 81 c7 e0 08 ret 400104a0: 91 e8 00 1d restore %g0, %i5, %o0 if (obj->global_syms) 400104a4: f6 06 20 48 ld [ %i0 + 0x48 ], %i3 400104a8: 80 a6 e0 00 cmp %i3, 0 400104ac: 02 80 00 0e be 400104e4 <== NEVER TAKEN 400104b0: b8 10 20 00 clr %i4 for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym) 400104b4: 10 80 00 05 b 400104c8 400104b8: fa 06 20 44 ld [ %i0 + 0x44 ], %i5 400104bc: 80 a6 c0 1c cmp %i3, %i4 400104c0: 02 80 00 09 be 400104e4 400104c4: ba 07 60 14 add %i5, 0x14, %i5 if (strcmp (name, sym->name) == 0) 400104c8: d2 07 60 08 ld [ %i5 + 8 ], %o1 400104cc: 40 00 2f b7 call 4001c3a8 400104d0: 90 10 00 19 mov %i1, %o0 400104d4: 80 a2 20 00 cmp %o0, 0 400104d8: 32 bf ff f9 bne,a 400104bc 400104dc: b8 07 20 01 inc %i4 400104e0: 30 bf ff ef b,a 4001049c return rtems_rtl_symbol_global_find (name); 400104e4: 7f ff ff 04 call 400100f4 400104e8: 91 e8 00 19 restore %g0, %i1, %o0 =============================================================================== 400100e0 : void rtems_rtl_symbol_table_close (rtems_rtl_symbols* symbols) { rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, symbols->buckets); 400100e0: d2 02 00 00 ld [ %o0 ], %o1 <== NOT EXECUTED 400100e4: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 400100e8: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 400100ec: 7f ff e8 f7 call 4000a4c8 <== NOT EXECUTED 400100f0: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED =============================================================================== 40010040 : } bool rtems_rtl_symbol_table_open (rtems_rtl_symbols* symbols, size_t buckets) { 40010040: 9d e3 bf a0 save %sp, -96, %sp symbols->buckets = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL, 40010044: 94 10 20 01 mov 1, %o2 40010048: bb 2e 60 01 sll %i1, 1, %i5 4001004c: 90 10 20 01 mov 1, %o0 40010050: ba 07 40 19 add %i5, %i1, %i5 40010054: bb 2f 60 02 sll %i5, 2, %i5 40010058: 7f ff e8 f3 call 4000a424 4001005c: 92 10 00 1d mov %i5, %o1 buckets * sizeof (rtems_chain_control), true); if (!symbols->buckets) 40010060: 80 a2 20 00 cmp %o0, 0 40010064: 02 80 00 17 be 400100c0 <== NEVER TAKEN 40010068: d0 26 00 00 st %o0, [ %i0 ] { rtems_rtl_set_error (ENOMEM, "no memory for global symbol table"); return false; } symbols->nbuckets = buckets; for (buckets = 0; buckets < symbols->nbuckets; ++buckets) 4001006c: 80 a6 60 00 cmp %i1, 0 40010070: 02 80 00 0c be 400100a0 <== NEVER TAKEN 40010074: f2 26 20 04 st %i1, [ %i0 + 4 ] 40010078: ba 07 60 04 add %i5, 4, %i5 4001007c: 82 02 20 04 add %o0, 4, %g1 40010080: 90 02 00 1d add %o0, %i5, %o0 head->previous = NULL; 40010084: c0 20 40 00 clr [ %g1 ] tail->previous = head; 40010088: 84 00 7f fc add %g1, -4, %g2 head->next = tail; 4001008c: c2 20 7f fc st %g1, [ %g1 + -4 ] 40010090: 82 00 60 0c add %g1, 0xc, %g1 40010094: 80 a0 40 08 cmp %g1, %o0 40010098: 12 bf ff fb bne 40010084 4001009c: c4 20 7f f8 st %g2, [ %g1 + -8 ] rtems_chain_initialize_empty (&symbols->buckets[buckets]); rtems_rtl_symbol_global_insert (symbols, &global_sym_add); 400100a0: 90 10 00 18 mov %i0, %o0 400100a4: 13 10 00 d3 sethi %hi(0x40034c00), %o1 return true; 400100a8: b0 10 20 01 mov 1, %i0 rtems_rtl_symbol_global_insert (symbols, &global_sym_add); 400100ac: 92 12 63 8c or %o1, 0x38c, %o1 400100b0: 7f ff ff c6 call 4000ffc8 400100b4: b0 0e 20 01 and %i0, 1, %i0 } 400100b8: 81 c7 e0 08 ret 400100bc: 81 e8 00 00 restore rtems_rtl_set_error (ENOMEM, "no memory for global symbol table"); 400100c0: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 400100c4: 13 10 00 c6 sethi %hi(0x40031800), %o1 <== NOT EXECUTED return false; 400100c8: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOMEM, "no memory for global symbol table"); 400100cc: 92 12 61 b0 or %o1, 0x1b0, %o1 <== NOT EXECUTED 400100d0: 7f ff ef 47 call 4000bdec <== NOT EXECUTED 400100d4: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED } 400100d8: 81 c7 e0 08 ret <== NOT EXECUTED 400100dc: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000caf0 : { 4000caf0: 9d e3 bf a0 save %sp, -96, %sp if (rtems_rtl_trace (RTEMS_RTL_TRACE_UNLOAD)) 4000caf4: 40 00 0e c4 call 40010604 4000caf8: 90 10 20 08 mov 8, %o0 4000cafc: 80 a2 20 00 cmp %o0, 0 4000cb00: 32 80 00 27 bne,a 4000cb9c 4000cb04: d2 06 20 14 ld [ %i0 + 0x14 ], %o1 if ((obj->flags & RTEMS_RTL_OBJ_LOCKED) == RTEMS_RTL_OBJ_LOCKED) 4000cb08: c2 06 20 08 ld [ %i0 + 8 ], %g1 4000cb0c: 80 88 60 01 btst 1, %g1 4000cb10: 12 80 00 2b bne 4000cbbc <== NEVER TAKEN 4000cb14: 90 10 20 16 mov 0x16, %o0 if (obj->users > 0) 4000cb18: c4 06 20 0c ld [ %i0 + 0xc ], %g2 4000cb1c: 80 a0 a0 00 cmp %g2, 0 4000cb20: 22 80 00 0b be,a 4000cb4c <== NEVER TAKEN 4000cb24: 82 10 60 01 or %g1, 1, %g1 <== NOT EXECUTED --obj->users; 4000cb28: 84 00 bf ff add %g2, -1, %g2 if (obj->users == 0) 4000cb2c: 80 a0 a0 00 cmp %g2, 0 4000cb30: 02 80 00 06 be 4000cb48 <== ALWAYS TAKEN 4000cb34: c4 26 20 0c st %g2, [ %i0 + 0xc ] bool ok = true; 4000cb38: ba 10 20 01 mov 1, %i5 <== NOT EXECUTED } 4000cb3c: b0 0f 60 ff and %i5, 0xff, %i0 <== NOT EXECUTED 4000cb40: 81 c7 e0 08 ret <== NOT EXECUTED 4000cb44: 81 e8 00 00 restore <== NOT EXECUTED obj->flags |= RTEMS_RTL_OBJ_LOCKED; 4000cb48: 82 10 60 01 or %g1, 1, %g1 4000cb4c: c2 26 20 08 st %g1, [ %i0 + 8 ] rtems_recursive_mutex_unlock (&rtl->lock); 4000cb50: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000cb54: 40 00 1e b3 call 40014620 <_Mutex_recursive_Release> 4000cb58: d0 00 61 e4 ld [ %g1 + 0x1e4 ], %o0 ! 400361e4 rtems_rtl_obj_run_dtors (obj); 4000cb5c: 40 00 08 3b call 4000ec48 4000cb60: 90 10 00 18 mov %i0, %o0 rtems_rtl_lock (); 4000cb64: 7f ff fe 34 call 4000c434 4000cb68: 01 00 00 00 nop obj->flags &= ~RTEMS_RTL_OBJ_LOCKED; 4000cb6c: c2 06 20 08 ld [ %i0 + 8 ], %g1 4000cb70: 82 08 7f fe and %g1, -2, %g1 4000cb74: c2 26 20 08 st %g1, [ %i0 + 8 ] ok = rtems_rtl_obj_unload (obj); 4000cb78: 40 00 08 8e call 4000edb0 4000cb7c: 90 10 00 18 mov %i0, %o0 4000cb80: ba 10 00 08 mov %o0, %i5 rtems_rtl_obj_free (obj); 4000cb84: 40 00 03 ef call 4000db40 4000cb88: 90 10 00 18 mov %i0, %o0 rtems_rtl_obj_caches_flush (); 4000cb8c: 7f ff fe 0e call 4000c3c4 4000cb90: b0 0f 60 ff and %i5, 0xff, %i0 } 4000cb94: 81 c7 e0 08 ret 4000cb98: 81 e8 00 00 restore printf ("rtl: unloading '%s'\n", rtems_rtl_obj_fname (obj)); 4000cb9c: 11 10 00 c3 sethi %hi(0x40030c00), %o0 4000cba0: 40 00 2f 6a call 40018948 <__wrap_printf> 4000cba4: 90 12 22 28 or %o0, 0x228, %o0 ! 40030e28 if ((obj->flags & RTEMS_RTL_OBJ_LOCKED) == RTEMS_RTL_OBJ_LOCKED) 4000cba8: c2 06 20 08 ld [ %i0 + 8 ], %g1 4000cbac: 80 88 60 01 btst 1, %g1 4000cbb0: 22 bf ff db be,a 4000cb1c <== ALWAYS TAKEN 4000cbb4: c4 06 20 0c ld [ %i0 + 0xc ], %g2 rtems_rtl_set_error (EINVAL, "cannot unload when locked"); 4000cbb8: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED return false; 4000cbbc: ba 10 20 00 clr %i5 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "cannot unload when locked"); 4000cbc0: 13 10 00 c3 sethi %hi(0x40030c00), %o1 <== NOT EXECUTED } 4000cbc4: b0 0f 60 ff and %i5, 0xff, %i0 <== NOT EXECUTED rtems_rtl_set_error (EINVAL, "cannot unload when locked"); 4000cbc8: 7f ff fc 89 call 4000bdec <== NOT EXECUTED 4000cbcc: 92 12 62 40 or %o1, 0x240, %o1 <== NOT EXECUTED } 4000cbd0: 81 c7 e0 08 ret <== NOT EXECUTED 4000cbd4: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400109e8 : rtems_rtl_unresolved_add (rtems_rtl_obj* obj, const uint16_t flags, const char* name, const uint16_t sect, const rtems_rtl_word* rel) { 400109e8: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_unresolv_block* block; rtems_rtl_unresolv_rec* rec; int name_index; size_t name_recs; if (rtems_rtl_trace (RTEMS_RTL_TRACE_UNRESOLVED)) 400109ec: 7f ff ff 06 call 40010604 400109f0: 90 10 24 00 mov 0x400, %o0 400109f4: 80 a2 20 00 cmp %o0, 0 400109f8: 12 80 00 8a bne 40010c20 <== NEVER TAKEN 400109fc: f2 27 a0 48 st %i1, [ %fp + 0x48 ] printf ("rtl: unresolv: add: %s(s:%d) -> %s\n", rtems_rtl_obj_oname (obj), sect, name); unresolved = rtems_rtl_unresolved_unprotected (); 40010a00: 7f ff ee 48 call 4000c320 40010a04: 01 00 00 00 nop if (!unresolved) 40010a08: ac 92 20 00 orcc %o0, 0, %l6 40010a0c: 02 80 00 7d be 40010c00 <== NEVER TAKEN 40010a10: ba 05 a0 0c add %l6, 0xc, %i5 return _Chain_Immutable_head( the_chain )->next; 40010a14: f2 05 a0 08 ld [ %l6 + 8 ], %i1 /* * Find the first block with a spare record. */ node = rtems_chain_first (&unresolved->blocks); block = NULL; while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010a18: 80 a6 40 1d cmp %i1, %i5 40010a1c: 02 80 00 0f be 40010a58 40010a20: 01 00 00 00 nop { block = (rtems_rtl_unresolv_block*) node; if (block->recs < unresolved->block_recs) 40010a24: c6 05 a0 04 ld [ %l6 + 4 ], %g3 40010a28: c2 06 60 08 ld [ %i1 + 8 ], %g1 40010a2c: 80 a0 40 03 cmp %g1, %g3 40010a30: 1a 80 00 06 bcc 40010a48 <== NEVER TAKEN 40010a34: a8 10 00 19 mov %i1, %l4 40010a38: 30 80 00 76 b,a 40010c10 40010a3c: 80 a0 40 03 cmp %g1, %g3 <== NOT EXECUTED 40010a40: 0a 80 00 74 bcs 40010c10 <== NOT EXECUTED 40010a44: 01 00 00 00 nop <== NOT EXECUTED 40010a48: e8 05 00 00 ld [ %l4 ], %l4 <== NOT EXECUTED while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010a4c: 80 a5 00 1d cmp %l4, %i5 <== NOT EXECUTED 40010a50: 32 bf ff fb bne,a 40010a3c <== NOT EXECUTED 40010a54: c2 05 20 08 ld [ %l4 + 8 ], %g1 <== NOT EXECUTED /* * No blocks with any spare records, allocate a new block. */ if (!block) { block = rtems_rtl_unresolved_block_alloc (unresolved); 40010a58: 7f ff ff 07 call 40010674 40010a5c: 90 10 00 16 mov %l6, %o0 if (!block) 40010a60: a8 92 20 00 orcc %o0, 0, %l4 40010a64: 22 80 00 68 be,a 40010c04 <== NEVER TAKEN 40010a68: b0 10 20 00 clr %i0 <== NOT EXECUTED size_t length = strlen (name); 40010a6c: 40 00 30 7c call 4001cc5c 40010a70: 90 10 00 1a mov %i2, %o0 40010a74: f2 05 a0 08 ld [ %l6 + 8 ], %i1 while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010a78: 80 a6 40 1d cmp %i1, %i5 40010a7c: 02 80 00 94 be 40010ccc <== NEVER TAKEN 40010a80: aa 10 00 08 mov %o0, %l5 int index = (rec - &block->rec) / sizeof (rec); 40010a84: 25 2d b6 db sethi %hi(0xb6db6c00), %l2 if (block->recs < unresolved->block_recs) 40010a88: a6 10 20 01 mov 1, %l3 int index = (rec - &block->rec) / sizeof (rec); 40010a8c: a4 14 a1 b7 or %l2, 0x1b7, %l2 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 40010a90: a2 86 60 0c addcc %i1, 0xc, %l1 40010a94: 22 80 00 0b be,a 40010ac0 <== NEVER TAKEN 40010a98: f2 06 40 00 ld [ %i1 ], %i1 <== NOT EXECUTED 40010a9c: e0 06 60 08 ld [ %i1 + 8 ], %l0 40010aa0: 80 a4 20 00 cmp %l0, 0 40010aa4: 22 80 00 07 be,a 40010ac0 40010aa8: f2 06 40 00 ld [ %i1 ], %i1 40010aac: c2 06 60 0c ld [ %i1 + 0xc ], %g1 40010ab0: 80 a0 60 00 cmp %g1, 0 40010ab4: 12 80 00 15 bne 40010b08 <== ALWAYS TAKEN 40010ab8: ae 10 00 11 mov %l1, %l7 40010abc: f2 06 40 00 ld [ %i1 ], %i1 <== NOT EXECUTED while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010ac0: 80 a6 40 1d cmp %i1, %i5 40010ac4: 32 bf ff f4 bne,a 40010a94 <== NEVER TAKEN 40010ac8: a2 86 60 0c addcc %i1, 0xc, %l1 <== NOT EXECUTED rtems_rtl_unresolv_block* name_block = block; /* * Is there enough room to fit the name ? It not add a new block. */ if (name_recs > (unresolved->block_recs - block->recs)) 40010acc: c6 05 20 08 ld [ %l4 + 8 ], %g3 40010ad0: c2 05 a0 04 ld [ %l6 + 4 ], %g1 return ((length + sizeof(rtems_rtl_unresolv_name) - 1) / 40010ad4: 84 05 60 0f add %l5, 0xf, %g2 if (name_recs > (unresolved->block_recs - block->recs)) 40010ad8: 82 20 40 03 sub %g1, %g3, %g1 return ((length + sizeof(rtems_rtl_unresolv_name) - 1) / 40010adc: a1 30 a0 04 srl %g2, 4, %l0 if (name_recs > (unresolved->block_recs - block->recs)) 40010ae0: 80 a0 40 10 cmp %g1, %l0 40010ae4: 1a 80 00 56 bcc 40010c3c <== ALWAYS TAKEN 40010ae8: a4 10 00 14 mov %l4, %l2 { name_block = rtems_rtl_unresolved_block_alloc (unresolved); 40010aec: 7f ff fe e2 call 40010674 <== NOT EXECUTED 40010af0: 90 10 00 16 mov %l6, %o0 <== NOT EXECUTED if (!name_block) 40010af4: a4 92 20 00 orcc %o0, 0, %l2 <== NOT EXECUTED 40010af8: 22 80 00 43 be,a 40010c04 <== NOT EXECUTED 40010afc: b0 10 20 00 clr %i0 <== NOT EXECUTED 40010b00: 10 80 00 4f b 40010c3c <== NOT EXECUTED 40010b04: c6 04 a0 08 ld [ %l2 + 8 ], %g3 <== NOT EXECUTED if (rec->type == rtems_rtl_unresolved_name) 40010b08: 80 a0 60 01 cmp %g1, 1 40010b0c: 22 80 00 16 be,a 40010b64 <== ALWAYS TAKEN 40010b10: c2 15 e0 06 lduh [ %l7 + 6 ], %g1 rec = rtems_rtl_unresolved_rec_next (rec); 40010b14: 7f ff fe c2 call 4001061c 40010b18: 90 10 00 17 mov %l7, %o0 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 40010b1c: ae 92 20 00 orcc %o0, 0, %l7 40010b20: 22 bf ff e8 be,a 40010ac0 <== NEVER TAKEN 40010b24: f2 06 40 00 ld [ %i1 ], %i1 <== NOT EXECUTED int index = (rec - &block->rec) / sizeof (rec); 40010b28: 82 25 c0 11 sub %l7, %l1, %g1 40010b2c: 83 38 60 02 sra %g1, 2, %g1 40010b30: 82 58 40 12 smul %g1, %l2, %g1 40010b34: 83 30 60 02 srl %g1, 2, %g1 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 40010b38: 80 a0 40 10 cmp %g1, %l0 40010b3c: 3a bf ff e1 bcc,a 40010ac0 <== NEVER TAKEN 40010b40: f2 06 40 00 ld [ %i1 ], %i1 <== NOT EXECUTED 40010b44: c2 05 c0 00 ld [ %l7 ], %g1 40010b48: 80 a0 60 00 cmp %g1, 0 40010b4c: 22 bf ff dd be,a 40010ac0 40010b50: f2 06 40 00 ld [ %i1 ], %i1 if (rec->type == rtems_rtl_unresolved_name) 40010b54: 80 a0 60 01 cmp %g1, 1 40010b58: 12 bf ff ef bne 40010b14 <== ALWAYS TAKEN 40010b5c: 01 00 00 00 nop if ((rec->rec.name.length == length) 40010b60: c2 15 e0 06 lduh [ %l7 + 6 ], %g1 <== NOT EXECUTED 40010b64: 80 a0 40 15 cmp %g1, %l5 40010b68: 02 80 00 04 be 40010b78 <== NEVER TAKEN 40010b6c: 92 10 00 1a mov %i2, %o1 ++index; 40010b70: 10 bf ff e9 b 40010b14 40010b74: a6 04 e0 01 inc %l3 && (strcmp (rec->rec.name.name, name))) 40010b78: 40 00 2e 0c call 4001c3a8 <== NOT EXECUTED 40010b7c: 90 05 e0 08 add %l7, 8, %o0 <== NOT EXECUTED 40010b80: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40010b84: 22 bf ff e4 be,a 40010b14 <== NOT EXECUTED 40010b88: a6 04 e0 01 inc %l3 <== NOT EXECUTED ++rec->rec.name.refs; 40010b8c: c2 15 e0 04 lduh [ %l7 + 4 ], %g1 <== NOT EXECUTED 40010b90: 82 00 60 01 inc %g1 <== NOT EXECUTED 40010b94: c2 35 e0 04 sth %g1, [ %l7 + 4 ] <== NOT EXECUTED 40010b98: ba 05 20 0c add %l4, 0xc, %i5 <== NOT EXECUTED 40010b9c: c4 05 20 08 ld [ %l4 + 8 ], %g2 <== NOT EXECUTED return &block->rec + block->recs; 40010ba0: 83 28 a0 03 sll %g2, 3, %g1 <== NOT EXECUTED 40010ba4: 82 20 40 02 sub %g1, %g2, %g1 return false; } } rec = rtems_rtl_unresolved_rec_first_free (block); rec->type = rtems_rtl_unresolved_reloc; 40010ba8: 84 10 20 02 mov 2, %g2 return &block->rec + block->recs; 40010bac: 83 28 60 02 sll %g1, 2, %g1 rec->type = rtems_rtl_unresolved_reloc; 40010bb0: c4 27 40 01 st %g2, [ %i5 + %g1 ] return &block->rec + block->recs; 40010bb4: 82 07 40 01 add %i5, %g1, %g1 rec->rec.reloc.obj = obj; 40010bb8: f0 20 60 04 st %i0, [ %g1 + 4 ] rec->rec.reloc.rel[1] = rel[1]; rec->rec.reloc.rel[2] = rel[2]; ++block->recs; return true; 40010bbc: b0 10 20 01 mov 1, %i0 rec->rec.reloc.flags = flags; 40010bc0: c4 07 a0 48 ld [ %fp + 0x48 ], %g2 40010bc4: c4 30 60 08 sth %g2, [ %g1 + 8 ] 40010bc8: b0 0e 20 ff and %i0, 0xff, %i0 rec->rec.reloc.name = name_index; 40010bcc: e6 30 60 0a sth %l3, [ %g1 + 0xa ] rec->rec.reloc.sect = sect; 40010bd0: f6 30 60 0c sth %i3, [ %g1 + 0xc ] rec->rec.reloc.rel[0] = rel[0]; 40010bd4: c4 07 00 00 ld [ %i4 ], %g2 40010bd8: c4 20 60 10 st %g2, [ %g1 + 0x10 ] rec->rec.reloc.rel[1] = rel[1]; 40010bdc: c4 07 20 04 ld [ %i4 + 4 ], %g2 40010be0: c4 20 60 14 st %g2, [ %g1 + 0x14 ] rec->rec.reloc.rel[2] = rel[2]; 40010be4: c4 07 20 08 ld [ %i4 + 8 ], %g2 40010be8: c4 20 60 18 st %g2, [ %g1 + 0x18 ] ++block->recs; 40010bec: c2 05 20 08 ld [ %l4 + 8 ], %g1 40010bf0: 82 00 60 01 inc %g1 40010bf4: c2 25 20 08 st %g1, [ %l4 + 8 ] } 40010bf8: 81 c7 e0 08 ret 40010bfc: 81 e8 00 00 restore return false; 40010c00: b0 10 20 00 clr %i0 <== NOT EXECUTED 40010c04: b0 0e 20 ff and %i0, 0xff, %i0 <== NOT EXECUTED } 40010c08: 81 c7 e0 08 ret <== NOT EXECUTED 40010c0c: 81 e8 00 00 restore <== NOT EXECUTED size_t length = strlen (name); 40010c10: 40 00 30 13 call 4001cc5c 40010c14: 90 10 00 1a mov %i2, %o0 40010c18: 10 bf ff 9b b 40010a84 40010c1c: aa 10 00 08 mov %o0, %l5 printf ("rtl: unresolv: add: %s(s:%d) -> %s\n", 40010c20: d2 06 20 18 ld [ %i0 + 0x18 ], %o1 <== NOT EXECUTED 40010c24: 96 10 00 1a mov %i2, %o3 <== NOT EXECUTED 40010c28: 94 10 00 1b mov %i3, %o2 <== NOT EXECUTED 40010c2c: 11 10 00 c6 sethi %hi(0x40031800), %o0 <== NOT EXECUTED 40010c30: 40 00 1f 46 call 40018948 <__wrap_printf> <== NOT EXECUTED 40010c34: 90 12 23 18 or %o0, 0x318, %o0 ! 40031b18 <== NOT EXECUTED 40010c38: 30 bf ff 72 b,a 40010a00 <== NOT EXECUTED rec->type = rtems_rtl_unresolved_name; 40010c3c: 82 10 20 01 mov 1, %g1 return &block->rec + block->recs; 40010c40: a3 28 e0 03 sll %g3, 3, %l1 40010c44: ba 04 a0 0c add %l2, 0xc, %i5 40010c48: a2 24 40 03 sub %l1, %g3, %l1 40010c4c: a3 2c 60 02 sll %l1, 2, %l1 rec->type = rtems_rtl_unresolved_name; 40010c50: c2 27 40 11 st %g1, [ %i5 + %l1 ] return &block->rec + block->recs; 40010c54: a2 07 40 11 add %i5, %l1, %l1 rec->rec.name.refs = 1; 40010c58: c2 34 60 04 sth %g1, [ %l1 + 4 ] rec->rec.name.length = strlen (name) + 1; 40010c5c: 40 00 30 00 call 4001cc5c 40010c60: 90 10 00 1a mov %i2, %o0 40010c64: 90 02 20 01 inc %o0 40010c68: d0 34 60 06 sth %o0, [ %l1 + 6 ] memcpy ((void*) &rec->rec.name.name[0], name, rec->rec.name.length + 1); 40010c6c: 95 2a 20 10 sll %o0, 0x10, %o2 40010c70: 92 10 00 1a mov %i2, %o1 40010c74: 95 32 a0 10 srl %o2, 0x10, %o2 40010c78: 90 04 60 08 add %l1, 8, %o0 40010c7c: 40 00 28 3a call 4001ad64 40010c80: 94 02 a0 01 inc %o2 block->recs += name_recs; 40010c84: c2 05 20 08 ld [ %l4 + 8 ], %g1 40010c88: 84 04 00 01 add %l0, %g1, %g2 if ((block == name_block) && (block->recs >= unresolved->block_recs)) 40010c8c: 80 a4 80 14 cmp %l2, %l4 40010c90: 02 80 00 04 be 40010ca0 <== ALWAYS TAKEN 40010c94: c4 25 20 08 st %g2, [ %l4 + 8 ] 40010c98: 10 bf ff c2 b 40010ba0 <== NOT EXECUTED 40010c9c: ba 05 20 0c add %l4, 0xc, %i5 <== NOT EXECUTED 40010ca0: c2 05 a0 04 ld [ %l6 + 4 ], %g1 40010ca4: 80 a0 80 01 cmp %g2, %g1 40010ca8: 0a bf ff bf bcs 40010ba4 <== ALWAYS TAKEN 40010cac: 83 28 a0 03 sll %g2, 3, %g1 block = rtems_rtl_unresolved_block_alloc (unresolved); 40010cb0: 7f ff fe 71 call 40010674 <== NOT EXECUTED 40010cb4: 90 10 00 16 mov %l6, %o0 <== NOT EXECUTED if (!block) 40010cb8: a8 92 20 00 orcc %o0, 0, %l4 <== NOT EXECUTED 40010cbc: 02 bf ff d1 be 40010c00 <== NOT EXECUTED 40010cc0: ba 05 20 0c add %l4, 0xc, %i5 <== NOT EXECUTED 40010cc4: 10 bf ff b7 b 40010ba0 <== NOT EXECUTED 40010cc8: c4 05 20 08 ld [ %l4 + 8 ], %g2 <== NOT EXECUTED int index = 1; 40010ccc: 10 bf ff 80 b 40010acc <== NOT EXECUTED 40010cd0: a6 10 20 01 mov 1, %l3 <== NOT EXECUTED =============================================================================== 40010858 : bool rtems_rtl_unresolved_interate (rtems_rtl_unresolved_iterator iterator, void* data) { 40010858: 9d e3 bf a0 save %sp, -96, %sp rtems_rtl_unresolved* unresolved = rtems_rtl_unresolved_unprotected (); 4001085c: 7f ff ee b1 call 4000c320 40010860: 01 00 00 00 nop if (unresolved) 40010864: 80 a2 20 00 cmp %o0, 0 40010868: 02 80 00 30 be 40010928 <== NEVER TAKEN 4001086c: 82 10 20 00 clr %g1 return _Chain_Immutable_head( the_chain )->next; 40010870: f8 02 20 08 ld [ %o0 + 8 ], %i4 return &the_chain->Tail.Node; 40010874: b6 02 20 0c add %o0, 0xc, %i3 { rtems_chain_node* node = rtems_chain_first (&unresolved->blocks); while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010878: 80 a7 00 1b cmp %i4, %i3 4001087c: 22 80 00 2c be,a 4001092c 40010880: b0 08 60 ff and %g1, 0xff, %i0 int index = (rec - &block->rec) / sizeof (rec); 40010884: 35 2d b6 db sethi %hi(0xb6db6c00), %i2 40010888: b4 16 a1 b7 or %i2, 0x1b7, %i2 ! b6db6db7 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 4001088c: a0 87 20 0c addcc %i4, 0xc, %l0 40010890: 22 80 00 22 be,a 40010918 <== NEVER TAKEN 40010894: f8 07 00 00 ld [ %i4 ], %i4 <== NOT EXECUTED 40010898: c2 07 20 08 ld [ %i4 + 8 ], %g1 4001089c: 80 a0 60 00 cmp %g1, 0 400108a0: 22 80 00 1e be,a 40010918 <== NEVER TAKEN 400108a4: f8 07 00 00 ld [ %i4 ], %i4 <== NOT EXECUTED 400108a8: c2 07 20 0c ld [ %i4 + 0xc ], %g1 400108ac: 80 a0 60 00 cmp %g1, 0 400108b0: 02 80 00 19 be 40010914 <== NEVER TAKEN 400108b4: ba 10 00 10 mov %l0, %i5 rtems_rtl_unresolv_block* block = (rtems_rtl_unresolv_block*) node; rtems_rtl_unresolv_rec* rec = rtems_rtl_unresolved_rec_first (block); while (!rtems_rtl_unresolved_rec_is_last (block, rec)) { if (iterator (rec, data)) 400108b8: 92 10 00 19 mov %i1, %o1 400108bc: 9f c6 00 00 call %i0 400108c0: 90 10 00 1d mov %i5, %o0 400108c4: 82 10 00 08 mov %o0, %g1 400108c8: 80 a0 60 00 cmp %g1, 0 400108cc: 12 80 00 17 bne 40010928 <== NEVER TAKEN 400108d0: 90 10 00 1d mov %i5, %o0 return true; rec = rtems_rtl_unresolved_rec_next (rec); 400108d4: 7f ff ff 52 call 4001061c 400108d8: 01 00 00 00 nop return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 400108dc: ba 92 20 00 orcc %o0, 0, %i5 400108e0: 02 80 00 0d be 40010914 <== NEVER TAKEN 400108e4: 82 27 40 10 sub %i5, %l0, %g1 400108e8: c4 07 20 08 ld [ %i4 + 8 ], %g2 int index = (rec - &block->rec) / sizeof (rec); 400108ec: 83 38 60 02 sra %g1, 2, %g1 400108f0: 82 58 40 1a smul %g1, %i2, %g1 400108f4: 83 30 60 02 srl %g1, 2, %g1 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 400108f8: 80 a0 40 02 cmp %g1, %g2 400108fc: 3a 80 00 07 bcc,a 40010918 <== NEVER TAKEN 40010900: f8 07 00 00 ld [ %i4 ], %i4 <== NOT EXECUTED 40010904: c2 07 40 00 ld [ %i5 ], %g1 40010908: 80 a0 60 00 cmp %g1, 0 4001090c: 12 bf ff ec bne 400108bc 40010910: 92 10 00 19 mov %i1, %o1 40010914: f8 07 00 00 ld [ %i4 ], %i4 while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010918: 80 a7 00 1b cmp %i4, %i3 4001091c: 32 bf ff dd bne,a 40010890 <== NEVER TAKEN 40010920: a0 87 20 0c addcc %i4, 0xc, %l0 <== NOT EXECUTED } node = rtems_chain_next (node); } } return false; 40010924: 82 10 20 00 clr %g1 40010928: b0 08 60 ff and %g1, 0xff, %i0 } 4001092c: 81 c7 e0 08 ret 40010930: 81 e8 00 00 restore =============================================================================== 40010cd4 : void rtems_rtl_unresolved_resolve (void) { 40010cd4: 9d e3 bf 90 save %sp, -112, %sp rtems_rtl_unresolved_reloc_data rd; if (rtems_rtl_trace (RTEMS_RTL_TRACE_UNRESOLVED)) 40010cd8: 7f ff fe 4b call 40010604 40010cdc: 90 10 24 00 mov 0x400, %o0 40010ce0: 80 a2 20 00 cmp %o0, 0 40010ce4: 02 80 00 06 be 40010cfc 40010ce8: 92 07 bf f4 add %fp, -12, %o1 printf ("rtl: unresolv: global resolve\n"); 40010cec: 11 10 00 c6 sethi %hi(0x40031800), %o0 40010cf0: 40 00 1f 25 call 40018984 <__wrap_puts> 40010cf4: 90 12 23 40 or %o0, 0x340, %o0 ! 40031b40 rd.name = 0; rd.name_rec = NULL; rd.sym = NULL; rtems_rtl_unresolved_interate (rtems_rtl_unresolved_resolve_iterator, &rd); 40010cf8: 92 07 bf f4 add %fp, -12, %o1 rd.name = 0; 40010cfc: c0 37 bf f4 clrh [ %fp + -12 ] rtems_rtl_unresolved_interate (rtems_rtl_unresolved_resolve_iterator, &rd); 40010d00: 11 10 00 42 sethi %hi(0x40010800), %o0 rd.name_rec = NULL; 40010d04: c0 27 bf f8 clr [ %fp + -8 ] rtems_rtl_unresolved_interate (rtems_rtl_unresolved_resolve_iterator, &rd); 40010d08: 90 12 21 34 or %o0, 0x134, %o0 40010d0c: 7f ff fe d3 call 40010858 40010d10: c0 27 bf fc clr [ %fp + -4 ] rtems_rtl_unresolved* unresolved = rtems_rtl_unresolved_unprotected (); 40010d14: 7f ff ed 83 call 4000c320 40010d18: 01 00 00 00 nop if (unresolved) 40010d1c: 80 a2 20 00 cmp %o0, 0 40010d20: 02 80 00 28 be 40010dc0 <== NEVER TAKEN 40010d24: a0 02 20 08 add %o0, 8, %l0 return _Chain_Immutable_tail( the_chain )->previous; 40010d28: f6 02 20 10 ld [ %o0 + 0x10 ], %i3 int index = (rec - &block->rec) / sizeof (rec); 40010d2c: 33 2d b6 db sethi %hi(0xb6db6c00), %i1 while (!rtems_chain_is_head (&unresolved->blocks, node)) 40010d30: 80 a6 c0 10 cmp %i3, %l0 40010d34: 02 80 00 23 be 40010dc0 40010d38: b2 16 61 b7 or %i1, 0x1b7, %i1 40010d3c: f0 06 e0 04 ld [ %i3 + 4 ], %i0 40010d40: f8 06 e0 08 ld [ %i3 + 8 ], %i4 return &block->rec; 40010d44: ba 06 e0 0c add %i3, 0xc, %i5 40010d48: b4 10 00 1d mov %i5, %i2 int index = (rec - &block->rec) / sizeof (rec); 40010d4c: 82 27 40 1a sub %i5, %i2, %g1 40010d50: 83 38 60 02 sra %g1, 2, %g1 40010d54: 82 58 40 19 smul %g1, %i1, %g1 40010d58: 83 30 60 02 srl %g1, 2, %g1 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 40010d5c: 80 a0 40 1c cmp %g1, %i4 40010d60: 1a 80 00 12 bcc 40010da8 40010d64: 80 a7 20 00 cmp %i4, 0 40010d68: c2 07 40 00 ld [ %i5 ], %g1 40010d6c: 80 a0 60 00 cmp %g1, 0 40010d70: 22 80 00 11 be,a 40010db4 40010d74: b6 10 00 18 mov %i0, %i3 if (rec->type == rtems_rtl_unresolved_name) 40010d78: 80 a0 60 01 cmp %g1, 1 40010d7c: 02 80 00 1a be 40010de4 40010d80: 80 a0 60 02 cmp %g1, 2 else if (rec->type == rtems_rtl_unresolved_reloc) 40010d84: 22 80 00 25 be,a 40010e18 <== ALWAYS TAKEN 40010d88: c2 07 60 04 ld [ %i5 + 4 ], %g1 rec = rtems_rtl_unresolved_rec_next (rec); 40010d8c: 7f ff fe 24 call 4001061c 40010d90: 90 10 00 1d mov %i5, %o0 40010d94: ba 10 00 08 mov %o0, %i5 return !rec || (index >= block->recs) || (rec->type == rtems_rtl_unresolved_empty); 40010d98: 80 a7 60 00 cmp %i5, 0 40010d9c: 12 bf ff ed bne 40010d50 <== ALWAYS TAKEN 40010da0: 82 27 40 1a sub %i5, %i2, %g1 if (block->recs == 0) 40010da4: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED 40010da8: 02 80 00 08 be 40010dc8 <== ALWAYS TAKEN 40010dac: 01 00 00 00 nop { 40010db0: b6 10 00 18 mov %i0, %i3 <== NOT EXECUTED while (!rtems_chain_is_head (&unresolved->blocks, node)) 40010db4: 80 a6 c0 10 cmp %i3, %l0 40010db8: 32 bf ff e2 bne,a 40010d40 <== NEVER TAKEN 40010dbc: f0 06 e0 04 ld [ %i3 + 4 ], %i0 <== NOT EXECUTED 40010dc0: 81 c7 e0 08 ret 40010dc4: 81 e8 00 00 restore rtems_chain_extract (node); 40010dc8: 40 00 04 e3 call 40012154 40010dcc: 90 10 00 1b mov %i3, %o0 free (block); 40010dd0: 90 10 00 1b mov %i3, %o0 40010dd4: 7f ff d9 c0 call 400074d4 40010dd8: b6 10 00 18 mov %i0, %i3 while (!rtems_chain_is_head (&unresolved->blocks, node)) 40010ddc: 10 bf ff f7 b 40010db8 40010de0: 80 a6 c0 10 cmp %i3, %l0 if (rec->rec.name.refs == 0) 40010de4: c2 17 60 04 lduh [ %i5 + 4 ], %g1 40010de8: 80 a0 60 00 cmp %g1, 0 40010dec: 12 bf ff e8 bne 40010d8c 40010df0: 01 00 00 00 nop size_t length = strlen (name); 40010df4: 40 00 2f 9a call 4001cc5c 40010df8: 90 07 60 08 add %i5, 8, %o0 rtems_rtl_unresolved_clean_block (block, rec, name_recs, 40010dfc: 92 10 00 1d mov %i5, %o1 return ((length + sizeof(rtems_rtl_unresolv_name) - 1) / 40010e00: 94 02 20 0f add %o0, 0xf, %o2 rtems_rtl_unresolved_clean_block (block, rec, name_recs, 40010e04: 90 10 00 1b mov %i3, %o0 40010e08: 7f ff fe 57 call 40010764 40010e0c: 95 32 a0 04 srl %o2, 4, %o2 40010e10: 10 bf ff e2 b 40010d98 40010e14: f8 06 e0 08 ld [ %i3 + 8 ], %i4 if (!rec->rec.reloc.obj) 40010e18: 80 a0 60 00 cmp %g1, 0 40010e1c: 12 bf ff dc bne 40010d8c 40010e20: 94 10 20 01 mov 1, %o2 rtems_rtl_unresolved_clean_block (block, rec, 1, 40010e24: 92 10 00 1d mov %i5, %o1 40010e28: 7f ff fe 4f call 40010764 40010e2c: 90 10 00 1b mov %i3, %o0 40010e30: 10 bf ff da b 40010d98 40010e34: f8 06 e0 08 ld [ %i3 + 8 ], %i4 =============================================================================== 40010824 : void rtems_rtl_unresolved_table_close (rtems_rtl_unresolved* unresolved) { 40010824: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40010828: d0 06 20 08 ld [ %i0 + 8 ], %o0 <== NOT EXECUTED return &the_chain->Tail.Node; 4001082c: b0 06 20 0c add %i0, 0xc, %i0 <== NOT EXECUTED rtems_chain_node* node = rtems_chain_first (&unresolved->blocks); while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010830: 80 a2 00 18 cmp %o0, %i0 <== NOT EXECUTED 40010834: 02 80 00 07 be 40010850 <== NOT EXECUTED 40010838: 01 00 00 00 nop <== NOT EXECUTED { rtems_chain_node* next = rtems_chain_next (node); free (node); 4001083c: 7f ff db 26 call 400074d4 <== NOT EXECUTED 40010840: fa 02 00 00 ld [ %o0 ], %i5 <== NOT EXECUTED while (!rtems_chain_is_tail (&unresolved->blocks, node)) 40010844: 80 a7 40 18 cmp %i5, %i0 <== NOT EXECUTED 40010848: 12 bf ff fd bne 4001083c <== NOT EXECUTED 4001084c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED node = next; } } 40010850: 81 c7 e0 08 ret <== NOT EXECUTED 40010854: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000c320 : rtems_rtl_unresolved* rtems_rtl_unresolved_unprotected (void) { 4000c320: 9d e3 bf a0 save %sp, -96, %sp if (!rtl) 4000c324: 03 10 00 d8 sethi %hi(0x40036000), %g1 4000c328: c2 00 61 e4 ld [ %g1 + 0x1e4 ], %g1 ! 400361e4 4000c32c: 80 a0 60 00 cmp %g1, 0 4000c330: 12 80 00 07 bne 4000c34c <== ALWAYS TAKEN 4000c334: b0 00 60 7c add %g1, 0x7c, %i0 { rtems_rtl_set_error (ENOENT, "no rtl"); 4000c338: 90 10 20 02 mov 2, %o0 <== NOT EXECUTED 4000c33c: 13 10 00 c3 sethi %hi(0x40030c00), %o1 <== NOT EXECUTED return NULL; 4000c340: b0 10 20 00 clr %i0 <== NOT EXECUTED rtems_rtl_set_error (ENOENT, "no rtl"); 4000c344: 7f ff fe aa call 4000bdec <== NOT EXECUTED 4000c348: 92 12 61 c8 or %o1, 0x1c8, %o1 <== NOT EXECUTED } return &rtl->unresolved; } 4000c34c: 81 c7 e0 08 ret 4000c350: 81 e8 00 00 restore