1 .cpu arm7tdmi 2 .arch armv4t 3 .fpu softvfp 4 .eabi_attribute 20, 1 5 .eabi_attribute 21, 1 6 .eabi_attribute 23, 3 7 .eabi_attribute 24, 1 8 .eabi_attribute 25, 1 9 .eabi_attribute 26, 1 10 .eabi_attribute 30, 4 11 .eabi_attribute 34, 0 12 .eabi_attribute 18, 4 13 .file "vsprintf.c" 14 .text 15 .Ltext0: 16 .cfi_sections .debug_frame 17 .file 1 "lib/vsprintf.c" 18 .section .text.__toupper,"ax",%progbits 19 .align 2 20 .syntax unified 21 .arm 23 __toupper: 24 .LVL0: 25 .LFB1: 26 .file 2 "include/ctype.h" 1:include/ctype.h **** #ifndef _LINUX_CTYPE_H 2:include/ctype.h **** #define _LINUX_CTYPE_H 3:include/ctype.h **** 4:include/ctype.h **** /* 5:include/ctype.h **** * NOTE! This ctype does not handle EOF like the standard C 6:include/ctype.h **** * library is required to. 7:include/ctype.h **** */ 8:include/ctype.h **** 9:include/ctype.h **** #define _U 0x01 /* upper */ 10:include/ctype.h **** #define _L 0x02 /* lower */ 11:include/ctype.h **** #define _D 0x04 /* digit */ 12:include/ctype.h **** #define _C 0x08 /* cntrl */ 13:include/ctype.h **** #define _P 0x10 /* punct */ 14:include/ctype.h **** #define _S 0x20 /* white space (space/lf/tab) */ 15:include/ctype.h **** #define _X 0x40 /* hex digit */ 16:include/ctype.h **** #define _SP 0x80 /* hard space (0x20) */ 17:include/ctype.h **** 18:include/ctype.h **** extern unsigned char _ctype[]; 19:include/ctype.h **** 20:include/ctype.h **** #define __ismask(x) (_ctype[(int)(unsigned char)(x)]) 21:include/ctype.h **** 22:include/ctype.h **** #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) 23:include/ctype.h **** #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) 24:include/ctype.h **** #define iscntrl(c) ((__ismask(c)&(_C)) != 0) 25:include/ctype.h **** #define isdigit(c) ((__ismask(c)&(_D)) != 0) 26:include/ctype.h **** #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) 27:include/ctype.h **** #define islower(c) ((__ismask(c)&(_L)) != 0) 28:include/ctype.h **** #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) 29:include/ctype.h **** #define ispunct(c) ((__ismask(c)&(_P)) != 0) 30:include/ctype.h **** #define isspace(c) ((__ismask(c)&(_S)) != 0) 31:include/ctype.h **** #define isupper(c) ((__ismask(c)&(_U)) != 0) 32:include/ctype.h **** #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) 33:include/ctype.h **** 34:include/ctype.h **** #define isascii(c) (((unsigned char)(c))<=0x7f) 35:include/ctype.h **** #define toascii(c) (((unsigned char)(c))&0x7f) 36:include/ctype.h **** 37:include/ctype.h **** static inline unsigned char __tolower(unsigned char c) 38:include/ctype.h **** { 39:include/ctype.h **** if (isupper(c)) 40:include/ctype.h **** c -= 'A'-'a'; 41:include/ctype.h **** return c; 42:include/ctype.h **** } 43:include/ctype.h **** 44:include/ctype.h **** static inline unsigned char __toupper(unsigned char c) 45:include/ctype.h **** { 27 .loc 2 45 1 view -0 28 .cfi_startproc 29 @ Function supports interworking. 30 @ args = 0, pretend = 0, frame = 0 31 @ frame_needed = 0, uses_anonymous_args = 0 32 @ link register save eliminated. 46:include/ctype.h **** if (islower(c)) 33 .loc 2 46 2 view .LVU1 34 .loc 2 46 6 is_stmt 0 view .LVU2 35 0000 10309FE5 ldr r3, .L6 47:include/ctype.h **** c -= 'a'-'A'; 36 .loc 2 47 3 is_stmt 1 view .LVU3 46:include/ctype.h **** if (islower(c)) 37 .loc 2 46 5 is_stmt 0 view .LVU4 38 0004 0030D3E7 ldrb r3, [r3, r0] @ zero_extendqisi2 39 0008 020013E3 tst r3, #2 40 .loc 2 47 5 view .LVU5 41 000c 20004012 subne r0, r0, #32 42 .LVL1: 43 .loc 2 47 5 view .LVU6 44 0010 FF000012 andne r0, r0, #255 45 .LVL2: 48:include/ctype.h **** return c; 46 .loc 2 48 2 is_stmt 1 view .LVU7 49:include/ctype.h **** } 47 .loc 2 49 1 is_stmt 0 view .LVU8 48 0014 1EFF2FE1 bx lr 49 .L7: 50 .align 2 51 .L6: 52 0018 00000000 .word _ctype 53 .cfi_endproc 54 .LFE1: 56 .section .text.skip_atoi,"ax",%progbits 57 .align 2 58 .syntax unified 59 .arm 61 skip_atoi: 62 .LVL3: 63 .LFB6: 1:lib/vsprintf.c **** /* 2:lib/vsprintf.c **** * linux/lib/vsprintf.c 3:lib/vsprintf.c **** * 4:lib/vsprintf.c **** * Copyright (C) 1991, 1992 Linus Torvalds 5:lib/vsprintf.c **** */ 6:lib/vsprintf.c **** 7:lib/vsprintf.c **** /* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */ 8:lib/vsprintf.c **** /* 9:lib/vsprintf.c **** * Wirzenius wrote this portably, Torvalds fucked it up :-) 10:lib/vsprintf.c **** */ 11:lib/vsprintf.c **** 12:lib/vsprintf.c **** /* 13:lib/vsprintf.c **** * Fri Jul 13 2001 Crutcher Dunnavant 14:lib/vsprintf.c **** * - changed to provide snprintf and vsnprintf functions 15:lib/vsprintf.c **** * So Feb 1 16:51:32 CET 2004 Juergen Quade 16:lib/vsprintf.c **** * - scnprintf and vscnprintf 17:lib/vsprintf.c **** */ 18:lib/vsprintf.c **** 19:lib/vsprintf.c **** #include 20:lib/vsprintf.c **** #include 21:lib/vsprintf.c **** #include 22:lib/vsprintf.c **** #include 23:lib/vsprintf.c **** #include 24:lib/vsprintf.c **** #include 25:lib/vsprintf.c **** 26:lib/vsprintf.c **** #include 27:lib/vsprintf.c **** 28:lib/vsprintf.c **** /** 29:lib/vsprintf.c **** * strtoul - convert a string to an unsigned long 30:lib/vsprintf.c **** * @cp: The start of the string 31:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here 32:lib/vsprintf.c **** * @base: The number base to use 33:lib/vsprintf.c **** */ 34:lib/vsprintf.c **** unsigned long strtoul(const char *cp,char **endp,unsigned int base) 35:lib/vsprintf.c **** { 36:lib/vsprintf.c **** unsigned long result = 0,value; 37:lib/vsprintf.c **** 38:lib/vsprintf.c **** if (!base) { 39:lib/vsprintf.c **** base = 10; 40:lib/vsprintf.c **** if (*cp == '0') { 41:lib/vsprintf.c **** base = 8; 42:lib/vsprintf.c **** cp++; 43:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 44:lib/vsprintf.c **** cp++; 45:lib/vsprintf.c **** base = 16; 46:lib/vsprintf.c **** } 47:lib/vsprintf.c **** } 48:lib/vsprintf.c **** } else if (base == 16) { 49:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X') 50:lib/vsprintf.c **** cp += 2; 51:lib/vsprintf.c **** } 52:lib/vsprintf.c **** while (isxdigit(*cp) && 53:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) { 54:lib/vsprintf.c **** result = result*base + value; 55:lib/vsprintf.c **** cp++; 56:lib/vsprintf.c **** } 57:lib/vsprintf.c **** if (endp) 58:lib/vsprintf.c **** *endp = (char *)cp; 59:lib/vsprintf.c **** return result; 60:lib/vsprintf.c **** } 61:lib/vsprintf.c **** 62:lib/vsprintf.c **** 63:lib/vsprintf.c **** /** 64:lib/vsprintf.c **** * strtol - convert a string to a signed long 65:lib/vsprintf.c **** * @cp: The start of the string 66:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here 67:lib/vsprintf.c **** * @base: The number base to use 68:lib/vsprintf.c **** */ 69:lib/vsprintf.c **** long strtol(const char *cp,char **endp,unsigned int base) 70:lib/vsprintf.c **** { 71:lib/vsprintf.c **** if(*cp=='-') 72:lib/vsprintf.c **** return -strtoul(cp+1,endp,base); 73:lib/vsprintf.c **** return strtoul(cp,endp,base); 74:lib/vsprintf.c **** } 75:lib/vsprintf.c **** 76:lib/vsprintf.c **** 77:lib/vsprintf.c **** /** 78:lib/vsprintf.c **** * strtoull - convert a string to an unsigned long long 79:lib/vsprintf.c **** * @cp: The start of the string 80:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here 81:lib/vsprintf.c **** * @base: The number base to use 82:lib/vsprintf.c **** */ 83:lib/vsprintf.c **** unsigned long long strtoull(const char *cp,char **endp,unsigned int base) 84:lib/vsprintf.c **** { 85:lib/vsprintf.c **** unsigned long long result = 0,value; 86:lib/vsprintf.c **** 87:lib/vsprintf.c **** if (!base) { 88:lib/vsprintf.c **** base = 10; 89:lib/vsprintf.c **** if (*cp == '0') { 90:lib/vsprintf.c **** base = 8; 91:lib/vsprintf.c **** cp++; 92:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 93:lib/vsprintf.c **** cp++; 94:lib/vsprintf.c **** base = 16; 95:lib/vsprintf.c **** } 96:lib/vsprintf.c **** } 97:lib/vsprintf.c **** } else if (base == 16) { 98:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X') 99:lib/vsprintf.c **** cp += 2; 100:lib/vsprintf.c **** } 101:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) 102:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 103:lib/vsprintf.c **** result = result*base + value; 104:lib/vsprintf.c **** cp++; 105:lib/vsprintf.c **** } 106:lib/vsprintf.c **** if (endp) 107:lib/vsprintf.c **** *endp = (char *)cp; 108:lib/vsprintf.c **** return result; 109:lib/vsprintf.c **** } 110:lib/vsprintf.c **** 111:lib/vsprintf.c **** 112:lib/vsprintf.c **** /** 113:lib/vsprintf.c **** * strtoll - convert a string to a signed long long 114:lib/vsprintf.c **** * @cp: The start of the string 115:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here 116:lib/vsprintf.c **** * @base: The number base to use 117:lib/vsprintf.c **** */ 118:lib/vsprintf.c **** long long strtoll(const char *cp,char **endp,unsigned int base) 119:lib/vsprintf.c **** { 120:lib/vsprintf.c **** if(*cp=='-') 121:lib/vsprintf.c **** return -strtoull(cp+1,endp,base); 122:lib/vsprintf.c **** return strtoull(cp,endp,base); 123:lib/vsprintf.c **** } 124:lib/vsprintf.c **** 125:lib/vsprintf.c **** static int skip_atoi(const char **s) 126:lib/vsprintf.c **** { 64 .loc 1 126 1 is_stmt 1 view -0 65 .cfi_startproc 66 @ Function supports interworking. 67 @ args = 0, pretend = 0, frame = 0 68 @ frame_needed = 0, uses_anonymous_args = 0 127:lib/vsprintf.c **** int i=0; 69 .loc 1 127 2 view .LVU10 128:lib/vsprintf.c **** 129:lib/vsprintf.c **** while (isdigit(**s)) 70 .loc 1 129 2 view .LVU11 126:lib/vsprintf.c **** int i=0; 71 .loc 1 126 1 is_stmt 0 view .LVU12 72 0000 0020A0E1 mov r2, r0 73 0004 04E02DE5 str lr, [sp, #-4]! 74 .LCFI0: 75 .cfi_def_cfa_offset 4 76 .cfi_offset 14, -4 127:lib/vsprintf.c **** int i=0; 77 .loc 1 127 6 view .LVU13 78 0008 0000A0E3 mov r0, #0 79 .LVL4: 130:lib/vsprintf.c **** i = i*10 + *((*s)++) - '0'; 80 .loc 1 130 8 view .LVU14 81 000c 0AE0A0E3 mov lr, #10 129:lib/vsprintf.c **** i = i*10 + *((*s)++) - '0'; 82 .loc 1 129 9 view .LVU15 83 0010 30C09FE5 ldr ip, .L12 84 .LVL5: 85 .L9: 129:lib/vsprintf.c **** i = i*10 + *((*s)++) - '0'; 86 .loc 1 129 9 is_stmt 1 view .LVU16 87 0014 003092E5 ldr r3, [r2] 88 0018 0010D3E5 ldrb r1, [r3] @ zero_extendqisi2 89 001c 0110DCE7 ldrb r1, [ip, r1] @ zero_extendqisi2 90 0020 040011E3 tst r1, #4 91 0024 0100001A bne .L10 131:lib/vsprintf.c **** return i; 92 .loc 1 131 2 view .LVU17 132:lib/vsprintf.c **** } 93 .loc 1 132 1 is_stmt 0 view .LVU18 94 0028 04E09DE4 ldr lr, [sp], #4 95 .LCFI1: 96 .cfi_remember_state 97 .cfi_restore 14 98 .cfi_def_cfa_offset 0 99 002c 1EFF2FE1 bx lr 100 .L10: 101 .LCFI2: 102 .cfi_restore_state 130:lib/vsprintf.c **** return i; 103 .loc 1 130 3 is_stmt 1 view .LVU19 130:lib/vsprintf.c **** return i; 104 .loc 1 130 20 is_stmt 0 view .LVU20 105 0030 011083E2 add r1, r3, #1 106 0034 001082E5 str r1, [r2] 130:lib/vsprintf.c **** return i; 107 .loc 1 130 14 view .LVU21 108 0038 0030D3E5 ldrb r3, [r3] @ zero_extendqisi2 130:lib/vsprintf.c **** return i; 109 .loc 1 130 12 view .LVU22 110 003c 9E3023E0 mla r3, lr, r0, r3 130:lib/vsprintf.c **** return i; 111 .loc 1 130 5 view .LVU23 112 0040 300043E2 sub r0, r3, #48 113 .LVL6: 130:lib/vsprintf.c **** return i; 114 .loc 1 130 5 view .LVU24 115 0044 F2FFFFEA b .L9 116 .L13: 117 .align 2 118 .L12: 119 0048 00000000 .word _ctype 120 .cfi_endproc 121 .LFE6: 123 .section .text.number,"ax",%progbits 124 .align 2 125 .syntax unified 126 .arm 128 number: 129 .LVL7: 130 .LFB7: 133:lib/vsprintf.c **** 134:lib/vsprintf.c **** #define ZEROPAD 1 /* pad with zero */ 135:lib/vsprintf.c **** #define SIGN 2 /* unsigned/signed long */ 136:lib/vsprintf.c **** #define PLUS 4 /* show plus */ 137:lib/vsprintf.c **** #define SPACE 8 /* space if plus */ 138:lib/vsprintf.c **** #define LEFT 16 /* left justified */ 139:lib/vsprintf.c **** #define SPECIAL 32 /* 0x */ 140:lib/vsprintf.c **** #define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */ 141:lib/vsprintf.c **** 142:lib/vsprintf.c **** static char * number(char * buf, char * end, unsigned long long num, int base, int size, int precis 143:lib/vsprintf.c **** { 131 .loc 1 143 1 is_stmt 1 view -0 132 .cfi_startproc 133 @ Function supports interworking. 134 @ args = 16, pretend = 0, frame = 88 135 @ frame_needed = 0, uses_anonymous_args = 0 144:lib/vsprintf.c **** char c,sign,tmp[66]; 136 .loc 1 144 2 view .LVU26 145:lib/vsprintf.c **** const char *digits; 137 .loc 1 145 2 view .LVU27 146:lib/vsprintf.c **** static const char small_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; 138 .loc 1 146 2 view .LVU28 147:lib/vsprintf.c **** static const char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 139 .loc 1 147 2 view .LVU29 148:lib/vsprintf.c **** int i; 140 .loc 1 148 2 view .LVU30 149:lib/vsprintf.c **** 150:lib/vsprintf.c **** digits = (type & LARGE) ? large_digits : small_digits; 141 .loc 1 150 2 view .LVU31 143:lib/vsprintf.c **** char c,sign,tmp[66]; 142 .loc 1 143 1 is_stmt 0 view .LVU32 143 0000 F04F2DE9 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 144 .LCFI3: 145 .cfi_def_cfa_offset 36 146 .cfi_offset 4, -36 147 .cfi_offset 5, -32 148 .cfi_offset 6, -28 149 .cfi_offset 7, -24 150 .cfi_offset 8, -20 151 .cfi_offset 9, -16 152 .cfi_offset 10, -12 153 .cfi_offset 11, -8 154 .cfi_offset 14, -4 155 0004 5CD04DE2 sub sp, sp, #92 156 .LCFI4: 157 .cfi_def_cfa_offset 128 143:lib/vsprintf.c **** char c,sign,tmp[66]; 158 .loc 1 143 1 view .LVU33 159 0008 8C809DE5 ldr r8, [sp, #140] 160 000c 0050A0E1 mov r5, r0 161 0010 0200A0E1 mov r0, r2 162 .LVL8: 163 .loc 1 150 41 view .LVU34 164 0014 88229FE5 ldr r2, .L72 165 .LVL9: 166 .loc 1 150 41 view .LVU35 167 0018 400018E3 tst r8, #64 143:lib/vsprintf.c **** char c,sign,tmp[66]; 168 .loc 1 143 1 view .LVU36 169 001c 0190A0E1 mov r9, r1 170 .loc 1 150 41 view .LVU37 171 0020 251082E2 add r1, r2, #37 172 .LVL10: 173 .loc 1 150 41 view .LVU38 174 0024 0120A001 moveq r2, r1 175 0028 04208DE5 str r2, [sp, #4] 176 .LVL11: 151:lib/vsprintf.c **** if (type & LEFT) 177 .loc 1 151 2 is_stmt 1 view .LVU39 178 .loc 1 151 5 is_stmt 0 view .LVU40 179 002c 102018E2 ands r2, r8, #16 180 .LVL12: 152:lib/vsprintf.c **** type &= ~ZEROPAD; 181 .loc 1 152 8 view .LVU41 182 0030 0180C813 bicne r8, r8, #1 153:lib/vsprintf.c **** if (base < 2 || base > 36) 154:lib/vsprintf.c **** return NULL; 155:lib/vsprintf.c **** c = (type & ZEROPAD) ? '0' : ' '; 183 .loc 1 155 4 view .LVU42 184 0034 010018E3 tst r8, #1 151:lib/vsprintf.c **** type &= ~ZEROPAD; 185 .loc 1 151 5 view .LVU43 186 0038 08208DE5 str r2, [sp, #8] 152:lib/vsprintf.c **** type &= ~ZEROPAD; 187 .loc 1 152 3 is_stmt 1 view .LVU44 188 .LVL13: 153:lib/vsprintf.c **** if (base < 2 || base > 36) 189 .loc 1 153 2 view .LVU45 190 .loc 1 155 2 view .LVU46 191 .loc 1 155 4 is_stmt 0 view .LVU47 192 003c 3020A013 movne r2, #48 193 0040 2020A003 moveq r2, #32 143:lib/vsprintf.c **** char c,sign,tmp[66]; 194 .loc 1 143 1 view .LVU48 195 0044 80408DE2 add r4, sp, #128 156:lib/vsprintf.c **** sign = 0; 157:lib/vsprintf.c **** if (type & SIGN) { 196 .loc 1 157 5 view .LVU49 197 0048 02A018E2 ands r10, r8, #2 143:lib/vsprintf.c **** char c,sign,tmp[66]; 198 .loc 1 143 1 view .LVU50 199 004c 500094E8 ldm r4, {r4, r6} 155:lib/vsprintf.c **** sign = 0; 200 .loc 1 155 4 view .LVU51 201 0050 0C208DE5 str r2, [sp, #12] 202 .LVL14: 156:lib/vsprintf.c **** sign = 0; 203 .loc 1 156 2 is_stmt 1 view .LVU52 204 .loc 1 157 2 view .LVU53 158:lib/vsprintf.c **** if ((signed long long) num < 0) { 159:lib/vsprintf.c **** sign = '-'; 160:lib/vsprintf.c **** num = - (signed long long) num; 161:lib/vsprintf.c **** size--; 162:lib/vsprintf.c **** } else if (type & PLUS) { 163:lib/vsprintf.c **** sign = '+'; 164:lib/vsprintf.c **** size--; 165:lib/vsprintf.c **** } else if (type & SPACE) { 166:lib/vsprintf.c **** sign = ' '; 167:lib/vsprintf.c **** size--; 168:lib/vsprintf.c **** } 169:lib/vsprintf.c **** } 170:lib/vsprintf.c **** if (type & SPECIAL) { 205 .loc 1 170 11 is_stmt 0 view .LVU54 206 0054 20B008E2 and fp, r8, #32 157:lib/vsprintf.c **** if ((signed long long) num < 0) { 207 .loc 1 157 5 view .LVU55 208 0058 1D00000A beq .L18 158:lib/vsprintf.c **** if ((signed long long) num < 0) { 209 .loc 1 158 3 is_stmt 1 view .LVU56 158:lib/vsprintf.c **** if ((signed long long) num < 0) { 210 .loc 1 158 6 is_stmt 0 view .LVU57 211 005c 000053E3 cmp r3, #0 212 0060 140000AA bge .L19 159:lib/vsprintf.c **** num = - (signed long long) num; 213 .loc 1 159 4 is_stmt 1 view .LVU58 214 .LVL15: 160:lib/vsprintf.c **** size--; 215 .loc 1 160 4 view .LVU59 160:lib/vsprintf.c **** size--; 216 .loc 1 160 10 is_stmt 0 view .LVU60 217 0064 000070E2 rsbs r0, r0, #0 218 0068 0030E3E2 rsc r3, r3, #0 219 .LVL16: 161:lib/vsprintf.c **** } else if (type & PLUS) { 220 .loc 1 161 4 is_stmt 1 view .LVU61 221 .loc 1 170 5 is_stmt 0 view .LVU62 222 006c 00005BE3 cmp fp, #0 159:lib/vsprintf.c **** num = - (signed long long) num; 223 .loc 1 159 9 view .LVU63 224 0070 2DA0A0E3 mov r10, #45 161:lib/vsprintf.c **** } else if (type & PLUS) { 225 .loc 1 161 8 view .LVU64 226 0074 016046E2 sub r6, r6, #1 227 .LVL17: 228 .loc 1 170 2 is_stmt 1 view .LVU65 229 .loc 1 170 5 is_stmt 0 view .LVU66 230 0078 1700001A bne .L20 231 .LVL18: 232 .L21: 171:lib/vsprintf.c **** if (base == 16) 172:lib/vsprintf.c **** size -= 2; 173:lib/vsprintf.c **** else if (base == 8) 174:lib/vsprintf.c **** size--; 175:lib/vsprintf.c **** } 176:lib/vsprintf.c **** i = 0; 233 .loc 1 176 4 view .LVU67 234 007c 0070A0E3 mov r7, #0 235 0080 14208DE2 add r2, sp, #20 236 0084 00208DE5 str r2, [sp] 237 .L26: 238 .LVL19: 177:lib/vsprintf.c **** if (num == 0) 178:lib/vsprintf.c **** tmp[i++]='0'; 179:lib/vsprintf.c **** else while (num != 0) 180:lib/vsprintf.c **** tmp[i++] = digits[do_div(num,base)]; 239 .loc 1 180 3 is_stmt 1 view .LVU68 240 .LBB2: 241 .loc 1 180 21 view .LVU69 242 .loc 1 180 21 view .LVU70 243 0088 0310A0E1 mov r1, r3 244 .loc 1 180 21 view .LVU71 245 .loc 1 180 21 view .LVU72 246 .loc 1 180 21 view .LVU73 247 .syntax divided 248 @ 180 "lib/vsprintf.c" 1 249 .ifnc r1,r1 ; .err ; .endif 250 .ifnc r2,r2 ; .err ; .endif 251 .ifnc r0,r0 ; .err ; .endif 252 .ifnc r4,r4 ; .err ; .endif 253 008c FEFFFFEB bl __do_div64 254 @ 0 "" 2 255 .loc 1 180 21 view .LVU74 256 .arm 257 .syntax unified 258 0090 0200A0E1 mov r0, r2 259 .LVL20: 260 .loc 1 180 21 view .LVU75 261 .LBE2: 262 .loc 1 180 12 is_stmt 0 view .LVU76 263 0094 04209DE5 ldr r2, [sp, #4] 264 0098 0120D2E7 ldrb r2, [r2, r1] @ zero_extendqisi2 265 009c 00109DE5 ldr r1, [sp] 266 00a0 0120C1E4 strb r2, [r1], #1 179:lib/vsprintf.c **** tmp[i++] = digits[do_div(num,base)]; 267 .loc 1 179 18 view .LVU77 268 00a4 032090E1 orrs r2, r0, r3 269 .loc 1 180 12 view .LVU78 270 00a8 00108DE5 str r1, [sp] 271 .loc 1 180 8 view .LVU79 272 00ac 017087E2 add r7, r7, #1 273 .LVL21: 179:lib/vsprintf.c **** tmp[i++] = digits[do_div(num,base)]; 274 .loc 1 179 18 is_stmt 1 view .LVU80 275 00b0 F4FFFF1A bne .L26 276 00b4 120000EA b .L25 277 .LVL22: 278 .L19: 162:lib/vsprintf.c **** sign = '+'; 279 .loc 1 162 10 view .LVU81 162:lib/vsprintf.c **** sign = '+'; 280 .loc 1 162 13 is_stmt 0 view .LVU82 281 00b8 040018E3 tst r8, #4 163:lib/vsprintf.c **** size--; 282 .loc 1 163 9 view .LVU83 283 00bc 2BA0A013 movne r10, #43 164:lib/vsprintf.c **** } else if (type & SPACE) { 284 .loc 1 164 8 view .LVU84 285 00c0 01604612 subne r6, r6, #1 286 .LVL23: 162:lib/vsprintf.c **** sign = '+'; 287 .loc 1 162 13 view .LVU85 288 00c4 0200001A bne .L18 165:lib/vsprintf.c **** sign = ' '; 289 .loc 1 165 10 is_stmt 1 view .LVU86 165:lib/vsprintf.c **** sign = ' '; 290 .loc 1 165 13 is_stmt 0 view .LVU87 291 00c8 08A018E2 ands r10, r8, #8 166:lib/vsprintf.c **** size--; 292 .loc 1 166 4 is_stmt 1 view .LVU88 293 .LVL24: 167:lib/vsprintf.c **** } 294 .loc 1 167 4 view .LVU89 166:lib/vsprintf.c **** size--; 295 .loc 1 166 9 is_stmt 0 view .LVU90 296 00cc 20A0A013 movne r10, #32 167:lib/vsprintf.c **** } 297 .loc 1 167 8 view .LVU91 298 00d0 01604612 subne r6, r6, #1 299 .LVL25: 300 .L18: 170:lib/vsprintf.c **** if (base == 16) 301 .loc 1 170 2 is_stmt 1 view .LVU92 170:lib/vsprintf.c **** if (base == 16) 302 .loc 1 170 5 is_stmt 0 view .LVU93 303 00d4 00005BE3 cmp fp, #0 304 00d8 0400000A beq .L23 305 .LVL26: 306 .L20: 171:lib/vsprintf.c **** size -= 2; 307 .loc 1 171 3 is_stmt 1 view .LVU94 171:lib/vsprintf.c **** size -= 2; 308 .loc 1 171 6 is_stmt 0 view .LVU95 309 00dc 100054E3 cmp r4, #16 172:lib/vsprintf.c **** else if (base == 8) 310 .loc 1 172 9 view .LVU96 311 00e0 02604602 subeq r6, r6, #2 312 .LVL27: 171:lib/vsprintf.c **** size -= 2; 313 .loc 1 171 6 view .LVU97 314 00e4 0100000A beq .L23 173:lib/vsprintf.c **** size--; 315 .loc 1 173 8 is_stmt 1 view .LVU98 173:lib/vsprintf.c **** size--; 316 .loc 1 173 11 is_stmt 0 view .LVU99 317 00e8 080054E3 cmp r4, #8 174:lib/vsprintf.c **** } 318 .loc 1 174 4 is_stmt 1 view .LVU100 174:lib/vsprintf.c **** } 319 .loc 1 174 8 is_stmt 0 view .LVU101 320 00ec 01604602 subeq r6, r6, #1 321 .LVL28: 322 .L23: 176:lib/vsprintf.c **** if (num == 0) 323 .loc 1 176 2 is_stmt 1 view .LVU102 177:lib/vsprintf.c **** tmp[i++]='0'; 324 .loc 1 177 2 view .LVU103 177:lib/vsprintf.c **** tmp[i++]='0'; 325 .loc 1 177 5 is_stmt 0 view .LVU104 326 00f0 032090E1 orrs r2, r0, r3 178:lib/vsprintf.c **** else while (num != 0) 327 .loc 1 178 11 view .LVU105 328 00f4 3030A003 moveq r3, #48 178:lib/vsprintf.c **** else while (num != 0) 329 .loc 1 178 8 view .LVU106 330 00f8 0170A003 moveq r7, #1 178:lib/vsprintf.c **** else while (num != 0) 331 .loc 1 178 11 view .LVU107 332 00fc 1430CD05 strbeq r3, [sp, #20] 177:lib/vsprintf.c **** tmp[i++]='0'; 333 .loc 1 177 5 view .LVU108 334 0100 DDFFFF1A bne .L21 335 .LVL29: 336 .L25: 181:lib/vsprintf.c **** if (i > precision) 337 .loc 1 181 2 is_stmt 1 view .LVU109 338 0104 88309DE5 ldr r3, [sp, #136] 339 0108 030057E1 cmp r7, r3 340 010c 0730A0A1 movge r3, r7 341 .LVL30: 182:lib/vsprintf.c **** precision = i; 183:lib/vsprintf.c **** size -= precision; 342 .loc 1 183 2 view .LVU110 184:lib/vsprintf.c **** if (!(type&(ZEROPAD+LEFT))) { 343 .loc 1 184 5 is_stmt 0 view .LVU111 344 0110 110018E3 tst r8, #17 183:lib/vsprintf.c **** if (!(type&(ZEROPAD+LEFT))) { 345 .loc 1 183 7 view .LVU112 346 0114 036046E0 sub r6, r6, r3 347 .LVL31: 348 .loc 1 184 2 is_stmt 1 view .LVU113 349 .loc 1 184 5 is_stmt 0 view .LVU114 350 0118 1E00000A beq .L56 351 .LVL32: 352 .L28: 185:lib/vsprintf.c **** while(size-->0) { 186:lib/vsprintf.c **** if (buf <= end) 187:lib/vsprintf.c **** *buf = ' '; 188:lib/vsprintf.c **** ++buf; 189:lib/vsprintf.c **** } 190:lib/vsprintf.c **** } 191:lib/vsprintf.c **** if (sign) { 353 .loc 1 191 2 is_stmt 1 view .LVU115 354 .loc 1 191 5 is_stmt 0 view .LVU116 355 011c 00005AE3 cmp r10, #0 356 0120 0200000A beq .L31 192:lib/vsprintf.c **** if (buf <= end) 357 .loc 1 192 3 is_stmt 1 view .LVU117 358 .loc 1 192 6 is_stmt 0 view .LVU118 359 0124 090055E1 cmp r5, r9 193:lib/vsprintf.c **** *buf = sign; 360 .loc 1 193 4 is_stmt 1 view .LVU119 361 .loc 1 193 9 is_stmt 0 view .LVU120 362 0128 00A0C595 strbls r10, [r5] 194:lib/vsprintf.c **** ++buf; 363 .loc 1 194 3 is_stmt 1 view .LVU121 364 012c 015085E2 add r5, r5, #1 365 .LVL33: 366 .L31: 195:lib/vsprintf.c **** } 196:lib/vsprintf.c **** if (type & SPECIAL) { 367 .loc 1 196 2 view .LVU122 368 .loc 1 196 5 is_stmt 0 view .LVU123 369 0130 00005BE3 cmp fp, #0 370 0134 0500000A beq .L33 197:lib/vsprintf.c **** if (base==8) { 371 .loc 1 197 3 is_stmt 1 view .LVU124 372 .loc 1 197 6 is_stmt 0 view .LVU125 373 0138 080054E3 cmp r4, #8 374 013c 1900001A bne .L34 198:lib/vsprintf.c **** if (buf <= end) 375 .loc 1 198 4 is_stmt 1 view .LVU126 376 .loc 1 198 7 is_stmt 0 view .LVU127 377 0140 090055E1 cmp r5, r9 199:lib/vsprintf.c **** *buf = '0'; 378 .loc 1 199 5 is_stmt 1 view .LVU128 379 .loc 1 199 10 is_stmt 0 view .LVU129 380 0144 3020A093 movls r2, #48 200:lib/vsprintf.c **** ++buf; 381 .loc 1 200 4 view .LVU130 382 0148 015085E2 add r5, r5, #1 383 .LVL34: 199:lib/vsprintf.c **** *buf = '0'; 384 .loc 1 199 10 view .LVU131 385 014c 01204595 strbls r2, [r5, #-1] 386 .loc 1 200 4 is_stmt 1 view .LVU132 387 .LVL35: 388 .L33: 201:lib/vsprintf.c **** } else if (base==16) { 202:lib/vsprintf.c **** if (buf <= end) 203:lib/vsprintf.c **** *buf = '0'; 204:lib/vsprintf.c **** ++buf; 205:lib/vsprintf.c **** if (buf <= end) 206:lib/vsprintf.c **** *buf = digits[33]; 207:lib/vsprintf.c **** ++buf; 208:lib/vsprintf.c **** } 209:lib/vsprintf.c **** } 210:lib/vsprintf.c **** if (!(type & LEFT)) { 389 .loc 1 210 2 view .LVU133 390 .loc 1 210 5 is_stmt 0 view .LVU134 391 0150 08209DE5 ldr r2, [sp, #8] 392 0154 000052E3 cmp r2, #0 393 0158 2A00000A beq .L57 394 .LVL36: 395 .L39: 396 .loc 1 210 5 view .LVU135 397 015c 0520A0E1 mov r2, r5 211:lib/vsprintf.c **** while (size-- > 0) { 212:lib/vsprintf.c **** if (buf <= end) 213:lib/vsprintf.c **** *buf = c; 214:lib/vsprintf.c **** ++buf; 215:lib/vsprintf.c **** } 216:lib/vsprintf.c **** } 217:lib/vsprintf.c **** while (i < precision--) { 218:lib/vsprintf.c **** if (buf <= end) 219:lib/vsprintf.c **** *buf = '0'; 398 .loc 1 219 9 view .LVU136 399 0160 30C0A0E3 mov ip, #48 217:lib/vsprintf.c **** if (buf <= end) 400 .loc 1 217 11 view .LVU137 401 0164 030085E0 add r0, r5, r3 402 0168 2C0000EA b .L43 403 .LVL37: 404 .L30: 186:lib/vsprintf.c **** *buf = ' '; 405 .loc 1 186 4 is_stmt 1 view .LVU138 186:lib/vsprintf.c **** *buf = ' '; 406 .loc 1 186 7 is_stmt 0 view .LVU139 407 016c 090052E1 cmp r2, r9 187:lib/vsprintf.c **** ++buf; 408 .loc 1 187 5 is_stmt 1 view .LVU140 187:lib/vsprintf.c **** ++buf; 409 .loc 1 187 10 is_stmt 0 view .LVU141 410 0170 00C0C295 strbls ip, [r2] 188:lib/vsprintf.c **** } 411 .loc 1 188 4 is_stmt 1 view .LVU142 412 0174 012082E2 add r2, r2, #1 413 .LVL38: 414 .L27: 185:lib/vsprintf.c **** if (buf <= end) 415 .loc 1 185 15 view .LVU143 416 0178 021040E0 sub r1, r0, r2 417 017c 000051E3 cmp r1, #0 418 0180 F9FFFFCA bgt .L30 185:lib/vsprintf.c **** if (buf <= end) 419 .loc 1 185 15 is_stmt 0 view .LVU144 420 0184 C62FC6E1 bic r2, r6, r6, asr #31 421 .LVL39: 185:lib/vsprintf.c **** if (buf <= end) 422 .loc 1 185 15 view .LVU145 423 0188 016046E2 sub r6, r6, #1 424 018c 025085E0 add r5, r5, r2 185:lib/vsprintf.c **** if (buf <= end) 425 .loc 1 185 13 view .LVU146 426 0190 026046E0 sub r6, r6, r2 427 0194 E0FFFFEA b .L28 428 .LVL40: 429 .L56: 185:lib/vsprintf.c **** if (buf <= end) 430 .loc 1 185 13 view .LVU147 431 0198 0520A0E1 mov r2, r5 187:lib/vsprintf.c **** ++buf; 432 .loc 1 187 10 view .LVU148 433 019c 20C0A0E3 mov ip, #32 434 01a0 060085E0 add r0, r5, r6 435 01a4 F3FFFFEA b .L27 436 .L34: 201:lib/vsprintf.c **** if (buf <= end) 437 .loc 1 201 10 is_stmt 1 view .LVU149 201:lib/vsprintf.c **** if (buf <= end) 438 .loc 1 201 13 is_stmt 0 view .LVU150 439 01a8 100054E3 cmp r4, #16 440 01ac E7FFFF1A bne .L33 202:lib/vsprintf.c **** *buf = '0'; 441 .loc 1 202 4 is_stmt 1 view .LVU151 202:lib/vsprintf.c **** *buf = '0'; 442 .loc 1 202 7 is_stmt 0 view .LVU152 443 01b0 090055E1 cmp r5, r9 203:lib/vsprintf.c **** ++buf; 444 .loc 1 203 5 is_stmt 1 view .LVU153 203:lib/vsprintf.c **** ++buf; 445 .loc 1 203 10 is_stmt 0 view .LVU154 446 01b4 3020A093 movls r2, #48 447 01b8 0020C595 strbls r2, [r5] 204:lib/vsprintf.c **** if (buf <= end) 448 .loc 1 204 4 is_stmt 1 view .LVU155 449 .LVL41: 205:lib/vsprintf.c **** *buf = digits[33]; 450 .loc 1 205 4 view .LVU156 204:lib/vsprintf.c **** if (buf <= end) 451 .loc 1 204 4 is_stmt 0 view .LVU157 452 01bc 012085E2 add r2, r5, #1 453 .LVL42: 205:lib/vsprintf.c **** *buf = digits[33]; 454 .loc 1 205 7 view .LVU158 455 01c0 020059E1 cmp r9, r2 206:lib/vsprintf.c **** ++buf; 456 .loc 1 206 5 is_stmt 1 view .LVU159 206:lib/vsprintf.c **** ++buf; 457 .loc 1 206 18 is_stmt 0 view .LVU160 458 01c4 04209D25 ldrcs r2, [sp, #4] 459 .LVL43: 206:lib/vsprintf.c **** ++buf; 460 .loc 1 206 18 view .LVU161 461 01c8 2120D225 ldrbcs r2, [r2, #33] @ zero_extendqisi2 207:lib/vsprintf.c **** } 462 .loc 1 207 4 view .LVU162 463 01cc 025085E2 add r5, r5, #2 464 .LVL44: 206:lib/vsprintf.c **** ++buf; 465 .loc 1 206 10 view .LVU163 466 01d0 01204525 strbcs r2, [r5, #-1] 207:lib/vsprintf.c **** } 467 .loc 1 207 4 is_stmt 1 view .LVU164 468 .LVL45: 207:lib/vsprintf.c **** } 469 .loc 1 207 4 is_stmt 0 view .LVU165 470 01d4 DDFFFFEA b .L33 471 .LVL46: 472 .L41: 212:lib/vsprintf.c **** *buf = c; 473 .loc 1 212 4 is_stmt 1 view .LVU166 212:lib/vsprintf.c **** *buf = c; 474 .loc 1 212 7 is_stmt 0 view .LVU167 475 01d8 090052E1 cmp r2, r9 213:lib/vsprintf.c **** ++buf; 476 .loc 1 213 5 is_stmt 1 view .LVU168 213:lib/vsprintf.c **** ++buf; 477 .loc 1 213 10 is_stmt 0 view .LVU169 478 01dc 0C109D95 ldrls r1, [sp, #12] 214:lib/vsprintf.c **** } 479 .loc 1 214 4 view .LVU170 480 01e0 012082E2 add r2, r2, #1 481 .LVL47: 213:lib/vsprintf.c **** ++buf; 482 .loc 1 213 10 view .LVU171 483 01e4 01104295 strbls r1, [r2, #-1] 214:lib/vsprintf.c **** } 484 .loc 1 214 4 is_stmt 1 view .LVU172 485 .LVL48: 486 .L38: 211:lib/vsprintf.c **** if (buf <= end) 487 .loc 1 211 17 view .LVU173 488 01e8 021040E0 sub r1, r0, r2 489 01ec 000051E3 cmp r1, #0 490 01f0 F8FFFFCA bgt .L41 211:lib/vsprintf.c **** if (buf <= end) 491 .loc 1 211 17 is_stmt 0 view .LVU174 492 01f4 C62FC6E1 bic r2, r6, r6, asr #31 493 .LVL49: 211:lib/vsprintf.c **** if (buf <= end) 494 .loc 1 211 17 view .LVU175 495 01f8 016046E2 sub r6, r6, #1 496 01fc 025085E0 add r5, r5, r2 211:lib/vsprintf.c **** if (buf <= end) 497 .loc 1 211 14 view .LVU176 498 0200 026046E0 sub r6, r6, r2 499 0204 D4FFFFEA b .L39 500 .LVL50: 501 .L57: 211:lib/vsprintf.c **** if (buf <= end) 502 .loc 1 211 14 view .LVU177 503 0208 0520A0E1 mov r2, r5 504 020c 060085E0 add r0, r5, r6 505 0210 F4FFFFEA b .L38 506 .LVL51: 507 .L44: 218:lib/vsprintf.c **** *buf = '0'; 508 .loc 1 218 3 is_stmt 1 view .LVU178 218:lib/vsprintf.c **** *buf = '0'; 509 .loc 1 218 6 is_stmt 0 view .LVU179 510 0214 090052E1 cmp r2, r9 511 .loc 1 219 4 is_stmt 1 view .LVU180 512 .loc 1 219 9 is_stmt 0 view .LVU181 513 0218 00C0C295 strbls ip, [r2] 220:lib/vsprintf.c **** ++buf; 514 .loc 1 220 3 is_stmt 1 view .LVU182 515 021c 012082E2 add r2, r2, #1 516 .LVL52: 517 .L43: 217:lib/vsprintf.c **** if (buf <= end) 518 .loc 1 217 11 view .LVU183 519 0220 021040E0 sub r1, r0, r2 520 0224 010057E1 cmp r7, r1 521 0228 F9FFFFBA blt .L44 522 022c 070053E1 cmp r3, r7 523 0230 0030A0B3 movlt r3, #0 524 0234 073043A0 subge r3, r3, r7 525 0238 030085E0 add r0, r5, r3 526 023c 0720A0E1 mov r2, r7 527 .LVL53: 217:lib/vsprintf.c **** if (buf <= end) 528 .loc 1 217 11 is_stmt 0 view .LVU184 529 0240 0030A0E1 mov r3, r0 221:lib/vsprintf.c **** } 222:lib/vsprintf.c **** while (i-- > 0) { 223:lib/vsprintf.c **** if (buf <= end) 224:lib/vsprintf.c **** *buf = tmp[i]; 530 .loc 1 224 14 view .LVU185 531 0244 14108DE2 add r1, sp, #20 532 .LVL54: 533 .L45: 222:lib/vsprintf.c **** if (buf <= end) 534 .loc 1 222 13 is_stmt 1 view .LVU186 535 0248 017057E2 subs r7, r7, #1 536 .LVL55: 222:lib/vsprintf.c **** if (buf <= end) 537 .loc 1 222 13 is_stmt 0 view .LVU187 538 024c 0B00002A bcs .L47 539 0250 020080E0 add r0, r0, r2 540 0254 0030A0E1 mov r3, r0 541 .LVL56: 225:lib/vsprintf.c **** ++buf; 226:lib/vsprintf.c **** } 227:lib/vsprintf.c **** while (size-- > 0) { 228:lib/vsprintf.c **** if (buf <= end) 229:lib/vsprintf.c **** *buf = ' '; 542 .loc 1 229 9 view .LVU188 543 0258 20C0A0E3 mov ip, #32 544 025c 061080E0 add r1, r0, r6 545 .LVL57: 546 .L48: 227:lib/vsprintf.c **** if (buf <= end) 547 .loc 1 227 16 is_stmt 1 view .LVU189 548 0260 032041E0 sub r2, r1, r3 549 0264 000052E3 cmp r2, #0 550 0268 090000CA bgt .L50 230:lib/vsprintf.c **** ++buf; 231:lib/vsprintf.c **** } 232:lib/vsprintf.c **** return buf; 233:lib/vsprintf.c **** } 551 .loc 1 233 1 is_stmt 0 view .LVU190 552 026c 000056E3 cmp r6, #0 553 0270 060080A0 addge r0, r0, r6 554 0274 5CD08DE2 add sp, sp, #92 555 .LCFI5: 556 .cfi_remember_state 557 .cfi_def_cfa_offset 36 558 @ sp needed 559 0278 F04FBDE8 pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} 560 .LCFI6: 561 .cfi_restore 14 562 .cfi_restore 11 563 .cfi_restore 10 564 .cfi_restore 9 565 .cfi_restore 8 566 .cfi_restore 7 567 .cfi_restore 6 568 .cfi_restore 5 569 .cfi_restore 4 570 .cfi_def_cfa_offset 0 571 .LVL58: 572 .loc 1 233 1 view .LVU191 573 027c 1EFF2FE1 bx lr 574 .LVL59: 575 .L47: 576 .LCFI7: 577 .cfi_restore_state 223:lib/vsprintf.c **** *buf = tmp[i]; 578 .loc 1 223 3 is_stmt 1 view .LVU192 223:lib/vsprintf.c **** *buf = tmp[i]; 579 .loc 1 223 6 is_stmt 0 view .LVU193 580 0280 090053E1 cmp r3, r9 224:lib/vsprintf.c **** ++buf; 581 .loc 1 224 4 is_stmt 1 view .LVU194 224:lib/vsprintf.c **** ++buf; 582 .loc 1 224 9 is_stmt 0 view .LVU195 583 0284 01C0D797 ldrbls ip, [r7, r1] @ zero_extendqisi2 225:lib/vsprintf.c **** } 584 .loc 1 225 3 view .LVU196 585 0288 013083E2 add r3, r3, #1 586 .LVL60: 224:lib/vsprintf.c **** ++buf; 587 .loc 1 224 9 view .LVU197 588 028c 01C04395 strbls ip, [r3, #-1] 225:lib/vsprintf.c **** } 589 .loc 1 225 3 is_stmt 1 view .LVU198 590 .LVL61: 225:lib/vsprintf.c **** } 591 .loc 1 225 3 is_stmt 0 view .LVU199 592 0290 ECFFFFEA b .L45 593 .LVL62: 594 .L50: 228:lib/vsprintf.c **** *buf = ' '; 595 .loc 1 228 3 is_stmt 1 view .LVU200 228:lib/vsprintf.c **** *buf = ' '; 596 .loc 1 228 6 is_stmt 0 view .LVU201 597 0294 090053E1 cmp r3, r9 229:lib/vsprintf.c **** ++buf; 598 .loc 1 229 4 is_stmt 1 view .LVU202 229:lib/vsprintf.c **** ++buf; 599 .loc 1 229 9 is_stmt 0 view .LVU203 600 0298 00C0C395 strbls ip, [r3] 230:lib/vsprintf.c **** } 601 .loc 1 230 3 is_stmt 1 view .LVU204 602 029c 013083E2 add r3, r3, #1 603 .LVL63: 230:lib/vsprintf.c **** } 604 .loc 1 230 3 is_stmt 0 view .LVU205 605 02a0 EEFFFFEA b .L48 606 .L73: 607 .align 2 608 .L72: 609 02a4 00000000 .word .LANCHOR0 610 .cfi_endproc 611 .LFE7: 613 .section .text.strtoul,"ax",%progbits 614 .align 2 615 .global strtoul 616 .syntax unified 617 .arm 619 strtoul: 620 .LVL64: 621 .LFB2: 35:lib/vsprintf.c **** unsigned long result = 0,value; 622 .loc 1 35 1 is_stmt 1 view -0 623 .cfi_startproc 624 @ Function supports interworking. 625 @ args = 0, pretend = 0, frame = 0 626 @ frame_needed = 0, uses_anonymous_args = 0 36:lib/vsprintf.c **** 627 .loc 1 36 2 view .LVU207 38:lib/vsprintf.c **** base = 10; 628 .loc 1 38 2 view .LVU208 35:lib/vsprintf.c **** unsigned long result = 0,value; 629 .loc 1 35 1 is_stmt 0 view .LVU209 630 0000 F0412DE9 push {r4, r5, r6, r7, r8, lr} 631 .LCFI8: 632 .cfi_def_cfa_offset 24 633 .cfi_offset 4, -24 634 .cfi_offset 5, -20 635 .cfi_offset 6, -16 636 .cfi_offset 7, -12 637 .cfi_offset 8, -8 638 .cfi_offset 14, -4 38:lib/vsprintf.c **** base = 10; 639 .loc 1 38 5 view .LVU210 640 0004 000052E3 cmp r2, #0 35:lib/vsprintf.c **** unsigned long result = 0,value; 641 .loc 1 35 1 view .LVU211 642 0008 0040A0E1 mov r4, r0 40:lib/vsprintf.c **** base = 8; 643 .loc 1 40 7 view .LVU212 644 000c 0030D0E5 ldrb r3, [r0] @ zero_extendqisi2 645 0010 B8609FE5 ldr r6, .L97 38:lib/vsprintf.c **** base = 10; 646 .loc 1 38 5 view .LVU213 647 0014 0F00001A bne .L75 39:lib/vsprintf.c **** if (*cp == '0') { 648 .loc 1 39 3 is_stmt 1 view .LVU214 649 .LVL65: 40:lib/vsprintf.c **** base = 8; 650 .loc 1 40 3 view .LVU215 40:lib/vsprintf.c **** base = 8; 651 .loc 1 40 6 is_stmt 0 view .LVU216 652 0018 300053E3 cmp r3, #48 39:lib/vsprintf.c **** if (*cp == '0') { 653 .loc 1 39 8 view .LVU217 654 001c 0A20A013 movne r2, #10 40:lib/vsprintf.c **** base = 8; 655 .loc 1 40 6 view .LVU218 656 0020 0A00001A bne .L76 41:lib/vsprintf.c **** cp++; 657 .loc 1 41 4 is_stmt 1 view .LVU219 658 .LVL66: 42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 659 .loc 1 42 4 view .LVU220 42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 660 .loc 1 42 6 is_stmt 0 view .LVU221 661 0024 012080E2 add r2, r0, #1 662 .LVL67: 43:lib/vsprintf.c **** cp++; 663 .loc 1 43 4 is_stmt 1 view .LVU222 43:lib/vsprintf.c **** cp++; 664 .loc 1 43 9 is_stmt 0 view .LVU223 665 0028 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2 666 002c FEFFFFEB bl __toupper 667 .LVL68: 43:lib/vsprintf.c **** cp++; 668 .loc 1 43 7 view .LVU224 669 0030 580050E3 cmp r0, #88 670 0034 2200001A bne .L86 43:lib/vsprintf.c **** cp++; 671 .loc 1 43 33 discriminator 1 view .LVU225 672 0038 0230D4E5 ldrb r3, [r4, #2] @ zero_extendqisi2 43:lib/vsprintf.c **** cp++; 673 .loc 1 43 30 discriminator 1 view .LVU226 674 003c 0330D6E7 ldrb r3, [r6, r3] @ zero_extendqisi2 675 0040 440013E3 tst r3, #68 676 0044 1E00000A beq .L86 677 .LVL69: 678 .L77: 44:lib/vsprintf.c **** base = 16; 679 .loc 1 44 5 is_stmt 1 view .LVU227 45:lib/vsprintf.c **** } 680 .loc 1 45 10 is_stmt 0 view .LVU228 681 0048 1020A0E3 mov r2, #16 44:lib/vsprintf.c **** base = 16; 682 .loc 1 44 7 view .LVU229 683 004c 024084E2 add r4, r4, #2 684 .LVL70: 45:lib/vsprintf.c **** } 685 .loc 1 45 5 is_stmt 1 view .LVU230 686 .L76: 41:lib/vsprintf.c **** cp++; 687 .loc 1 41 9 is_stmt 0 view .LVU231 688 0050 0050A0E3 mov r5, #0 689 0054 090000EA b .L78 690 .LVL71: 691 .L75: 48:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X') 692 .loc 1 48 9 is_stmt 1 view .LVU232 48:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X') 693 .loc 1 48 12 is_stmt 0 view .LVU233 694 0058 100052E3 cmp r2, #16 695 005c FBFFFF1A bne .L76 49:lib/vsprintf.c **** cp += 2; 696 .loc 1 49 3 is_stmt 1 view .LVU234 49:lib/vsprintf.c **** cp += 2; 697 .loc 1 49 6 is_stmt 0 view .LVU235 698 0060 300053E3 cmp r3, #48 699 0064 F9FFFF1A bne .L76 49:lib/vsprintf.c **** cp += 2; 700 .loc 1 49 23 discriminator 1 view .LVU236 701 0068 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2 702 .LVL72: 49:lib/vsprintf.c **** cp += 2; 703 .loc 1 49 23 discriminator 1 view .LVU237 704 006c FEFFFFEB bl __toupper 705 .LVL73: 49:lib/vsprintf.c **** cp += 2; 706 .loc 1 49 20 discriminator 1 view .LVU238 707 0070 580050E3 cmp r0, #88 708 0074 F5FFFF1A bne .L76 709 0078 F2FFFFEA b .L77 710 .LVL74: 711 .L82: 54:lib/vsprintf.c **** cp++; 712 .loc 1 54 3 is_stmt 1 view .LVU239 54:lib/vsprintf.c **** cp++; 713 .loc 1 54 10 is_stmt 0 view .LVU240 714 007c 920525E0 mla r5, r2, r5, r0 715 .LVL75: 55:lib/vsprintf.c **** } 716 .loc 1 55 3 is_stmt 1 view .LVU241 717 .L78: 55:lib/vsprintf.c **** } 718 .loc 1 55 3 is_stmt 0 view .LVU242 719 0080 0470A0E1 mov r7, r4 720 .LVL76: 52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) { 721 .loc 1 52 23 is_stmt 1 view .LVU243 52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) { 722 .loc 1 52 9 is_stmt 0 view .LVU244 723 0084 0100D4E4 ldrb r0, [r4], #1 @ zero_extendqisi2 724 0088 0030D6E7 ldrb r3, [r6, r0] @ zero_extendqisi2 52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) { 725 .loc 1 52 23 view .LVU245 726 008c 440013E3 tst r3, #68 727 0090 0600000A beq .L79 53:lib/vsprintf.c **** result = result*base + value; 728 .loc 1 53 41 view .LVU246 729 0094 040013E3 tst r3, #4 53:lib/vsprintf.c **** result = result*base + value; 730 .loc 1 53 36 view .LVU247 731 0098 30004012 subne r0, r0, #48 53:lib/vsprintf.c **** result = result*base + value; 732 .loc 1 53 41 view .LVU248 733 009c 0100001A bne .L81 53:lib/vsprintf.c **** result = result*base + value; 734 .loc 1 53 43 discriminator 2 view .LVU249 735 00a0 FEFFFFEB bl __toupper 736 .LVL77: 53:lib/vsprintf.c **** result = result*base + value; 737 .loc 1 53 59 discriminator 2 view .LVU250 738 00a4 370040E2 sub r0, r0, #55 739 .L81: 740 .LVL78: 52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) { 741 .loc 1 52 23 discriminator 4 view .LVU251 742 00a8 020050E1 cmp r0, r2 743 00ac F2FFFF3A bcc .L82 744 .LVL79: 745 .L79: 57:lib/vsprintf.c **** *endp = (char *)cp; 746 .loc 1 57 2 is_stmt 1 view .LVU252 57:lib/vsprintf.c **** *endp = (char *)cp; 747 .loc 1 57 5 is_stmt 0 view .LVU253 748 00b0 000051E3 cmp r1, #0 58:lib/vsprintf.c **** return result; 749 .loc 1 58 3 is_stmt 1 view .LVU254 60:lib/vsprintf.c **** 750 .loc 1 60 1 is_stmt 0 view .LVU255 751 00b4 0500A0E1 mov r0, r5 58:lib/vsprintf.c **** return result; 752 .loc 1 58 9 view .LVU256 753 00b8 00708115 strne r7, [r1] 59:lib/vsprintf.c **** } 754 .loc 1 59 2 is_stmt 1 view .LVU257 60:lib/vsprintf.c **** 755 .loc 1 60 1 is_stmt 0 view .LVU258 756 00bc F041BDE8 pop {r4, r5, r6, r7, r8, lr} 757 .LCFI9: 758 .cfi_remember_state 759 .cfi_restore 14 760 .cfi_restore 8 761 .cfi_restore 7 762 .cfi_restore 6 763 .cfi_restore 5 764 .cfi_restore 4 765 .cfi_def_cfa_offset 0 766 .LVL80: 60:lib/vsprintf.c **** 767 .loc 1 60 1 view .LVU259 768 00c0 1EFF2FE1 bx lr 769 .LVL81: 770 .L86: 771 .LCFI10: 772 .cfi_restore_state 42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 773 .loc 1 42 6 view .LVU260 774 00c4 0240A0E1 mov r4, r2 41:lib/vsprintf.c **** cp++; 775 .loc 1 41 9 view .LVU261 776 00c8 0820A0E3 mov r2, #8 777 .LVL82: 41:lib/vsprintf.c **** cp++; 778 .loc 1 41 9 view .LVU262 779 00cc DFFFFFEA b .L76 780 .L98: 781 .align 2 782 .L97: 783 00d0 00000000 .word _ctype 784 .cfi_endproc 785 .LFE2: 787 .section .text.strtol,"ax",%progbits 788 .align 2 789 .global strtol 790 .syntax unified 791 .arm 793 strtol: 794 .LVL83: 795 .LFB3: 70:lib/vsprintf.c **** if(*cp=='-') 796 .loc 1 70 1 is_stmt 1 view -0 797 .cfi_startproc 798 @ Function supports interworking. 799 @ args = 0, pretend = 0, frame = 0 800 @ frame_needed = 0, uses_anonymous_args = 0 71:lib/vsprintf.c **** return -strtoul(cp+1,endp,base); 801 .loc 1 71 2 view .LVU264 71:lib/vsprintf.c **** return -strtoul(cp+1,endp,base); 802 .loc 1 71 4 is_stmt 0 view .LVU265 803 0000 00C0D0E5 ldrb ip, [r0] @ zero_extendqisi2 804 0004 2D005CE3 cmp ip, #45 73:lib/vsprintf.c **** } 805 .loc 1 73 2 is_stmt 1 view .LVU266 73:lib/vsprintf.c **** } 806 .loc 1 73 9 is_stmt 0 view .LVU267 807 0008 FEFFFF1A bne strtoul 808 .LVL84: 809 .L103: 810 .LBB5: 811 .LBI5: 69:lib/vsprintf.c **** { 812 .loc 1 69 6 is_stmt 1 view .LVU268 813 .LBB6: 72:lib/vsprintf.c **** return strtoul(cp,endp,base); 814 .loc 1 72 3 view .LVU269 815 .LBE6: 816 .LBE5: 70:lib/vsprintf.c **** if(*cp=='-') 817 .loc 1 70 1 is_stmt 0 view .LVU270 818 000c 10402DE9 push {r4, lr} 819 .LCFI11: 820 .cfi_def_cfa_offset 8 821 .cfi_offset 4, -8 822 .cfi_offset 14, -4 823 .LBB9: 824 .LBB7: 72:lib/vsprintf.c **** return strtoul(cp,endp,base); 825 .loc 1 72 11 view .LVU271 826 0010 010080E2 add r0, r0, #1 827 .LVL85: 72:lib/vsprintf.c **** return strtoul(cp,endp,base); 828 .loc 1 72 11 view .LVU272 829 0014 FEFFFFEB bl strtoul 830 .LVL86: 72:lib/vsprintf.c **** return strtoul(cp,endp,base); 831 .loc 1 72 11 view .LVU273 832 .LBE7: 833 .LBE9: 74:lib/vsprintf.c **** 834 .loc 1 74 1 view .LVU274 835 0018 1040BDE8 pop {r4, lr} 836 .LCFI12: 837 .cfi_restore 14 838 .cfi_restore 4 839 .cfi_def_cfa_offset 0 840 .LBB10: 841 .LBB8: 72:lib/vsprintf.c **** return strtoul(cp,endp,base); 842 .loc 1 72 10 view .LVU275 843 001c 000060E2 rsb r0, r0, #0 844 .LVL87: 72:lib/vsprintf.c **** return strtoul(cp,endp,base); 845 .loc 1 72 10 view .LVU276 846 .LBE8: 847 .LBE10: 74:lib/vsprintf.c **** 848 .loc 1 74 1 view .LVU277 849 0020 1EFF2FE1 bx lr 850 .cfi_endproc 851 .LFE3: 853 .section .text.strtoull,"ax",%progbits 854 .align 2 855 .global strtoull 856 .syntax unified 857 .arm 859 strtoull: 860 .LVL88: 861 .LFB4: 84:lib/vsprintf.c **** unsigned long long result = 0,value; 862 .loc 1 84 1 is_stmt 1 view -0 863 .cfi_startproc 864 @ Function supports interworking. 865 @ args = 0, pretend = 0, frame = 0 866 @ frame_needed = 0, uses_anonymous_args = 0 85:lib/vsprintf.c **** 867 .loc 1 85 2 view .LVU279 87:lib/vsprintf.c **** base = 10; 868 .loc 1 87 2 view .LVU280 84:lib/vsprintf.c **** unsigned long long result = 0,value; 869 .loc 1 84 1 is_stmt 0 view .LVU281 870 0000 F0412DE9 push {r4, r5, r6, r7, r8, lr} 871 .LCFI13: 872 .cfi_def_cfa_offset 24 873 .cfi_offset 4, -24 874 .cfi_offset 5, -20 875 .cfi_offset 6, -16 876 .cfi_offset 7, -12 877 .cfi_offset 8, -8 878 .cfi_offset 14, -4 87:lib/vsprintf.c **** base = 10; 879 .loc 1 87 5 view .LVU282 880 0004 000052E3 cmp r2, #0 84:lib/vsprintf.c **** unsigned long long result = 0,value; 881 .loc 1 84 1 view .LVU283 882 0008 0040A0E1 mov r4, r0 883 000c 0160A0E1 mov r6, r1 89:lib/vsprintf.c **** base = 8; 884 .loc 1 89 7 view .LVU284 885 0010 0030D0E5 ldrb r3, [r0] @ zero_extendqisi2 886 0014 D4709FE5 ldr r7, .L130 87:lib/vsprintf.c **** base = 10; 887 .loc 1 87 5 view .LVU285 888 0018 1000001A bne .L107 88:lib/vsprintf.c **** if (*cp == '0') { 889 .loc 1 88 3 is_stmt 1 view .LVU286 890 .LVL89: 89:lib/vsprintf.c **** base = 8; 891 .loc 1 89 3 view .LVU287 89:lib/vsprintf.c **** base = 8; 892 .loc 1 89 6 is_stmt 0 view .LVU288 893 001c 300053E3 cmp r3, #48 88:lib/vsprintf.c **** if (*cp == '0') { 894 .loc 1 88 8 view .LVU289 895 0020 0A20A013 movne r2, #10 89:lib/vsprintf.c **** base = 8; 896 .loc 1 89 6 view .LVU290 897 0024 0A00001A bne .L108 90:lib/vsprintf.c **** cp++; 898 .loc 1 90 4 is_stmt 1 view .LVU291 899 .LVL90: 91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 900 .loc 1 91 4 view .LVU292 91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 901 .loc 1 91 6 is_stmt 0 view .LVU293 902 0028 012080E2 add r2, r0, #1 903 .LVL91: 92:lib/vsprintf.c **** cp++; 904 .loc 1 92 4 is_stmt 1 view .LVU294 92:lib/vsprintf.c **** cp++; 905 .loc 1 92 9 is_stmt 0 view .LVU295 906 002c 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2 907 0030 FEFFFFEB bl __toupper 908 .LVL92: 92:lib/vsprintf.c **** cp++; 909 .loc 1 92 7 view .LVU296 910 0034 580050E3 cmp r0, #88 911 0038 2900001A bne .L119 92:lib/vsprintf.c **** cp++; 912 .loc 1 92 33 discriminator 1 view .LVU297 913 003c 0230D4E5 ldrb r3, [r4, #2] @ zero_extendqisi2 92:lib/vsprintf.c **** cp++; 914 .loc 1 92 30 discriminator 1 view .LVU298 915 0040 0330D7E7 ldrb r3, [r7, r3] @ zero_extendqisi2 916 0044 440013E3 tst r3, #68 917 0048 2500000A beq .L119 918 .LVL93: 919 .L109: 93:lib/vsprintf.c **** base = 16; 920 .loc 1 93 5 is_stmt 1 view .LVU299 94:lib/vsprintf.c **** } 921 .loc 1 94 10 is_stmt 0 view .LVU300 922 004c 1020A0E3 mov r2, #16 93:lib/vsprintf.c **** base = 16; 923 .loc 1 93 7 view .LVU301 924 0050 024084E2 add r4, r4, #2 925 .LVL94: 94:lib/vsprintf.c **** } 926 .loc 1 94 5 is_stmt 1 view .LVU302 927 .L108: 90:lib/vsprintf.c **** cp++; 928 .loc 1 90 9 is_stmt 0 view .LVU303 929 0054 0050A0E3 mov r5, #0 930 0058 0510A0E1 mov r1, r5 931 .LVL95: 90:lib/vsprintf.c **** cp++; 932 .loc 1 90 9 view .LVU304 933 005c 0C0000EA b .L110 934 .LVL96: 935 .L107: 97:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X') 936 .loc 1 97 9 is_stmt 1 view .LVU305 97:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X') 937 .loc 1 97 12 is_stmt 0 view .LVU306 938 0060 100052E3 cmp r2, #16 939 0064 FAFFFF1A bne .L108 98:lib/vsprintf.c **** cp += 2; 940 .loc 1 98 3 is_stmt 1 view .LVU307 98:lib/vsprintf.c **** cp += 2; 941 .loc 1 98 6 is_stmt 0 view .LVU308 942 0068 300053E3 cmp r3, #48 943 006c F8FFFF1A bne .L108 98:lib/vsprintf.c **** cp += 2; 944 .loc 1 98 23 discriminator 1 view .LVU309 945 0070 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2 946 .LVL97: 98:lib/vsprintf.c **** cp += 2; 947 .loc 1 98 23 discriminator 1 view .LVU310 948 0074 FEFFFFEB bl __toupper 949 .LVL98: 98:lib/vsprintf.c **** cp += 2; 950 .loc 1 98 20 discriminator 1 view .LVU311 951 0078 580050E3 cmp r0, #88 952 007c F4FFFF1A bne .L108 953 0080 F1FFFFEA b .L109 954 .LVL99: 955 .L115: 103:lib/vsprintf.c **** cp++; 956 .loc 1 103 3 is_stmt 1 view .LVU312 103:lib/vsprintf.c **** cp++; 957 .loc 1 103 18 is_stmt 0 view .LVU313 958 0084 92C583E0 umull ip, r3, r2, r5 959 0088 923123E0 mla r3, r2, r1, r3 103:lib/vsprintf.c **** cp++; 960 .loc 1 103 10 view .LVU314 961 008c 00509CE0 adds r5, ip, r0 962 .LVL100: 103:lib/vsprintf.c **** cp++; 963 .loc 1 103 10 view .LVU315 964 0090 0E10A3E0 adc r1, r3, lr 965 .LVL101: 104:lib/vsprintf.c **** } 966 .loc 1 104 3 is_stmt 1 view .LVU316 967 .L110: 104:lib/vsprintf.c **** } 968 .loc 1 104 3 is_stmt 0 view .LVU317 969 0094 0480A0E1 mov r8, r4 970 .LVL102: 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 971 .loc 1 101 23 is_stmt 1 view .LVU318 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 972 .loc 1 101 9 is_stmt 0 view .LVU319 973 0098 0100D4E4 ldrb r0, [r4], #1 @ zero_extendqisi2 974 009c 0030D7E7 ldrb r3, [r7, r0] @ zero_extendqisi2 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 975 .loc 1 101 23 view .LVU320 976 00a0 440013E3 tst r3, #68 977 00a4 0900000A beq .L111 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 978 .loc 1 101 58 discriminator 1 view .LVU321 979 00a8 040013E3 tst r3, #4 980 00ac 30004012 subne r0, r0, #48 981 00b0 0200001A bne .L113 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 982 .loc 1 101 58 discriminator 3 view .LVU322 983 00b4 020013E3 tst r3, #2 102:lib/vsprintf.c **** result = result*base + value; 984 .loc 1 102 8 discriminator 5 view .LVU323 985 00b8 FEFFFF1B blne __toupper 986 .LVL103: 987 .L114: 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 988 .loc 1 101 58 discriminator 6 view .LVU324 989 00bc 370040E2 sub r0, r0, #55 990 .L113: 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 991 .loc 1 101 33 discriminator 9 view .LVU325 992 00c0 C0EFA0E1 asr lr, r0, #31 993 .LVL104: 101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) { 994 .loc 1 101 23 discriminator 9 view .LVU326 995 00c4 020050E1 cmp r0, r2 996 00c8 0030DEE2 sbcs r3, lr, #0 997 00cc ECFFFF3A bcc .L115 998 .LVL105: 999 .L111: 106:lib/vsprintf.c **** *endp = (char *)cp; 1000 .loc 1 106 2 is_stmt 1 view .LVU327 106:lib/vsprintf.c **** *endp = (char *)cp; 1001 .loc 1 106 5 is_stmt 0 view .LVU328 1002 00d0 000056E3 cmp r6, #0 107:lib/vsprintf.c **** return result; 1003 .loc 1 107 3 is_stmt 1 view .LVU329 109:lib/vsprintf.c **** 1004 .loc 1 109 1 is_stmt 0 view .LVU330 1005 00d4 0500A0E1 mov r0, r5 107:lib/vsprintf.c **** return result; 1006 .loc 1 107 9 view .LVU331 1007 00d8 00808615 strne r8, [r6] 108:lib/vsprintf.c **** } 1008 .loc 1 108 2 is_stmt 1 view .LVU332 109:lib/vsprintf.c **** 1009 .loc 1 109 1 is_stmt 0 view .LVU333 1010 00dc F041BDE8 pop {r4, r5, r6, r7, r8, lr} 1011 .LCFI14: 1012 .cfi_remember_state 1013 .cfi_restore 14 1014 .cfi_restore 8 1015 .cfi_restore 7 1016 .cfi_restore 6 1017 .cfi_restore 5 1018 .cfi_restore 4 1019 .cfi_def_cfa_offset 0 1020 .LVL106: 109:lib/vsprintf.c **** 1021 .loc 1 109 1 view .LVU334 1022 00e0 1EFF2FE1 bx lr 1023 .LVL107: 1024 .L119: 1025 .LCFI15: 1026 .cfi_restore_state 91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { 1027 .loc 1 91 6 view .LVU335 1028 00e4 0240A0E1 mov r4, r2 90:lib/vsprintf.c **** cp++; 1029 .loc 1 90 9 view .LVU336 1030 00e8 0820A0E3 mov r2, #8 1031 .LVL108: 90:lib/vsprintf.c **** cp++; 1032 .loc 1 90 9 view .LVU337 1033 00ec D8FFFFEA b .L108 1034 .L131: 1035 .align 2 1036 .L130: 1037 00f0 00000000 .word _ctype 1038 .cfi_endproc 1039 .LFE4: 1041 .section .text.strtoll,"ax",%progbits 1042 .align 2 1043 .global strtoll 1044 .syntax unified 1045 .arm 1047 strtoll: 1048 .LVL109: 1049 .LFB5: 119:lib/vsprintf.c **** if(*cp=='-') 1050 .loc 1 119 1 is_stmt 1 view -0 1051 .cfi_startproc 1052 @ Function supports interworking. 1053 @ args = 0, pretend = 0, frame = 0 1054 @ frame_needed = 0, uses_anonymous_args = 0 120:lib/vsprintf.c **** return -strtoull(cp+1,endp,base); 1055 .loc 1 120 2 view .LVU339 120:lib/vsprintf.c **** return -strtoull(cp+1,endp,base); 1056 .loc 1 120 4 is_stmt 0 view .LVU340 1057 0000 00C0D0E5 ldrb ip, [r0] @ zero_extendqisi2 1058 0004 2D005CE3 cmp ip, #45 122:lib/vsprintf.c **** } 1059 .loc 1 122 2 is_stmt 1 view .LVU341 122:lib/vsprintf.c **** } 1060 .loc 1 122 9 is_stmt 0 view .LVU342 1061 0008 FEFFFF1A bne strtoull 1062 .LVL110: 1063 .L136: 1064 .LBB13: 1065 .LBI13: 118:lib/vsprintf.c **** { 1066 .loc 1 118 11 is_stmt 1 view .LVU343 1067 .LBB14: 121:lib/vsprintf.c **** return strtoull(cp,endp,base); 1068 .loc 1 121 3 view .LVU344 1069 .LBE14: 1070 .LBE13: 119:lib/vsprintf.c **** if(*cp=='-') 1071 .loc 1 119 1 is_stmt 0 view .LVU345 1072 000c 10402DE9 push {r4, lr} 1073 .LCFI16: 1074 .cfi_def_cfa_offset 8 1075 .cfi_offset 4, -8 1076 .cfi_offset 14, -4 1077 .LBB16: 1078 .LBB15: 121:lib/vsprintf.c **** return strtoull(cp,endp,base); 1079 .loc 1 121 11 view .LVU346 1080 0010 010080E2 add r0, r0, #1 1081 .LVL111: 121:lib/vsprintf.c **** return strtoull(cp,endp,base); 1082 .loc 1 121 11 view .LVU347 1083 0014 FEFFFFEB bl strtoull 1084 .LVL112: 121:lib/vsprintf.c **** return strtoull(cp,endp,base); 1085 .loc 1 121 10 view .LVU348 1086 0018 000070E2 rsbs r0, r0, #0 1087 001c 0010E1E2 rsc r1, r1, #0 1088 .LVL113: 121:lib/vsprintf.c **** return strtoull(cp,endp,base); 1089 .loc 1 121 10 view .LVU349 1090 .LBE15: 1091 .LBE16: 123:lib/vsprintf.c **** 1092 .loc 1 123 1 view .LVU350 1093 0020 1040BDE8 pop {r4, lr} 1094 .LCFI17: 1095 .cfi_restore 14 1096 .cfi_restore 4 1097 .cfi_def_cfa_offset 0 1098 0024 1EFF2FE1 bx lr 1099 .cfi_endproc 1100 .LFE5: 1102 .section .text.vsnprintf,"ax",%progbits 1103 .align 2 1104 .global vsnprintf 1105 .syntax unified 1106 .arm 1108 vsnprintf: 1109 .LVL114: 1110 .LFB8: 234:lib/vsprintf.c **** 235:lib/vsprintf.c **** /** 236:lib/vsprintf.c **** * vsnprintf - Format a string and place it in a buffer 237:lib/vsprintf.c **** * @buf: The buffer to place the result into 238:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space 239:lib/vsprintf.c **** * @fmt: The format string to use 240:lib/vsprintf.c **** * @args: Arguments for the format string 241:lib/vsprintf.c **** * 242:lib/vsprintf.c **** * The return value is the number of characters which would 243:lib/vsprintf.c **** * be generated for the given input, excluding the trailing 244:lib/vsprintf.c **** * '\0', as per ISO C99. If you want to have the exact 245:lib/vsprintf.c **** * number of characters written into @buf as return value 246:lib/vsprintf.c **** * (not including the trailing '\0'), use vscnprintf. If the 247:lib/vsprintf.c **** * return is greater than or equal to @size, the resulting 248:lib/vsprintf.c **** * string is truncated. 249:lib/vsprintf.c **** * 250:lib/vsprintf.c **** * Call this function if you are already dealing with a va_list. 251:lib/vsprintf.c **** * You probably want snprintf instead. 252:lib/vsprintf.c **** */ 253:lib/vsprintf.c **** int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) 254:lib/vsprintf.c **** { 1111 .loc 1 254 1 is_stmt 1 view -0 1112 .cfi_startproc 1113 @ Function supports interworking. 1114 @ args = 0, pretend = 0, frame = 8 1115 @ frame_needed = 0, uses_anonymous_args = 0 1116 .loc 1 254 1 is_stmt 0 view .LVU352 1117 0000 F04F2DE9 push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 1118 .LCFI18: 1119 .cfi_def_cfa_offset 36 1120 .cfi_offset 4, -36 1121 .cfi_offset 5, -32 1122 .cfi_offset 6, -28 1123 .cfi_offset 7, -24 1124 .cfi_offset 8, -20 1125 .cfi_offset 9, -16 1126 .cfi_offset 10, -12 1127 .cfi_offset 11, -8 1128 .cfi_offset 14, -4 255:lib/vsprintf.c **** int len; 256:lib/vsprintf.c **** unsigned long long num; 257:lib/vsprintf.c **** int i, base; 258:lib/vsprintf.c **** char *str, *end, c; 259:lib/vsprintf.c **** const char *s; 260:lib/vsprintf.c **** 261:lib/vsprintf.c **** int flags; /* flags to number() */ 262:lib/vsprintf.c **** 263:lib/vsprintf.c **** int field_width; /* width of output field */ 264:lib/vsprintf.c **** int precision; /* min. # of digits for integers; max 265:lib/vsprintf.c **** number of chars for from string */ 266:lib/vsprintf.c **** int qualifier; /* 'h', 'l', or 'L' for integer fields */ 267:lib/vsprintf.c **** /* 'z' support added 23/7/1999 S.H. */ 268:lib/vsprintf.c **** /* 'z' changed to 'Z' --davidm 1/25/99 */ 269:lib/vsprintf.c **** /* 't' added for ptrdiff_t */ 270:lib/vsprintf.c **** 271:lib/vsprintf.c **** /* Reject out-of-range values early */ 272:lib/vsprintf.c **** if ((int) size < 0) { 1129 .loc 1 272 5 view .LVU353 1130 0004 009051E2 subs r9, r1, #0 254:lib/vsprintf.c **** int len; 1131 .loc 1 254 1 view .LVU354 1132 0008 1CD04DE2 sub sp, sp, #28 1133 .LCFI19: 1134 .cfi_def_cfa_offset 64 273:lib/vsprintf.c **** return 0; 1135 .loc 1 273 10 view .LVU355 1136 000c 0000A0B3 movlt r0, #0 1137 .LVL115: 254:lib/vsprintf.c **** int len; 1138 .loc 1 254 1 view .LVU356 1139 0010 14208DE5 str r2, [sp, #20] 1140 .LVL116: 255:lib/vsprintf.c **** int len; 1141 .loc 1 255 2 is_stmt 1 view .LVU357 256:lib/vsprintf.c **** int i, base; 1142 .loc 1 256 2 view .LVU358 257:lib/vsprintf.c **** char *str, *end, c; 1143 .loc 1 257 2 view .LVU359 258:lib/vsprintf.c **** const char *s; 1144 .loc 1 258 2 view .LVU360 259:lib/vsprintf.c **** 1145 .loc 1 259 2 view .LVU361 261:lib/vsprintf.c **** 1146 .loc 1 261 2 view .LVU362 263:lib/vsprintf.c **** int precision; /* min. # of digits for integers; max 1147 .loc 1 263 2 view .LVU363 264:lib/vsprintf.c **** number of chars for from string */ 1148 .loc 1 264 2 view .LVU364 266:lib/vsprintf.c **** /* 'z' support added 23/7/1999 S.H. */ 1149 .loc 1 266 2 view .LVU365 272:lib/vsprintf.c **** return 0; 1150 .loc 1 272 2 view .LVU366 272:lib/vsprintf.c **** return 0; 1151 .loc 1 272 5 is_stmt 0 view .LVU367 1152 0014 120000BA blt .L139 274:lib/vsprintf.c **** } 275:lib/vsprintf.c **** 276:lib/vsprintf.c **** str = buf; 277:lib/vsprintf.c **** end = buf + size - 1; 1153 .loc 1 277 19 view .LVU368 1154 0018 017049E2 sub r7, r9, #1 1155 .loc 1 277 6 view .LVU369 1156 001c 077080E0 add r7, r0, r7 1157 0020 0340A0E1 mov r4, r3 1158 .LVL117: 276:lib/vsprintf.c **** end = buf + size - 1; 1159 .loc 1 276 2 is_stmt 1 view .LVU370 1160 .loc 1 277 2 view .LVU371 278:lib/vsprintf.c **** 279:lib/vsprintf.c **** if (end < buf - 1) { 1161 .loc 1 279 2 view .LVU372 1162 .loc 1 279 16 is_stmt 0 view .LVU373 1163 0024 013040E2 sub r3, r0, #1 1164 .LVL118: 1165 .loc 1 279 5 view .LVU374 1166 0028 030057E1 cmp r7, r3 1167 002c 0080A0E1 mov r8, r0 280:lib/vsprintf.c **** end = ((void *) -1); 1168 .loc 1 280 7 view .LVU375 1169 0030 0070E033 mvncc r7, #0 1170 .LVL119: 1171 .loc 1 280 7 view .LVU376 1172 0034 0050A0E1 mov r5, r0 281:lib/vsprintf.c **** size = end - buf + 1; 1173 .loc 1 281 20 view .LVU377 1174 0038 00906032 rsbcc r9, r0, #0 1175 .LVL120: 1176 .L216: 282:lib/vsprintf.c **** } 283:lib/vsprintf.c **** 284:lib/vsprintf.c **** for (; *fmt ; ++fmt) { 1177 .loc 1 284 9 is_stmt 1 discriminator 1 view .LVU378 1178 003c 14109DE5 ldr r1, [sp, #20] 1179 0040 0030D1E5 ldrb r3, [r1] @ zero_extendqisi2 1180 0044 000053E3 cmp r3, #0 1181 0048 0800001A bne .L217 285:lib/vsprintf.c **** if (*fmt != '%') { 286:lib/vsprintf.c **** if (str <= end) 287:lib/vsprintf.c **** *str = *fmt; 288:lib/vsprintf.c **** ++str; 289:lib/vsprintf.c **** continue; 290:lib/vsprintf.c **** } 291:lib/vsprintf.c **** 292:lib/vsprintf.c **** /* process flags */ 293:lib/vsprintf.c **** flags = 0; 294:lib/vsprintf.c **** repeat: 295:lib/vsprintf.c **** ++fmt; /* this also skips first '%' */ 296:lib/vsprintf.c **** switch (*fmt) { 297:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat; 298:lib/vsprintf.c **** case '+': flags |= PLUS; goto repeat; 299:lib/vsprintf.c **** case ' ': flags |= SPACE; goto repeat; 300:lib/vsprintf.c **** case '#': flags |= SPECIAL; goto repeat; 301:lib/vsprintf.c **** case '0': flags |= ZEROPAD; goto repeat; 302:lib/vsprintf.c **** } 303:lib/vsprintf.c **** 304:lib/vsprintf.c **** /* get field width */ 305:lib/vsprintf.c **** field_width = -1; 306:lib/vsprintf.c **** if (isdigit(*fmt)) 307:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 308:lib/vsprintf.c **** else if (*fmt == '*') { 309:lib/vsprintf.c **** ++fmt; 310:lib/vsprintf.c **** /* it's the next argument */ 311:lib/vsprintf.c **** field_width = va_arg(args, int); 312:lib/vsprintf.c **** if (field_width < 0) { 313:lib/vsprintf.c **** field_width = -field_width; 314:lib/vsprintf.c **** flags |= LEFT; 315:lib/vsprintf.c **** } 316:lib/vsprintf.c **** } 317:lib/vsprintf.c **** 318:lib/vsprintf.c **** /* get the precision */ 319:lib/vsprintf.c **** precision = -1; 320:lib/vsprintf.c **** if (*fmt == '.') { 321:lib/vsprintf.c **** ++fmt; 322:lib/vsprintf.c **** if (isdigit(*fmt)) 323:lib/vsprintf.c **** precision = skip_atoi(&fmt); 324:lib/vsprintf.c **** else if (*fmt == '*') { 325:lib/vsprintf.c **** ++fmt; 326:lib/vsprintf.c **** /* it's the next argument */ 327:lib/vsprintf.c **** precision = va_arg(args, int); 328:lib/vsprintf.c **** } 329:lib/vsprintf.c **** if (precision < 0) 330:lib/vsprintf.c **** precision = 0; 331:lib/vsprintf.c **** } 332:lib/vsprintf.c **** 333:lib/vsprintf.c **** /* get the conversion qualifier */ 334:lib/vsprintf.c **** qualifier = -1; 335:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || 336:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 337:lib/vsprintf.c **** qualifier = *fmt; 338:lib/vsprintf.c **** ++fmt; 339:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') { 340:lib/vsprintf.c **** qualifier = 'L'; 341:lib/vsprintf.c **** ++fmt; 342:lib/vsprintf.c **** } 343:lib/vsprintf.c **** } 344:lib/vsprintf.c **** 345:lib/vsprintf.c **** /* default base */ 346:lib/vsprintf.c **** base = 10; 347:lib/vsprintf.c **** 348:lib/vsprintf.c **** switch (*fmt) { 349:lib/vsprintf.c **** case 'c': 350:lib/vsprintf.c **** if (!(flags & LEFT)) { 351:lib/vsprintf.c **** while (--field_width > 0) { 352:lib/vsprintf.c **** if (str <= end) 353:lib/vsprintf.c **** *str = ' '; 354:lib/vsprintf.c **** ++str; 355:lib/vsprintf.c **** } 356:lib/vsprintf.c **** } 357:lib/vsprintf.c **** c = (unsigned char) va_arg(args, int); 358:lib/vsprintf.c **** if (str <= end) 359:lib/vsprintf.c **** *str = c; 360:lib/vsprintf.c **** ++str; 361:lib/vsprintf.c **** while (--field_width > 0) { 362:lib/vsprintf.c **** if (str <= end) 363:lib/vsprintf.c **** *str = ' '; 364:lib/vsprintf.c **** ++str; 365:lib/vsprintf.c **** } 366:lib/vsprintf.c **** continue; 367:lib/vsprintf.c **** 368:lib/vsprintf.c **** case 's': 369:lib/vsprintf.c **** s = va_arg(args, char *); 370:lib/vsprintf.c **** 371:lib/vsprintf.c **** len = strnlen(s, precision); 372:lib/vsprintf.c **** 373:lib/vsprintf.c **** if (!(flags & LEFT)) { 374:lib/vsprintf.c **** while (len < field_width--) { 375:lib/vsprintf.c **** if (str <= end) 376:lib/vsprintf.c **** *str = ' '; 377:lib/vsprintf.c **** ++str; 378:lib/vsprintf.c **** } 379:lib/vsprintf.c **** } 380:lib/vsprintf.c **** for (i = 0; i < len; ++i) { 381:lib/vsprintf.c **** if (str <= end) 382:lib/vsprintf.c **** *str = *s; 383:lib/vsprintf.c **** ++str; ++s; 384:lib/vsprintf.c **** } 385:lib/vsprintf.c **** while (len < field_width--) { 386:lib/vsprintf.c **** if (str <= end) 387:lib/vsprintf.c **** *str = ' '; 388:lib/vsprintf.c **** ++str; 389:lib/vsprintf.c **** } 390:lib/vsprintf.c **** continue; 391:lib/vsprintf.c **** 392:lib/vsprintf.c **** case 'p': 393:lib/vsprintf.c **** if (field_width == -1) { 394:lib/vsprintf.c **** field_width = 2*sizeof(void *); 395:lib/vsprintf.c **** flags |= ZEROPAD; 396:lib/vsprintf.c **** } 397:lib/vsprintf.c **** str = number(str, end, 398:lib/vsprintf.c **** (unsigned long) va_arg(args, void *), 399:lib/vsprintf.c **** 16, field_width, precision, flags); 400:lib/vsprintf.c **** continue; 401:lib/vsprintf.c **** 402:lib/vsprintf.c **** 403:lib/vsprintf.c **** case 'n': 404:lib/vsprintf.c **** /* FIXME: 405:lib/vsprintf.c **** * What does C99 say about the overflow case here? */ 406:lib/vsprintf.c **** if (qualifier == 'l') { 407:lib/vsprintf.c **** long * ip = va_arg(args, long *); 408:lib/vsprintf.c **** *ip = (str - buf); 409:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') { 410:lib/vsprintf.c **** size_t * ip = va_arg(args, size_t *); 411:lib/vsprintf.c **** *ip = (str - buf); 412:lib/vsprintf.c **** } else { 413:lib/vsprintf.c **** int * ip = va_arg(args, int *); 414:lib/vsprintf.c **** *ip = (str - buf); 415:lib/vsprintf.c **** } 416:lib/vsprintf.c **** continue; 417:lib/vsprintf.c **** 418:lib/vsprintf.c **** case '%': 419:lib/vsprintf.c **** if (str <= end) 420:lib/vsprintf.c **** *str = '%'; 421:lib/vsprintf.c **** ++str; 422:lib/vsprintf.c **** continue; 423:lib/vsprintf.c **** 424:lib/vsprintf.c **** /* integer number formats - set up the flags and "break" */ 425:lib/vsprintf.c **** case 'o': 426:lib/vsprintf.c **** base = 8; 427:lib/vsprintf.c **** break; 428:lib/vsprintf.c **** 429:lib/vsprintf.c **** case 'X': 430:lib/vsprintf.c **** flags |= LARGE; 431:lib/vsprintf.c **** case 'x': 432:lib/vsprintf.c **** base = 16; 433:lib/vsprintf.c **** break; 434:lib/vsprintf.c **** 435:lib/vsprintf.c **** case 'd': 436:lib/vsprintf.c **** case 'i': 437:lib/vsprintf.c **** flags |= SIGN; 438:lib/vsprintf.c **** case 'u': 439:lib/vsprintf.c **** break; 440:lib/vsprintf.c **** 441:lib/vsprintf.c **** default: 442:lib/vsprintf.c **** if (str <= end) 443:lib/vsprintf.c **** *str = '%'; 444:lib/vsprintf.c **** ++str; 445:lib/vsprintf.c **** if (*fmt) { 446:lib/vsprintf.c **** if (str <= end) 447:lib/vsprintf.c **** *str = *fmt; 448:lib/vsprintf.c **** ++str; 449:lib/vsprintf.c **** } else { 450:lib/vsprintf.c **** --fmt; 451:lib/vsprintf.c **** } 452:lib/vsprintf.c **** continue; 453:lib/vsprintf.c **** } 454:lib/vsprintf.c **** if (qualifier == 'L') 455:lib/vsprintf.c **** num = va_arg(args, long long); 456:lib/vsprintf.c **** else if (qualifier == 'l') { 457:lib/vsprintf.c **** num = va_arg(args, unsigned long); 458:lib/vsprintf.c **** if (flags & SIGN) 459:lib/vsprintf.c **** num = (signed long) num; 460:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') { 461:lib/vsprintf.c **** num = va_arg(args, size_t); 462:lib/vsprintf.c **** } else if (qualifier == 't') { 463:lib/vsprintf.c **** num = va_arg(args, long); 464:lib/vsprintf.c **** } else if (qualifier == 'h') { 465:lib/vsprintf.c **** num = (unsigned short) va_arg(args, int); 466:lib/vsprintf.c **** if (flags & SIGN) 467:lib/vsprintf.c **** num = (signed short) num; 468:lib/vsprintf.c **** } else { 469:lib/vsprintf.c **** num = va_arg(args, unsigned int); 470:lib/vsprintf.c **** if (flags & SIGN) 471:lib/vsprintf.c **** num = (signed int) num; 472:lib/vsprintf.c **** } 473:lib/vsprintf.c **** str = number(str, end, num, base, 474:lib/vsprintf.c **** field_width, precision, flags); 475:lib/vsprintf.c **** } 476:lib/vsprintf.c **** if (str <= end) 1182 .loc 1 476 2 view .LVU379 1183 .loc 1 476 5 is_stmt 0 view .LVU380 1184 004c 070055E1 cmp r5, r7 477:lib/vsprintf.c **** *str = '\0'; 1185 .loc 1 477 8 view .LVU381 1186 0050 0030C595 strbls r3, [r5] 476:lib/vsprintf.c **** *str = '\0'; 1187 .loc 1 476 5 view .LVU382 1188 0054 0100009A bls .L219 478:lib/vsprintf.c **** else if (size > 0) 1189 .loc 1 478 7 is_stmt 1 view .LVU383 1190 .loc 1 478 10 is_stmt 0 view .LVU384 1191 0058 000059E3 cmp r9, #0 479:lib/vsprintf.c **** /* don't write out a null byte if the buf size is zero */ 480:lib/vsprintf.c **** *end = '\0'; 1192 .loc 1 480 3 is_stmt 1 view .LVU385 1193 .loc 1 480 8 is_stmt 0 view .LVU386 1194 005c 0030C715 strbne r3, [r7] 1195 .L219: 481:lib/vsprintf.c **** /* the trailing null byte doesn't count towards the total 482:lib/vsprintf.c **** * ++str; 483:lib/vsprintf.c **** */ 484:lib/vsprintf.c **** return str-buf; 1196 .loc 1 484 2 is_stmt 1 view .LVU387 1197 .loc 1 484 12 is_stmt 0 view .LVU388 1198 0060 080045E0 sub r0, r5, r8 1199 .LVL121: 1200 .L139: 485:lib/vsprintf.c **** } 1201 .loc 1 485 1 view .LVU389 1202 0064 1CD08DE2 add sp, sp, #28 1203 .LCFI20: 1204 .cfi_remember_state 1205 .cfi_def_cfa_offset 36 1206 @ sp needed 1207 0068 F04FBDE8 pop {r4, r5, r6, r7, r8, r9, r10, fp, lr} 1208 .LCFI21: 1209 .cfi_restore 14 1210 .cfi_restore 11 1211 .cfi_restore 10 1212 .cfi_restore 9 1213 .cfi_restore 8 1214 .cfi_restore 7 1215 .cfi_restore 6 1216 .cfi_restore 5 1217 .cfi_restore 4 1218 .cfi_def_cfa_offset 0 1219 006c 1EFF2FE1 bx lr 1220 .LVL122: 1221 .L217: 1222 .LCFI22: 1223 .cfi_restore_state 285:lib/vsprintf.c **** if (str <= end) 1224 .loc 1 285 3 is_stmt 1 view .LVU390 285:lib/vsprintf.c **** if (str <= end) 1225 .loc 1 285 6 is_stmt 0 view .LVU391 1226 0070 250053E3 cmp r3, #37 1227 0074 0300000A beq .L221 286:lib/vsprintf.c **** *str = *fmt; 1228 .loc 1 286 4 is_stmt 1 view .LVU392 286:lib/vsprintf.c **** *str = *fmt; 1229 .loc 1 286 7 is_stmt 0 view .LVU393 1230 0078 070055E1 cmp r5, r7 287:lib/vsprintf.c **** ++str; 1231 .loc 1 287 10 view .LVU394 1232 007c 0030C595 strbls r3, [r5] 1233 .LVL123: 1234 .L201: 421:lib/vsprintf.c **** continue; 1235 .loc 1 421 5 is_stmt 1 view .LVU395 1236 0080 010085E2 add r0, r5, #1 1237 .LVL124: 422:lib/vsprintf.c **** 1238 .loc 1 422 5 view .LVU396 1239 0084 C80000EA b .L144 1240 .L221: 293:lib/vsprintf.c **** repeat: 1241 .loc 1 293 9 is_stmt 0 view .LVU397 1242 0088 00A0A0E3 mov r10, #0 1243 008c 0C0000EA b .L142 1244 .LVL125: 1245 .L146: 296:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat; 1246 .loc 1 296 4 view .LVU398 1247 0090 2D0052E3 cmp r2, #45 1248 0094 0800000A beq .L150 1249 0098 300052E3 cmp r2, #48 1250 009c 5500000A beq .L151 1251 00a0 14008DE5 str r0, [sp, #20] 305:lib/vsprintf.c **** if (isdigit(*fmt)) 1252 .loc 1 305 3 is_stmt 1 view .LVU399 1253 .LVL126: 306:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 1254 .loc 1 306 3 view .LVU400 306:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 1255 .loc 1 306 7 is_stmt 0 view .LVU401 1256 00a4 F4149FE5 ldr r1, .L241 306:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 1257 .loc 1 306 6 view .LVU402 1258 00a8 0220D1E7 ldrb r2, [r1, r2] @ zero_extendqisi2 1259 00ac 040012E3 tst r2, #4 1260 00b0 1100001A bne .L154 1261 .L222: 305:lib/vsprintf.c **** if (isdigit(*fmt)) 1262 .loc 1 305 15 view .LVU403 1263 00b4 0060E0E3 mvn r6, #0 1264 00b8 120000EA b .L155 1265 .LVL127: 1266 .L150: 297:lib/vsprintf.c **** case '+': flags |= PLUS; goto repeat; 1267 .loc 1 297 15 is_stmt 1 view .LVU404 297:lib/vsprintf.c **** case '+': flags |= PLUS; goto repeat; 1268 .loc 1 297 21 is_stmt 0 view .LVU405 1269 00bc 10A08AE3 orr r10, r10, #16 1270 .LVL128: 297:lib/vsprintf.c **** case '+': flags |= PLUS; goto repeat; 1271 .loc 1 297 30 is_stmt 1 view .LVU406 1272 .L153: 295:lib/vsprintf.c **** switch (*fmt) { 1273 .loc 1 295 4 is_stmt 0 view .LVU407 1274 00c0 0010A0E1 mov r1, r0 1275 .LVL129: 1276 .L142: 295:lib/vsprintf.c **** switch (*fmt) { 1277 .loc 1 295 4 is_stmt 1 view .LVU408 296:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat; 1278 .loc 1 296 12 is_stmt 0 view .LVU409 1279 00c4 0120D1E5 ldrb r2, [r1, #1] @ zero_extendqisi2 296:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat; 1280 .loc 1 296 4 view .LVU410 1281 00c8 2B0052E3 cmp r2, #43 295:lib/vsprintf.c **** switch (*fmt) { 1282 .loc 1 295 4 view .LVU411 1283 00cc 010081E2 add r0, r1, #1 296:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat; 1284 .loc 1 296 4 is_stmt 1 view .LVU412 1285 00d0 4200000A beq .L145 1286 00d4 EDFFFF8A bhi .L146 1287 00d8 200052E3 cmp r2, #32 1288 00dc 4100000A beq .L147 1289 00e0 230052E3 cmp r2, #35 1290 00e4 4100000A beq .L148 1291 00e8 14008DE5 str r0, [sp, #20] 305:lib/vsprintf.c **** if (isdigit(*fmt)) 1292 .loc 1 305 3 view .LVU413 1293 .LVL130: 306:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 1294 .loc 1 306 3 view .LVU414 306:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 1295 .loc 1 306 6 is_stmt 0 view .LVU415 1296 00ec AC349FE5 ldr r3, .L241 1297 00f0 0200D3E7 ldrb r0, [r3, r2] @ zero_extendqisi2 1298 00f4 040010E3 tst r0, #4 1299 00f8 4000000A beq .L156 1300 .L154: 307:lib/vsprintf.c **** else if (*fmt == '*') { 1301 .loc 1 307 4 is_stmt 1 view .LVU416 307:lib/vsprintf.c **** else if (*fmt == '*') { 1302 .loc 1 307 18 is_stmt 0 view .LVU417 1303 00fc 14008DE2 add r0, sp, #20 1304 0100 FEFFFFEB bl skip_atoi 1305 .LVL131: 1306 0104 0060A0E1 mov r6, r0 1307 .LVL132: 1308 .L155: 319:lib/vsprintf.c **** if (*fmt == '.') { 1309 .loc 1 319 3 is_stmt 1 view .LVU418 320:lib/vsprintf.c **** ++fmt; 1310 .loc 1 320 3 view .LVU419 320:lib/vsprintf.c **** ++fmt; 1311 .loc 1 320 7 is_stmt 0 view .LVU420 1312 0108 14209DE5 ldr r2, [sp, #20] 320:lib/vsprintf.c **** ++fmt; 1313 .loc 1 320 6 view .LVU421 1314 010c 0010D2E5 ldrb r1, [r2] @ zero_extendqisi2 1315 0110 2E0051E3 cmp r1, #46 319:lib/vsprintf.c **** if (*fmt == '.') { 1316 .loc 1 319 13 view .LVU422 1317 0114 0010E013 mvnne r1, #0 320:lib/vsprintf.c **** ++fmt; 1318 .loc 1 320 6 view .LVU423 1319 0118 0900001A bne .L157 321:lib/vsprintf.c **** if (isdigit(*fmt)) 1320 .loc 1 321 4 is_stmt 1 view .LVU424 1321 011c 011082E2 add r1, r2, #1 1322 0120 14108DE5 str r1, [sp, #20] 322:lib/vsprintf.c **** precision = skip_atoi(&fmt); 1323 .loc 1 322 4 view .LVU425 322:lib/vsprintf.c **** precision = skip_atoi(&fmt); 1324 .loc 1 322 8 is_stmt 0 view .LVU426 1325 0124 0100D2E5 ldrb r0, [r2, #1] @ zero_extendqisi2 1326 0128 70149FE5 ldr r1, .L241 322:lib/vsprintf.c **** precision = skip_atoi(&fmt); 1327 .loc 1 322 7 view .LVU427 1328 012c 0010D1E7 ldrb r1, [r1, r0] @ zero_extendqisi2 1329 0130 041011E2 ands r1, r1, #4 1330 0134 3A00000A beq .L158 323:lib/vsprintf.c **** else if (*fmt == '*') { 1331 .loc 1 323 5 is_stmt 1 view .LVU428 323:lib/vsprintf.c **** else if (*fmt == '*') { 1332 .loc 1 323 17 is_stmt 0 view .LVU429 1333 0138 14008DE2 add r0, sp, #20 1334 013c FEFFFFEB bl skip_atoi 1335 .LVL133: 1336 .L159: 329:lib/vsprintf.c **** precision = 0; 1337 .loc 1 329 4 is_stmt 1 view .LVU430 329:lib/vsprintf.c **** precision = 0; 1338 .loc 1 329 7 is_stmt 0 view .LVU431 1339 0140 C01FC0E1 bic r1, r0, r0, asr #31 1340 .LVL134: 1341 .L157: 334:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || 1342 .loc 1 334 3 is_stmt 1 view .LVU432 335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 1343 .loc 1 335 3 view .LVU433 335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 1344 .loc 1 335 7 is_stmt 0 view .LVU434 1345 0144 14C09DE5 ldr ip, [sp, #20] 1346 0148 0020DCE5 ldrb r2, [ip] @ zero_extendqisi2 335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 1347 .loc 1 335 6 view .LVU435 1348 014c FB0002E2 and r0, r2, #251 1349 0150 680050E3 cmp r0, #104 1350 0154 3800000A beq .L160 335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 1351 .loc 1 335 34 discriminator 1 view .LVU436 1352 0158 4C0052E3 cmp r2, #76 338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') { 1353 .loc 1 338 4 discriminator 1 view .LVU437 1354 015c 01C08C02 addeq ip, ip, #1 335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 1355 .loc 1 335 34 discriminator 1 view .LVU438 1356 0160 3D00000A beq .L162 335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') { 1357 .loc 1 335 49 discriminator 2 view .LVU439 1358 0164 5A0052E3 cmp r2, #90 1359 0168 0400000A beq .L163 336:lib/vsprintf.c **** qualifier = *fmt; 1360 .loc 1 336 18 view .LVU440 1361 016c 7A0052E3 cmp r2, #122 1362 0170 0200000A beq .L163 336:lib/vsprintf.c **** qualifier = *fmt; 1363 .loc 1 336 33 discriminator 1 view .LVU441 1364 0174 740052E3 cmp r2, #116 334:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || 1365 .loc 1 334 13 discriminator 1 view .LVU442 1366 0178 0020E013 mvnne r2, #0 336:lib/vsprintf.c **** qualifier = *fmt; 1367 .loc 1 336 33 discriminator 1 view .LVU443 1368 017c 0100001A bne .L165 1369 .L163: 337:lib/vsprintf.c **** ++fmt; 1370 .loc 1 337 4 is_stmt 1 view .LVU444 1371 .LVL135: 338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') { 1372 .loc 1 338 4 view .LVU445 1373 0180 01C08CE2 add ip, ip, #1 1374 0184 14C08DE5 str ip, [sp, #20] 339:lib/vsprintf.c **** qualifier = 'L'; 1375 .loc 1 339 4 view .LVU446 1376 .LVL136: 1377 .L165: 346:lib/vsprintf.c **** 1378 .loc 1 346 3 view .LVU447 348:lib/vsprintf.c **** case 'c': 1379 .loc 1 348 3 view .LVU448 348:lib/vsprintf.c **** case 'c': 1380 .loc 1 348 11 is_stmt 0 view .LVU449 1381 0188 14C09DE5 ldr ip, [sp, #20] 1382 018c 0000DCE5 ldrb r0, [ip] @ zero_extendqisi2 348:lib/vsprintf.c **** case 'c': 1383 .loc 1 348 3 view .LVU450 1384 0190 780050E3 cmp r0, #120 1385 0194 0600008A bhi .L166 1386 0198 620050E3 cmp r0, #98 1387 019c 3100008A bhi .L167 1388 01a0 250050E3 cmp r0, #37 1389 01a4 D200000A beq .L168 1390 01a8 580050E3 cmp r0, #88 430:lib/vsprintf.c **** case 'x': 1391 .loc 1 430 11 view .LVU451 1392 01ac 40A08A03 orreq r10, r10, #64 1393 .LVL137: 348:lib/vsprintf.c **** case 'c': 1394 .loc 1 348 3 view .LVU452 1395 01b0 D800000A beq .L227 1396 .L166: 442:lib/vsprintf.c **** *str = '%'; 1397 .loc 1 442 5 is_stmt 1 view .LVU453 442:lib/vsprintf.c **** *str = '%'; 1398 .loc 1 442 8 is_stmt 0 view .LVU454 1399 01b4 070055E1 cmp r5, r7 443:lib/vsprintf.c **** ++str; 1400 .loc 1 443 6 is_stmt 1 view .LVU455 443:lib/vsprintf.c **** ++str; 1401 .loc 1 443 11 is_stmt 0 view .LVU456 1402 01b8 2530A093 movls r3, #37 1403 01bc 0030C595 strbls r3, [r5] 444:lib/vsprintf.c **** if (*fmt) { 1404 .loc 1 444 5 is_stmt 1 view .LVU457 445:lib/vsprintf.c **** if (str <= end) 1405 .loc 1 445 9 is_stmt 0 view .LVU458 1406 01c0 0030DCE5 ldrb r3, [ip] @ zero_extendqisi2 445:lib/vsprintf.c **** if (str <= end) 1407 .loc 1 445 8 view .LVU459 1408 01c4 000053E3 cmp r3, #0 444:lib/vsprintf.c **** if (*fmt) { 1409 .loc 1 444 5 view .LVU460 1410 01c8 010085E2 add r0, r5, #1 1411 .LVL138: 445:lib/vsprintf.c **** if (str <= end) 1412 .loc 1 445 5 is_stmt 1 view .LVU461 445:lib/vsprintf.c **** if (str <= end) 1413 .loc 1 445 8 is_stmt 0 view .LVU462 1414 01cc CE00000A beq .L203 446:lib/vsprintf.c **** *str = *fmt; 1415 .loc 1 446 6 is_stmt 1 view .LVU463 446:lib/vsprintf.c **** *str = *fmt; 1416 .loc 1 446 9 is_stmt 0 view .LVU464 1417 01d0 070050E1 cmp r0, r7 447:lib/vsprintf.c **** ++str; 1418 .loc 1 447 7 is_stmt 1 view .LVU465 447:lib/vsprintf.c **** ++str; 1419 .loc 1 447 12 is_stmt 0 view .LVU466 1420 01d4 0130C595 strbls r3, [r5, #1] 448:lib/vsprintf.c **** } else { 1421 .loc 1 448 6 is_stmt 1 view .LVU467 1422 01d8 020085E2 add r0, r5, #2 1423 .LVL139: 448:lib/vsprintf.c **** } else { 1424 .loc 1 448 6 is_stmt 0 view .LVU468 1425 01dc 720000EA b .L144 1426 .LVL140: 1427 .L145: 298:lib/vsprintf.c **** case ' ': flags |= SPACE; goto repeat; 1428 .loc 1 298 15 is_stmt 1 view .LVU469 298:lib/vsprintf.c **** case ' ': flags |= SPACE; goto repeat; 1429 .loc 1 298 21 is_stmt 0 view .LVU470 1430 01e0 04A08AE3 orr r10, r10, #4 1431 .LVL141: 298:lib/vsprintf.c **** case ' ': flags |= SPACE; goto repeat; 1432 .loc 1 298 30 is_stmt 1 view .LVU471 1433 01e4 B5FFFFEA b .L153 1434 .L147: 299:lib/vsprintf.c **** case '#': flags |= SPECIAL; goto repeat; 1435 .loc 1 299 15 view .LVU472 299:lib/vsprintf.c **** case '#': flags |= SPECIAL; goto repeat; 1436 .loc 1 299 21 is_stmt 0 view .LVU473 1437 01e8 08A08AE3 orr r10, r10, #8 1438 .LVL142: 299:lib/vsprintf.c **** case '#': flags |= SPECIAL; goto repeat; 1439 .loc 1 299 31 is_stmt 1 view .LVU474 1440 01ec B3FFFFEA b .L153 1441 .L148: 300:lib/vsprintf.c **** case '0': flags |= ZEROPAD; goto repeat; 1442 .loc 1 300 15 view .LVU475 300:lib/vsprintf.c **** case '0': flags |= ZEROPAD; goto repeat; 1443 .loc 1 300 21 is_stmt 0 view .LVU476 1444 01f0 20A08AE3 orr r10, r10, #32 1445 .LVL143: 300:lib/vsprintf.c **** case '0': flags |= ZEROPAD; goto repeat; 1446 .loc 1 300 33 is_stmt 1 view .LVU477 1447 01f4 B1FFFFEA b .L153 1448 .L151: 301:lib/vsprintf.c **** } 1449 .loc 1 301 15 view .LVU478 301:lib/vsprintf.c **** } 1450 .loc 1 301 21 is_stmt 0 view .LVU479 1451 01f8 01A08AE3 orr r10, r10, #1 1452 .LVL144: 301:lib/vsprintf.c **** } 1453 .loc 1 301 33 is_stmt 1 view .LVU480 1454 01fc AFFFFFEA b .L153 1455 .LVL145: 1456 .L156: 308:lib/vsprintf.c **** ++fmt; 1457 .loc 1 308 8 view .LVU481 308:lib/vsprintf.c **** ++fmt; 1458 .loc 1 308 11 is_stmt 0 view .LVU482 1459 0200 2A0052E3 cmp r2, #42 1460 0204 AAFFFF1A bne .L222 309:lib/vsprintf.c **** /* it's the next argument */ 1461 .loc 1 309 4 is_stmt 1 view .LVU483 311:lib/vsprintf.c **** if (field_width < 0) { 1462 .loc 1 311 16 is_stmt 0 view .LVU484 1463 0208 046094E4 ldr r6, [r4], #4 1464 .LVL146: 309:lib/vsprintf.c **** /* it's the next argument */ 1465 .loc 1 309 4 view .LVU485 1466 020c 021081E2 add r1, r1, #2 312:lib/vsprintf.c **** field_width = -field_width; 1467 .loc 1 312 7 view .LVU486 1468 0210 000056E3 cmp r6, #0 309:lib/vsprintf.c **** /* it's the next argument */ 1469 .loc 1 309 4 view .LVU487 1470 0214 14108DE5 str r1, [sp, #20] 311:lib/vsprintf.c **** if (field_width < 0) { 1471 .loc 1 311 4 is_stmt 1 view .LVU488 1472 .LVL147: 312:lib/vsprintf.c **** field_width = -field_width; 1473 .loc 1 312 4 view .LVU489 313:lib/vsprintf.c **** flags |= LEFT; 1474 .loc 1 313 17 is_stmt 0 view .LVU490 1475 0218 006066B2 rsblt r6, r6, #0 1476 .LVL148: 314:lib/vsprintf.c **** } 1477 .loc 1 314 5 is_stmt 1 view .LVU491 314:lib/vsprintf.c **** } 1478 .loc 1 314 11 is_stmt 0 view .LVU492 1479 021c 10A08AB3 orrlt r10, r10, #16 1480 .LVL149: 314:lib/vsprintf.c **** } 1481 .loc 1 314 11 view .LVU493 1482 0220 B8FFFFEA b .L155 1483 .LVL150: 1484 .L158: 324:lib/vsprintf.c **** ++fmt; 1485 .loc 1 324 9 is_stmt 1 view .LVU494 324:lib/vsprintf.c **** ++fmt; 1486 .loc 1 324 12 is_stmt 0 view .LVU495 1487 0224 2A0050E3 cmp r0, #42 1488 0228 C5FFFF1A bne .L157 325:lib/vsprintf.c **** /* it's the next argument */ 1489 .loc 1 325 5 is_stmt 1 view .LVU496 1490 022c 022082E2 add r2, r2, #2 1491 0230 14208DE5 str r2, [sp, #20] 327:lib/vsprintf.c **** } 1492 .loc 1 327 5 view .LVU497 1493 .LVL151: 327:lib/vsprintf.c **** } 1494 .loc 1 327 15 is_stmt 0 view .LVU498 1495 0234 040094E4 ldr r0, [r4], #4 1496 .LVL152: 327:lib/vsprintf.c **** } 1497 .loc 1 327 15 view .LVU499 1498 0238 C0FFFFEA b .L159 1499 .LVL153: 1500 .L160: 337:lib/vsprintf.c **** ++fmt; 1501 .loc 1 337 4 is_stmt 1 view .LVU500 338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') { 1502 .loc 1 338 4 view .LVU501 1503 023c 01008CE2 add r0, ip, #1 339:lib/vsprintf.c **** qualifier = 'L'; 1504 .loc 1 339 7 is_stmt 0 view .LVU502 1505 0240 6C0052E3 cmp r2, #108 338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') { 1506 .loc 1 338 4 view .LVU503 1507 0244 14008DE5 str r0, [sp, #20] 339:lib/vsprintf.c **** qualifier = 'L'; 1508 .loc 1 339 4 is_stmt 1 view .LVU504 339:lib/vsprintf.c **** qualifier = 'L'; 1509 .loc 1 339 7 is_stmt 0 view .LVU505 1510 0248 CEFFFF1A bne .L165 339:lib/vsprintf.c **** qualifier = 'L'; 1511 .loc 1 339 25 discriminator 1 view .LVU506 1512 024c 0100DCE5 ldrb r0, [ip, #1] @ zero_extendqisi2 1513 0250 6C0050E3 cmp r0, #108 1514 0254 CBFFFF1A bne .L165 340:lib/vsprintf.c **** ++fmt; 1515 .loc 1 340 5 is_stmt 1 view .LVU507 1516 .LVL154: 341:lib/vsprintf.c **** } 1517 .loc 1 341 5 view .LVU508 1518 0258 02C08CE2 add ip, ip, #2 1519 .LVL155: 1520 .L162: 340:lib/vsprintf.c **** ++fmt; 1521 .loc 1 340 15 is_stmt 0 view .LVU509 1522 025c 4C20A0E3 mov r2, #76 341:lib/vsprintf.c **** } 1523 .loc 1 341 5 view .LVU510 1524 0260 14C08DE5 str ip, [sp, #20] 1525 0264 C7FFFFEA b .L165 1526 .LVL156: 1527 .L167: 348:lib/vsprintf.c **** case 'c': 1528 .loc 1 348 3 view .LVU511 1529 0268 630040E2 sub r0, r0, #99 1530 026c 150050E3 cmp r0, #21 1531 0270 00F19F97 ldrls pc, [pc, r0, asl #2] 1532 0274 CEFFFFEA b .L166 1533 .L171: 1534 0278 18030000 .word .L178 1535 027c 00050000 .word .L177 1536 0280 B4010000 .word .L166 1537 0284 B4010000 .word .L166 1538 0288 B4010000 .word .L166 1539 028c B4010000 .word .L166 1540 0290 00050000 .word .L177 1541 0294 B4010000 .word .L166 1542 0298 B4010000 .word .L166 1543 029c B4010000 .word .L166 1544 02a0 B4010000 .word .L166 1545 02a4 D4040000 .word .L176 1546 02a8 D0020000 .word .L175 1547 02ac 9C040000 .word .L174 1548 02b0 B4010000 .word .L166 1549 02b4 B4010000 .word .L166 1550 02b8 D0030000 .word .L173 1551 02bc B4010000 .word .L166 1552 02c0 04050000 .word .L172 1553 02c4 B4010000 .word .L166 1554 02c8 B4010000 .word .L166 1555 02cc 18050000 .word .L227 1556 .L175: 426:lib/vsprintf.c **** break; 1557 .loc 1 426 10 view .LVU512 1558 02d0 08C0A0E3 mov ip, #8 1559 .LVL157: 1560 .L170: 454:lib/vsprintf.c **** num = va_arg(args, long long); 1561 .loc 1 454 3 is_stmt 1 view .LVU513 454:lib/vsprintf.c **** num = va_arg(args, long long); 1562 .loc 1 454 6 is_stmt 0 view .LVU514 1563 02d4 4C0052E3 cmp r2, #76 1564 02d8 9000001A bne .L205 455:lib/vsprintf.c **** else if (qualifier == 'l') { 1565 .loc 1 455 4 is_stmt 1 view .LVU515 455:lib/vsprintf.c **** else if (qualifier == 'l') { 1566 .loc 1 455 10 is_stmt 0 view .LVU516 1567 02dc 074084E2 add r4, r4, #7 1568 .LVL158: 455:lib/vsprintf.c **** else if (qualifier == 'l') { 1569 .loc 1 455 10 view .LVU517 1570 02e0 0740C4E3 bic r4, r4, #7 1571 .LVL159: 455:lib/vsprintf.c **** else if (qualifier == 'l') { 1572 .loc 1 455 10 view .LVU518 1573 02e4 04B0A0E1 mov fp, r4 1574 .LVL160: 455:lib/vsprintf.c **** else if (qualifier == 'l') { 1575 .loc 1 455 8 view .LVU519 1576 02e8 040094E5 ldr r0, [r4, #4] 1577 02ec 08209BE4 ldr r2, [fp], #8 1578 .LVL161: 1579 .L206: 473:lib/vsprintf.c **** field_width, precision, flags); 1580 .loc 1 473 3 is_stmt 1 view .LVU520 473:lib/vsprintf.c **** field_width, precision, flags); 1581 .loc 1 473 9 is_stmt 0 view .LVU521 1582 02f0 0030A0E1 mov r3, r0 1583 02f4 08108DE5 str r1, [sp, #8] 1584 02f8 0500A0E1 mov r0, r5 1585 .LVL162: 473:lib/vsprintf.c **** field_width, precision, flags); 1586 .loc 1 473 9 view .LVU522 1587 02fc 0710A0E1 mov r1, r7 1588 .LVL163: 473:lib/vsprintf.c **** field_width, precision, flags); 1589 .loc 1 473 9 view .LVU523 1590 0300 0CA08DE5 str r10, [sp, #12] 1591 0304 04608DE5 str r6, [sp, #4] 1592 0308 00C08DE5 str ip, [sp] 1593 030c FEFFFFEB bl number 1594 .LVL164: 473:lib/vsprintf.c **** field_width, precision, flags); 1595 .loc 1 473 9 view .LVU524 1596 0310 0B40A0E1 mov r4, fp 1597 0314 240000EA b .L144 1598 .LVL165: 1599 .L178: 350:lib/vsprintf.c **** while (--field_width > 0) { 1600 .loc 1 350 5 is_stmt 1 view .LVU525 350:lib/vsprintf.c **** while (--field_width > 0) { 1601 .loc 1 350 8 is_stmt 0 view .LVU526 1602 0318 10001AE3 tst r10, #16 1603 031c 1200001A bne .L180 1604 0320 0620A0E1 mov r2, r6 1605 .LVL166: 350:lib/vsprintf.c **** while (--field_width > 0) { 1606 .loc 1 350 8 view .LVU527 1607 0324 0530A0E1 mov r3, r5 353:lib/vsprintf.c **** ++str; 1608 .loc 1 353 13 view .LVU528 1609 0328 2010A0E3 mov r1, #32 1610 .LVL167: 353:lib/vsprintf.c **** ++str; 1611 .loc 1 353 13 view .LVU529 1612 032c 020000EA b .L179 1613 .LVL168: 1614 .L182: 352:lib/vsprintf.c **** *str = ' '; 1615 .loc 1 352 7 is_stmt 1 view .LVU530 352:lib/vsprintf.c **** *str = ' '; 1616 .loc 1 352 10 is_stmt 0 view .LVU531 1617 0330 070053E1 cmp r3, r7 353:lib/vsprintf.c **** ++str; 1618 .loc 1 353 8 is_stmt 1 view .LVU532 353:lib/vsprintf.c **** ++str; 1619 .loc 1 353 13 is_stmt 0 view .LVU533 1620 0334 0010C395 strbls r1, [r3] 354:lib/vsprintf.c **** } 1621 .loc 1 354 7 is_stmt 1 view .LVU534 1622 0338 013083E2 add r3, r3, #1 1623 .LVL169: 1624 .L179: 351:lib/vsprintf.c **** if (str <= end) 1625 .loc 1 351 27 view .LVU535 1626 033c 012042E2 sub r2, r2, #1 1627 .LVL170: 351:lib/vsprintf.c **** if (str <= end) 1628 .loc 1 351 27 is_stmt 0 view .LVU536 1629 0340 000052E3 cmp r2, #0 1630 0344 F9FFFFCA bgt .L182 351:lib/vsprintf.c **** if (str <= end) 1631 .loc 1 351 27 view .LVU537 1632 0348 000056E3 cmp r6, #0 1633 034c 013046E2 sub r3, r6, #1 1634 .LVL171: 351:lib/vsprintf.c **** if (str <= end) 1635 .loc 1 351 27 view .LVU538 1636 0350 0320A0C1 movgt r2, r3 1637 .LVL172: 351:lib/vsprintf.c **** if (str <= end) 1638 .loc 1 351 27 view .LVU539 1639 0354 0020A0D3 movle r2, #0 1640 0358 010056E3 cmp r6, #1 1641 035c 0160A0B3 movlt r6, #1 1642 0360 016066E2 rsb r6, r6, #1 1643 0364 025085E0 add r5, r5, r2 1644 0368 036086E0 add r6, r6, r3 1645 .LVL173: 1646 .L180: 357:lib/vsprintf.c **** if (str <= end) 1647 .loc 1 357 5 is_stmt 1 view .LVU540 358:lib/vsprintf.c **** *str = c; 1648 .loc 1 358 8 is_stmt 0 view .LVU541 1649 036c 070055E1 cmp r5, r7 357:lib/vsprintf.c **** if (str <= end) 1650 .loc 1 357 7 view .LVU542 1651 0370 00309495 ldrls r3, [r4] 360:lib/vsprintf.c **** while (--field_width > 0) { 1652 .loc 1 360 5 view .LVU543 1653 0374 010085E2 add r0, r5, #1 357:lib/vsprintf.c **** if (str <= end) 1654 .loc 1 357 7 view .LVU544 1655 0378 0030C595 strbls r3, [r5] 363:lib/vsprintf.c **** ++str; 1656 .loc 1 363 12 view .LVU545 1657 037c 20C0A0E3 mov ip, #32 360:lib/vsprintf.c **** while (--field_width > 0) { 1658 .loc 1 360 5 view .LVU546 1659 0380 0030A0E1 mov r3, r0 357:lib/vsprintf.c **** if (str <= end) 1660 .loc 1 357 25 view .LVU547 1661 0384 042084E2 add r2, r4, #4 1662 .LVL174: 358:lib/vsprintf.c **** *str = c; 1663 .loc 1 358 5 is_stmt 1 view .LVU548 359:lib/vsprintf.c **** ++str; 1664 .loc 1 359 6 view .LVU549 360:lib/vsprintf.c **** while (--field_width > 0) { 1665 .loc 1 360 5 view .LVU550 361:lib/vsprintf.c **** if (str <= end) 1666 .loc 1 361 5 view .LVU551 1667 0388 065085E0 add r5, r5, r6 1668 .LVL175: 1669 .L184: 361:lib/vsprintf.c **** if (str <= end) 1670 .loc 1 361 26 view .LVU552 1671 038c 031045E0 sub r1, r5, r3 1672 0390 000051E3 cmp r1, #0 1673 0394 090000CA bgt .L186 361:lib/vsprintf.c **** if (str <= end) 1674 .loc 1 361 26 is_stmt 0 view .LVU553 1675 0398 000056E3 cmp r6, #0 1676 039c 016046C2 subgt r6, r6, #1 1677 03a0 0060A0D3 movle r6, #0 357:lib/vsprintf.c **** if (str <= end) 1678 .loc 1 357 25 view .LVU554 1679 03a4 0240A0E1 mov r4, r2 1680 03a8 060080E0 add r0, r0, r6 1681 .LVL176: 1682 .L144: 284:lib/vsprintf.c **** if (*fmt != '%') { 1683 .loc 1 284 16 is_stmt 1 view .LVU555 1684 03ac 14309DE5 ldr r3, [sp, #20] 1685 03b0 013083E2 add r3, r3, #1 1686 03b4 0050A0E1 mov r5, r0 1687 03b8 14308DE5 str r3, [sp, #20] 1688 03bc 1EFFFFEA b .L216 1689 .LVL177: 1690 .L186: 362:lib/vsprintf.c **** *str = ' '; 1691 .loc 1 362 6 view .LVU556 362:lib/vsprintf.c **** *str = ' '; 1692 .loc 1 362 9 is_stmt 0 view .LVU557 1693 03c0 070053E1 cmp r3, r7 363:lib/vsprintf.c **** ++str; 1694 .loc 1 363 7 is_stmt 1 view .LVU558 363:lib/vsprintf.c **** ++str; 1695 .loc 1 363 12 is_stmt 0 view .LVU559 1696 03c4 00C0C395 strbls ip, [r3] 364:lib/vsprintf.c **** } 1697 .loc 1 364 6 is_stmt 1 view .LVU560 1698 03c8 013083E2 add r3, r3, #1 1699 .LVL178: 364:lib/vsprintf.c **** } 1700 .loc 1 364 6 is_stmt 0 view .LVU561 1701 03cc EEFFFFEA b .L184 1702 .LVL179: 1703 .L173: 369:lib/vsprintf.c **** 1704 .loc 1 369 5 is_stmt 1 view .LVU562 369:lib/vsprintf.c **** 1705 .loc 1 369 7 is_stmt 0 view .LVU563 1706 03d0 04B094E4 ldr fp, [r4], #4 1707 .LVL180: 371:lib/vsprintf.c **** 1708 .loc 1 371 5 is_stmt 1 view .LVU564 371:lib/vsprintf.c **** 1709 .loc 1 371 11 is_stmt 0 view .LVU565 1710 03d4 0B00A0E1 mov r0, fp 1711 03d8 FEFFFFEB bl strnlen 1712 .LVL181: 373:lib/vsprintf.c **** while (len < field_width--) { 1713 .loc 1 373 5 is_stmt 1 view .LVU566 373:lib/vsprintf.c **** while (len < field_width--) { 1714 .loc 1 373 8 is_stmt 0 view .LVU567 1715 03dc 10001AE3 tst r10, #16 1716 03e0 1200001A bne .L188 1717 03e4 0530A0E1 mov r3, r5 376:lib/vsprintf.c **** ++str; 1718 .loc 1 376 13 view .LVU568 1719 03e8 20C0A0E3 mov ip, #32 374:lib/vsprintf.c **** if (str <= end) 1720 .loc 1 374 17 view .LVU569 1721 03ec 061085E0 add r1, r5, r6 1722 03f0 020000EA b .L187 1723 .LVL182: 1724 .L190: 375:lib/vsprintf.c **** *str = ' '; 1725 .loc 1 375 7 is_stmt 1 view .LVU570 375:lib/vsprintf.c **** *str = ' '; 1726 .loc 1 375 10 is_stmt 0 view .LVU571 1727 03f4 070053E1 cmp r3, r7 376:lib/vsprintf.c **** ++str; 1728 .loc 1 376 8 is_stmt 1 view .LVU572 376:lib/vsprintf.c **** ++str; 1729 .loc 1 376 13 is_stmt 0 view .LVU573 1730 03f8 00C0C395 strbls ip, [r3] 377:lib/vsprintf.c **** } 1731 .loc 1 377 7 is_stmt 1 view .LVU574 1732 03fc 013083E2 add r3, r3, #1 1733 .LVL183: 1734 .L187: 374:lib/vsprintf.c **** if (str <= end) 1735 .loc 1 374 17 view .LVU575 1736 0400 032041E0 sub r2, r1, r3 1737 0404 020050E1 cmp r0, r2 1738 0408 F9FFFFBA blt .L190 374:lib/vsprintf.c **** if (str <= end) 1739 .loc 1 374 17 is_stmt 0 view .LVU576 1740 040c 000056E1 cmp r6, r0 1741 0410 003046E0 sub r3, r6, r0 1742 .LVL184: 374:lib/vsprintf.c **** if (str <= end) 1743 .loc 1 374 17 view .LVU577 1744 0414 0320A0A1 movge r2, r3 1745 0418 0020A0B3 movlt r2, #0 1746 041c 003063E2 rsb r3, r3, #0 1747 0420 0030A0B3 movlt r3, #0 1748 0424 016046E2 sub r6, r6, #1 1749 0428 025085E0 add r5, r5, r2 374:lib/vsprintf.c **** if (str <= end) 1750 .loc 1 374 30 view .LVU578 1751 042c 036086E0 add r6, r6, r3 1752 .LVL185: 1753 .L188: 380:lib/vsprintf.c **** if (str <= end) 1754 .loc 1 380 5 is_stmt 1 view .LVU579 380:lib/vsprintf.c **** if (str <= end) 1755 .loc 1 380 12 is_stmt 0 view .LVU580 1756 0430 0030A0E3 mov r3, #0 1757 .LVL186: 1758 .L191: 380:lib/vsprintf.c **** if (str <= end) 1759 .loc 1 380 19 is_stmt 1 discriminator 1 view .LVU581 1760 0434 000053E1 cmp r3, r0 1761 0438 0D0000BA blt .L193 1762 043c 000050E3 cmp r0, #0 1763 0440 002085A0 addge r2, r5, r0 1764 0444 002085B2 addlt r2, r5, #0 387:lib/vsprintf.c **** ++str; 1765 .loc 1 387 12 is_stmt 0 view .LVU582 1766 0448 20E0A0E3 mov lr, #32 380:lib/vsprintf.c **** if (str <= end) 1767 .loc 1 380 19 view .LVU583 1768 044c 0230A0E1 mov r3, r2 1769 .LVL187: 385:lib/vsprintf.c **** if (str <= end) 1770 .loc 1 385 16 view .LVU584 1771 0450 06C082E0 add ip, r2, r6 1772 .LVL188: 1773 .L194: 385:lib/vsprintf.c **** if (str <= end) 1774 .loc 1 385 16 is_stmt 1 view .LVU585 1775 0454 03104CE0 sub r1, ip, r3 1776 0458 000051E1 cmp r1, r0 1777 045c 0A0000CA bgt .L196 1778 0460 000056E1 cmp r6, r0 1779 0464 0000A0B3 movlt r0, #0 1780 .LVL189: 385:lib/vsprintf.c **** if (str <= end) 1781 .loc 1 385 16 is_stmt 0 view .LVU586 1782 0468 000046A0 subge r0, r6, r0 1783 046c 000082E0 add r0, r2, r0 1784 0470 CDFFFFEA b .L144 1785 .LVL190: 1786 .L193: 381:lib/vsprintf.c **** *str = *s; 1787 .loc 1 381 6 is_stmt 1 view .LVU587 1788 0474 032085E0 add r2, r5, r3 381:lib/vsprintf.c **** *str = *s; 1789 .loc 1 381 9 is_stmt 0 view .LVU588 1790 0478 020057E1 cmp r7, r2 382:lib/vsprintf.c **** ++str; ++s; 1791 .loc 1 382 7 is_stmt 1 view .LVU589 382:lib/vsprintf.c **** ++str; ++s; 1792 .loc 1 382 14 is_stmt 0 view .LVU590 1793 047c 0320DB27 ldrbcs r2, [fp, r3] @ zero_extendqisi2 382:lib/vsprintf.c **** ++str; ++s; 1794 .loc 1 382 12 view .LVU591 1795 0480 0320C527 strbcs r2, [r5, r3] 383:lib/vsprintf.c **** } 1796 .loc 1 383 6 is_stmt 1 view .LVU592 383:lib/vsprintf.c **** } 1797 .loc 1 383 13 view .LVU593 380:lib/vsprintf.c **** if (str <= end) 1798 .loc 1 380 26 view .LVU594 1799 0484 013083E2 add r3, r3, #1 1800 .LVL191: 380:lib/vsprintf.c **** if (str <= end) 1801 .loc 1 380 26 is_stmt 0 view .LVU595 1802 0488 E9FFFFEA b .L191 1803 .LVL192: 1804 .L196: 386:lib/vsprintf.c **** *str = ' '; 1805 .loc 1 386 6 is_stmt 1 view .LVU596 386:lib/vsprintf.c **** *str = ' '; 1806 .loc 1 386 9 is_stmt 0 view .LVU597 1807 048c 070053E1 cmp r3, r7 387:lib/vsprintf.c **** ++str; 1808 .loc 1 387 7 is_stmt 1 view .LVU598 387:lib/vsprintf.c **** ++str; 1809 .loc 1 387 12 is_stmt 0 view .LVU599 1810 0490 00E0C395 strbls lr, [r3] 388:lib/vsprintf.c **** } 1811 .loc 1 388 6 is_stmt 1 view .LVU600 1812 0494 013083E2 add r3, r3, #1 1813 .LVL193: 388:lib/vsprintf.c **** } 1814 .loc 1 388 6 is_stmt 0 view .LVU601 1815 0498 EDFFFFEA b .L194 1816 .LVL194: 1817 .L174: 393:lib/vsprintf.c **** field_width = 2*sizeof(void *); 1818 .loc 1 393 5 is_stmt 1 view .LVU602 393:lib/vsprintf.c **** field_width = 2*sizeof(void *); 1819 .loc 1 393 8 is_stmt 0 view .LVU603 1820 049c 010076E3 cmn r6, #1 394:lib/vsprintf.c **** flags |= ZEROPAD; 1821 .loc 1 394 6 is_stmt 1 view .LVU604 1822 .LVL195: 395:lib/vsprintf.c **** } 1823 .loc 1 395 6 view .LVU605 394:lib/vsprintf.c **** flags |= ZEROPAD; 1824 .loc 1 394 18 is_stmt 0 view .LVU606 1825 04a0 0860A003 moveq r6, #8 397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *), 1826 .loc 1 397 11 view .LVU607 1827 04a4 1030A0E3 mov r3, #16 395:lib/vsprintf.c **** } 1828 .loc 1 395 12 view .LVU608 1829 04a8 01A08A03 orreq r10, r10, #1 1830 .LVL196: 397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *), 1831 .loc 1 397 5 is_stmt 1 view .LVU609 397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *), 1832 .loc 1 397 11 is_stmt 0 view .LVU610 1833 04ac 042094E4 ldr r2, [r4], #4 1834 .LVL197: 397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *), 1835 .loc 1 397 11 view .LVU611 1836 04b0 0500A0E1 mov r0, r5 1837 04b4 08108DE5 str r1, [sp, #8] 1838 04b8 00308DE5 str r3, [sp] 1839 04bc 0710A0E1 mov r1, r7 1840 .LVL198: 397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *), 1841 .loc 1 397 11 view .LVU612 1842 04c0 0030A0E3 mov r3, #0 1843 04c4 0CA08DE5 str r10, [sp, #12] 1844 04c8 04608DE5 str r6, [sp, #4] 1845 04cc FEFFFFEB bl number 1846 .LVL199: 400:lib/vsprintf.c **** 1847 .loc 1 400 5 is_stmt 1 view .LVU613 1848 04d0 B5FFFFEA b .L144 1849 .LVL200: 1850 .L176: 406:lib/vsprintf.c **** long * ip = va_arg(args, long *); 1851 .loc 1 406 5 view .LVU614 369:lib/vsprintf.c **** 1852 .loc 1 369 7 is_stmt 0 view .LVU615 1853 04d4 003094E5 ldr r3, [r4] 1854 .LBB17: 408:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') { 1855 .loc 1 408 17 view .LVU616 1856 04d8 081045E0 sub r1, r5, r8 1857 .LVL201: 408:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') { 1858 .loc 1 408 17 view .LVU617 1859 .LBE17: 406:lib/vsprintf.c **** long * ip = va_arg(args, long *); 1860 .loc 1 406 8 view .LVU618 1861 04dc 6C0052E3 cmp r2, #108 1862 .LBB18: 407:lib/vsprintf.c **** *ip = (str - buf); 1863 .loc 1 407 6 is_stmt 1 view .LVU619 1864 .LVL202: 408:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') { 1865 .loc 1 408 6 view .LVU620 1866 .LBE18: 357:lib/vsprintf.c **** if (str <= end) 1867 .loc 1 357 25 is_stmt 0 view .LVU621 1868 04e0 0500A0E1 mov r0, r5 1869 .LBB19: 408:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') { 1870 .loc 1 408 10 view .LVU622 1871 04e4 00108305 streq r1, [r3] 1872 .LBE19: 409:lib/vsprintf.c **** size_t * ip = va_arg(args, size_t *); 1873 .loc 1 409 12 is_stmt 1 view .LVU623 1874 .LBB20: 411:lib/vsprintf.c **** } else { 1875 .loc 1 411 10 is_stmt 0 view .LVU624 1876 04e8 00108315 strne r1, [r3] 1877 .LBE20: 357:lib/vsprintf.c **** if (str <= end) 1878 .loc 1 357 25 view .LVU625 1879 04ec 044084E2 add r4, r4, #4 1880 .LVL203: 357:lib/vsprintf.c **** if (str <= end) 1881 .loc 1 357 25 view .LVU626 1882 04f0 ADFFFFEA b .L144 1883 .LVL204: 1884 .L168: 419:lib/vsprintf.c **** *str = '%'; 1885 .loc 1 419 5 is_stmt 1 view .LVU627 419:lib/vsprintf.c **** *str = '%'; 1886 .loc 1 419 8 is_stmt 0 view .LVU628 1887 04f4 070055E1 cmp r5, r7 420:lib/vsprintf.c **** ++str; 1888 .loc 1 420 6 is_stmt 1 view .LVU629 420:lib/vsprintf.c **** ++str; 1889 .loc 1 420 11 is_stmt 0 view .LVU630 1890 04f8 0000C595 strbls r0, [r5] 1891 04fc DFFEFFEA b .L201 1892 .L177: 437:lib/vsprintf.c **** case 'u': 1893 .loc 1 437 5 is_stmt 1 view .LVU631 437:lib/vsprintf.c **** case 'u': 1894 .loc 1 437 11 is_stmt 0 view .LVU632 1895 0500 02A08AE3 orr r10, r10, #2 1896 .LVL205: 1897 .L172: 346:lib/vsprintf.c **** 1898 .loc 1 346 8 view .LVU633 1899 0504 0AC0A0E3 mov ip, #10 1900 0508 71FFFFEA b .L170 1901 .LVL206: 1902 .L203: 450:lib/vsprintf.c **** } 1903 .loc 1 450 6 is_stmt 1 view .LVU634 1904 050c 01304CE2 sub r3, ip, #1 1905 0510 14308DE5 str r3, [sp, #20] 1906 0514 A4FFFFEA b .L144 1907 .LVL207: 1908 .L227: 348:lib/vsprintf.c **** case 'c': 1909 .loc 1 348 3 is_stmt 0 view .LVU635 1910 0518 10C0A0E3 mov ip, #16 1911 051c 6CFFFFEA b .L170 1912 .LVL208: 1913 .L205: 456:lib/vsprintf.c **** num = va_arg(args, unsigned long); 1914 .loc 1 456 8 is_stmt 1 view .LVU636 1915 0520 6C0052E3 cmp r2, #108 357:lib/vsprintf.c **** if (str <= end) 1916 .loc 1 357 25 is_stmt 0 view .LVU637 1917 0524 04B084E2 add fp, r4, #4 1918 0528 0E00000A beq .L207 1919 052c 080000CA bgt .L208 1920 0530 5A0052E3 cmp r2, #90 1921 0534 0800000A beq .L209 1922 0538 680052E3 cmp r2, #104 1923 053c 02000AE2 and r0, r10, #2 1924 0540 0F00000A beq .L210 469:lib/vsprintf.c **** if (flags & SIGN) 1925 .loc 1 469 4 is_stmt 1 view .LVU638 1926 .LVL209: 470:lib/vsprintf.c **** num = (signed int) num; 1927 .loc 1 470 7 is_stmt 0 view .LVU639 1928 0544 000050E3 cmp r0, #0 469:lib/vsprintf.c **** if (flags & SIGN) 1929 .loc 1 469 10 view .LVU640 1930 0548 002094E5 ldr r2, [r4] 1931 .LVL210: 470:lib/vsprintf.c **** num = (signed int) num; 1932 .loc 1 470 4 is_stmt 1 view .LVU641 470:lib/vsprintf.c **** num = (signed int) num; 1933 .loc 1 470 7 is_stmt 0 view .LVU642 1934 054c 67FFFF0A beq .L206 1935 0550 070000EA b .L240 1936 .LVL211: 1937 .L208: 470:lib/vsprintf.c **** num = (signed int) num; 1938 .loc 1 470 7 view .LVU643 1939 0554 740052E3 cmp r2, #116 1940 0558 0700000A beq .L212 1941 .L209: 461:lib/vsprintf.c **** } else if (qualifier == 't') { 1942 .loc 1 461 4 is_stmt 1 view .LVU644 1943 .LVL212: 461:lib/vsprintf.c **** } else if (qualifier == 't') { 1944 .loc 1 461 8 is_stmt 0 view .LVU645 1945 055c 0000A0E3 mov r0, #0 1946 0560 002094E5 ldr r2, [r4] 1947 .LVL213: 461:lib/vsprintf.c **** } else if (qualifier == 't') { 1948 .loc 1 461 8 view .LVU646 1949 0564 61FFFFEA b .L206 1950 .LVL214: 1951 .L207: 457:lib/vsprintf.c **** if (flags & SIGN) 1952 .loc 1 457 4 is_stmt 1 view .LVU647 458:lib/vsprintf.c **** num = (signed long) num; 1953 .loc 1 458 7 is_stmt 0 view .LVU648 1954 0568 02001AE2 ands r0, r10, #2 457:lib/vsprintf.c **** if (flags & SIGN) 1955 .loc 1 457 10 view .LVU649 1956 056c 002094E5 ldr r2, [r4] 1957 .LVL215: 458:lib/vsprintf.c **** num = (signed long) num; 1958 .loc 1 458 4 is_stmt 1 view .LVU650 458:lib/vsprintf.c **** num = (signed long) num; 1959 .loc 1 458 7 is_stmt 0 view .LVU651 1960 0570 5EFFFF0A beq .L206 1961 .LVL216: 1962 .L240: 471:lib/vsprintf.c **** } 1963 .loc 1 471 5 is_stmt 1 view .LVU652 471:lib/vsprintf.c **** } 1964 .loc 1 471 9 is_stmt 0 view .LVU653 1965 0574 C20FA0E1 asr r0, r2, #31 1966 .LVL217: 471:lib/vsprintf.c **** } 1967 .loc 1 471 9 view .LVU654 1968 0578 5CFFFFEA b .L206 1969 .LVL218: 1970 .L212: 463:lib/vsprintf.c **** } else if (qualifier == 'h') { 1971 .loc 1 463 4 is_stmt 1 view .LVU655 463:lib/vsprintf.c **** } else if (qualifier == 'h') { 1972 .loc 1 463 8 is_stmt 0 view .LVU656 1973 057c 002094E5 ldr r2, [r4] 1974 .LVL219: 463:lib/vsprintf.c **** } else if (qualifier == 'h') { 1975 .loc 1 463 8 view .LVU657 1976 0580 FBFFFFEA b .L240 1977 .LVL220: 1978 .L210: 465:lib/vsprintf.c **** if (flags & SIGN) 1979 .loc 1 465 4 is_stmt 1 view .LVU658 465:lib/vsprintf.c **** if (flags & SIGN) 1980 .loc 1 465 27 is_stmt 0 view .LVU659 1981 0584 00E094E5 ldr lr, [r4] 1982 .LVL221: 466:lib/vsprintf.c **** num = (signed short) num; 1983 .loc 1 466 4 is_stmt 1 view .LVU660 466:lib/vsprintf.c **** num = (signed short) num; 1984 .loc 1 466 7 is_stmt 0 view .LVU661 1985 0588 000050E3 cmp r0, #0 1986 058c 0EE8A0E1 lsl lr, lr, #16 1987 .LVL222: 465:lib/vsprintf.c **** if (flags & SIGN) 1988 .loc 1 465 8 view .LVU662 1989 0590 2E28A001 lsreq r2, lr, #16 1990 .LVL223: 467:lib/vsprintf.c **** } else { 1991 .loc 1 467 5 is_stmt 1 view .LVU663 467:lib/vsprintf.c **** } else { 1992 .loc 1 467 9 is_stmt 0 view .LVU664 1993 0594 4E28A011 asrne r2, lr, #16 1994 0598 CE0FA011 asrne r0, lr, #31 1995 .LVL224: 467:lib/vsprintf.c **** } else { 1996 .loc 1 467 9 view .LVU665 1997 059c 53FFFFEA b .L206 1998 .L242: 1999 .align 2 2000 .L241: 2001 05a0 00000000 .word _ctype 2002 .cfi_endproc 2003 .LFE8: 2005 .section .text.vscnprintf,"ax",%progbits 2006 .align 2 2007 .global vscnprintf 2008 .syntax unified 2009 .arm 2011 vscnprintf: 2012 .LVL225: 2013 .LFB9: 486:lib/vsprintf.c **** 487:lib/vsprintf.c **** 488:lib/vsprintf.c **** /** 489:lib/vsprintf.c **** * vscnprintf - Format a string and place it in a buffer 490:lib/vsprintf.c **** * @buf: The buffer to place the result into 491:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space 492:lib/vsprintf.c **** * @fmt: The format string to use 493:lib/vsprintf.c **** * @args: Arguments for the format string 494:lib/vsprintf.c **** * 495:lib/vsprintf.c **** * The return value is the number of characters which have been written into 496:lib/vsprintf.c **** * the @buf not including the trailing '\0'. If @size is <= 0 the function 497:lib/vsprintf.c **** * returns 0. 498:lib/vsprintf.c **** * 499:lib/vsprintf.c **** * Call this function if you are already dealing with a va_list. 500:lib/vsprintf.c **** * You probably want scnprintf instead. 501:lib/vsprintf.c **** */ 502:lib/vsprintf.c **** int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) 503:lib/vsprintf.c **** { 2014 .loc 1 503 1 is_stmt 1 view -0 2015 .cfi_startproc 2016 @ Function supports interworking. 2017 @ args = 0, pretend = 0, frame = 0 2018 @ frame_needed = 0, uses_anonymous_args = 0 504:lib/vsprintf.c **** unsigned int i; 2019 .loc 1 504 2 view .LVU667 505:lib/vsprintf.c **** 506:lib/vsprintf.c **** i=vsnprintf(buf,size,fmt,args); 2020 .loc 1 506 2 view .LVU668 503:lib/vsprintf.c **** unsigned int i; 2021 .loc 1 503 1 is_stmt 0 view .LVU669 2022 0000 10402DE9 push {r4, lr} 2023 .LCFI23: 2024 .cfi_def_cfa_offset 8 2025 .cfi_offset 4, -8 2026 .cfi_offset 14, -4 503:lib/vsprintf.c **** unsigned int i; 2027 .loc 1 503 1 view .LVU670 2028 0004 0140A0E1 mov r4, r1 2029 .loc 1 506 4 view .LVU671 2030 0008 FEFFFFEB bl vsnprintf 2031 .LVL226: 507:lib/vsprintf.c **** return (i >= size) ? (size - 1) : i; 2032 .loc 1 507 2 is_stmt 1 view .LVU672 2033 .loc 1 507 34 is_stmt 0 view .LVU673 2034 000c 000054E1 cmp r4, r0 2035 .loc 1 507 29 view .LVU674 2036 0010 01004492 subls r0, r4, #1 2037 .LVL227: 508:lib/vsprintf.c **** } 2038 .loc 1 508 1 view .LVU675 2039 0014 1040BDE8 pop {r4, lr} 2040 .LCFI24: 2041 .cfi_restore 14 2042 .cfi_restore 4 2043 .cfi_def_cfa_offset 0 2044 .LVL228: 2045 .loc 1 508 1 view .LVU676 2046 0018 1EFF2FE1 bx lr 2047 .cfi_endproc 2048 .LFE9: 2050 .section .text.snprintf,"ax",%progbits 2051 .align 2 2052 .global snprintf 2053 .syntax unified 2054 .arm 2056 snprintf: 2057 .LVL229: 2058 .LFB10: 509:lib/vsprintf.c **** 510:lib/vsprintf.c **** 511:lib/vsprintf.c **** /** 512:lib/vsprintf.c **** * snprintf - Format a string and place it in a buffer 513:lib/vsprintf.c **** * @buf: The buffer to place the result into 514:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space 515:lib/vsprintf.c **** * @fmt: The format string to use 516:lib/vsprintf.c **** * @...: Arguments for the format string 517:lib/vsprintf.c **** * 518:lib/vsprintf.c **** * The return value is the number of characters which would be 519:lib/vsprintf.c **** * generated for the given input, excluding the trailing null, 520:lib/vsprintf.c **** * as per ISO C99. If the return is greater than or equal to 521:lib/vsprintf.c **** * @size, the resulting string is truncated. 522:lib/vsprintf.c **** */ 523:lib/vsprintf.c **** int snprintf(char * buf, size_t size, const char *fmt, ...) 524:lib/vsprintf.c **** { 2059 .loc 1 524 1 is_stmt 1 view -0 2060 .cfi_startproc 2061 @ Function supports interworking. 2062 @ args = 4, pretend = 8, frame = 8 2063 @ frame_needed = 0, uses_anonymous_args = 1 525:lib/vsprintf.c **** va_list args; 2064 .loc 1 525 2 view .LVU678 526:lib/vsprintf.c **** int i; 2065 .loc 1 526 2 view .LVU679 527:lib/vsprintf.c **** 528:lib/vsprintf.c **** va_start(args, fmt); 2066 .loc 1 528 2 view .LVU680 524:lib/vsprintf.c **** va_list args; 2067 .loc 1 524 1 is_stmt 0 view .LVU681 2068 0000 0C002DE9 push {r2, r3} 2069 .LCFI25: 2070 .cfi_def_cfa_offset 8 2071 .cfi_offset 2, -8 2072 .cfi_offset 3, -4 2073 0004 07402DE9 push {r0, r1, r2, lr} 2074 .LCFI26: 2075 .cfi_def_cfa_offset 24 2076 .cfi_offset 14, -12 529:lib/vsprintf.c **** i=vsnprintf(buf,size,fmt,args); 2077 .loc 1 529 4 view .LVU682 2078 0008 10209DE5 ldr r2, [sp, #16] 528:lib/vsprintf.c **** i=vsnprintf(buf,size,fmt,args); 2079 .loc 1 528 2 view .LVU683 2080 000c 14308DE2 add r3, sp, #20 2081 0010 04308DE5 str r3, [sp, #4] 2082 .loc 1 529 2 is_stmt 1 view .LVU684 2083 .loc 1 529 4 is_stmt 0 view .LVU685 2084 0014 FEFFFFEB bl vsnprintf 2085 .LVL230: 530:lib/vsprintf.c **** va_end(args); 2086 .loc 1 530 2 is_stmt 1 view .LVU686 531:lib/vsprintf.c **** return i; 2087 .loc 1 531 2 view .LVU687 532:lib/vsprintf.c **** } 2088 .loc 1 532 1 is_stmt 0 view .LVU688 2089 0018 0CD08DE2 add sp, sp, #12 2090 .LCFI27: 2091 .cfi_def_cfa_offset 12 2092 @ sp needed 2093 001c 04E09DE4 ldr lr, [sp], #4 2094 .LCFI28: 2095 .cfi_restore 14 2096 .cfi_def_cfa_offset 8 2097 0020 08D08DE2 add sp, sp, #8 2098 .LCFI29: 2099 .cfi_restore 3 2100 .cfi_restore 2 2101 .cfi_def_cfa_offset 0 2102 0024 1EFF2FE1 bx lr 2103 .cfi_endproc 2104 .LFE10: 2106 .section .text.scnprintf,"ax",%progbits 2107 .align 2 2108 .global scnprintf 2109 .syntax unified 2110 .arm 2112 scnprintf: 2113 .LVL231: 2114 .LFB11: 533:lib/vsprintf.c **** 534:lib/vsprintf.c **** 535:lib/vsprintf.c **** /** 536:lib/vsprintf.c **** * scnprintf - Format a string and place it in a buffer 537:lib/vsprintf.c **** * @buf: The buffer to place the result into 538:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space 539:lib/vsprintf.c **** * @fmt: The format string to use 540:lib/vsprintf.c **** * @...: Arguments for the format string 541:lib/vsprintf.c **** * 542:lib/vsprintf.c **** * The return value is the number of characters written into @buf not including 543:lib/vsprintf.c **** * the trailing '\0'. If @size is <= 0 the function returns 0. If the return is 544:lib/vsprintf.c **** * greater than or equal to @size, the resulting string is truncated. 545:lib/vsprintf.c **** */ 546:lib/vsprintf.c **** 547:lib/vsprintf.c **** int scnprintf(char * buf, size_t size, const char *fmt, ...) 548:lib/vsprintf.c **** { 2115 .loc 1 548 1 is_stmt 1 view -0 2116 .cfi_startproc 2117 @ Function supports interworking. 2118 @ args = 4, pretend = 8, frame = 8 2119 @ frame_needed = 0, uses_anonymous_args = 1 549:lib/vsprintf.c **** va_list args; 2120 .loc 1 549 2 view .LVU690 550:lib/vsprintf.c **** unsigned int i; 2121 .loc 1 550 2 view .LVU691 551:lib/vsprintf.c **** 552:lib/vsprintf.c **** va_start(args, fmt); 2122 .loc 1 552 2 view .LVU692 548:lib/vsprintf.c **** va_list args; 2123 .loc 1 548 1 is_stmt 0 view .LVU693 2124 0000 0C002DE9 push {r2, r3} 2125 .LCFI30: 2126 .cfi_def_cfa_offset 8 2127 .cfi_offset 2, -8 2128 .cfi_offset 3, -4 2129 0004 13402DE9 push {r0, r1, r4, lr} 2130 .LCFI31: 2131 .cfi_def_cfa_offset 24 2132 .cfi_offset 4, -16 2133 .cfi_offset 14, -12 553:lib/vsprintf.c **** i = vsnprintf(buf, size, fmt, args); 2134 .loc 1 553 6 view .LVU694 2135 0008 10209DE5 ldr r2, [sp, #16] 552:lib/vsprintf.c **** i = vsnprintf(buf, size, fmt, args); 2136 .loc 1 552 2 view .LVU695 2137 000c 14308DE2 add r3, sp, #20 548:lib/vsprintf.c **** va_list args; 2138 .loc 1 548 1 view .LVU696 2139 0010 0140A0E1 mov r4, r1 552:lib/vsprintf.c **** i = vsnprintf(buf, size, fmt, args); 2140 .loc 1 552 2 view .LVU697 2141 0014 04308DE5 str r3, [sp, #4] 2142 .loc 1 553 2 is_stmt 1 view .LVU698 2143 .loc 1 553 6 is_stmt 0 view .LVU699 2144 0018 FEFFFFEB bl vsnprintf 2145 .LVL232: 554:lib/vsprintf.c **** va_end(args); 2146 .loc 1 554 2 is_stmt 1 view .LVU700 555:lib/vsprintf.c **** return (i >= size) ? (size - 1) : i; 2147 .loc 1 555 2 view .LVU701 2148 .loc 1 555 34 is_stmt 0 view .LVU702 2149 001c 000054E1 cmp r4, r0 2150 .loc 1 555 29 view .LVU703 2151 0020 01004492 subls r0, r4, #1 2152 .LVL233: 556:lib/vsprintf.c **** } 2153 .loc 1 556 1 view .LVU704 2154 0024 08D08DE2 add sp, sp, #8 2155 .LCFI32: 2156 .cfi_def_cfa_offset 16 2157 @ sp needed 2158 0028 1040BDE8 pop {r4, lr} 2159 .LCFI33: 2160 .cfi_restore 14 2161 .cfi_restore 4 2162 .cfi_def_cfa_offset 8 2163 .LVL234: 2164 .loc 1 556 1 view .LVU705 2165 002c 08D08DE2 add sp, sp, #8 2166 .LCFI34: 2167 .cfi_restore 3 2168 .cfi_restore 2 2169 .cfi_def_cfa_offset 0 2170 0030 1EFF2FE1 bx lr 2171 .cfi_endproc 2172 .LFE11: 2174 .section .text.vsprintf,"ax",%progbits 2175 .align 2 2176 .global vsprintf 2177 .syntax unified 2178 .arm 2180 vsprintf: 2181 .LVL235: 2182 .LFB12: 557:lib/vsprintf.c **** 558:lib/vsprintf.c **** /** 559:lib/vsprintf.c **** * vsprintf - Format a string and place it in a buffer 560:lib/vsprintf.c **** * @buf: The buffer to place the result into 561:lib/vsprintf.c **** * @fmt: The format string to use 562:lib/vsprintf.c **** * @args: Arguments for the format string 563:lib/vsprintf.c **** * 564:lib/vsprintf.c **** * The function returns the number of characters written 565:lib/vsprintf.c **** * into @buf. Use vsnprintf or vscnprintf in order to avoid 566:lib/vsprintf.c **** * buffer overflows. 567:lib/vsprintf.c **** * 568:lib/vsprintf.c **** * Call this function if you are already dealing with a va_list. 569:lib/vsprintf.c **** * You probably want sprintf instead. 570:lib/vsprintf.c **** */ 571:lib/vsprintf.c **** int vsprintf(char *buf, const char *fmt, va_list args) 572:lib/vsprintf.c **** { 2183 .loc 1 572 1 is_stmt 1 view -0 2184 .cfi_startproc 2185 @ Function supports interworking. 2186 @ args = 0, pretend = 0, frame = 0 2187 @ frame_needed = 0, uses_anonymous_args = 0 2188 @ link register save eliminated. 573:lib/vsprintf.c **** return vsnprintf(buf, INT_MAX, fmt, args); 2189 .loc 1 573 2 view .LVU707 572:lib/vsprintf.c **** return vsnprintf(buf, INT_MAX, fmt, args); 2190 .loc 1 572 1 is_stmt 0 view .LVU708 2191 0000 0230A0E1 mov r3, r2 2192 .loc 1 573 9 view .LVU709 2193 0004 0120A0E1 mov r2, r1 2194 .LVL236: 2195 .loc 1 573 9 view .LVU710 2196 0008 0211E0E3 mvn r1, #-2147483648 2197 .LVL237: 2198 .loc 1 573 9 view .LVU711 2199 000c FEFFFFEA b vsnprintf 2200 .LVL238: 2201 .loc 1 573 9 view .LVU712 2202 .cfi_endproc 2203 .LFE12: 2205 .section .text.sprintf,"ax",%progbits 2206 .align 2 2207 .global sprintf 2208 .syntax unified 2209 .arm 2211 sprintf: 2212 .LVL239: 2213 .LFB13: 574:lib/vsprintf.c **** } 575:lib/vsprintf.c **** 576:lib/vsprintf.c **** 577:lib/vsprintf.c **** /** 578:lib/vsprintf.c **** * sprintf - Format a string and place it in a buffer 579:lib/vsprintf.c **** * @buf: The buffer to place the result into 580:lib/vsprintf.c **** * @fmt: The format string to use 581:lib/vsprintf.c **** * @...: Arguments for the format string 582:lib/vsprintf.c **** * 583:lib/vsprintf.c **** * The function returns the number of characters written 584:lib/vsprintf.c **** * into @buf. Use snprintf or scnprintf in order to avoid 585:lib/vsprintf.c **** * buffer overflows. 586:lib/vsprintf.c **** */ 587:lib/vsprintf.c **** int sprintf(char * buf, const char *fmt, ...) 588:lib/vsprintf.c **** { 2214 .loc 1 588 1 is_stmt 1 view -0 2215 .cfi_startproc 2216 @ Function supports interworking. 2217 @ args = 4, pretend = 12, frame = 8 2218 @ frame_needed = 0, uses_anonymous_args = 1 589:lib/vsprintf.c **** va_list args; 2219 .loc 1 589 2 view .LVU714 590:lib/vsprintf.c **** int i; 2220 .loc 1 590 2 view .LVU715 591:lib/vsprintf.c **** 592:lib/vsprintf.c **** va_start(args, fmt); 2221 .loc 1 592 2 view .LVU716 588:lib/vsprintf.c **** va_list args; 2222 .loc 1 588 1 is_stmt 0 view .LVU717 2223 0000 0E002DE9 push {r1, r2, r3} 2224 .LCFI35: 2225 .cfi_def_cfa_offset 12 2226 .cfi_offset 1, -12 2227 .cfi_offset 2, -8 2228 .cfi_offset 3, -4 2229 0004 03402DE9 push {r0, r1, lr} 2230 .LCFI36: 2231 .cfi_def_cfa_offset 24 2232 .cfi_offset 14, -16 593:lib/vsprintf.c **** i=vsnprintf(buf, INT_MAX, fmt, args); 2233 .loc 1 593 4 view .LVU718 2234 0008 0C209DE5 ldr r2, [sp, #12] 592:lib/vsprintf.c **** i=vsnprintf(buf, INT_MAX, fmt, args); 2235 .loc 1 592 2 view .LVU719 2236 000c 10308DE2 add r3, sp, #16 2237 .loc 1 593 4 view .LVU720 2238 0010 0211E0E3 mvn r1, #-2147483648 592:lib/vsprintf.c **** i=vsnprintf(buf, INT_MAX, fmt, args); 2239 .loc 1 592 2 view .LVU721 2240 0014 04308DE5 str r3, [sp, #4] 2241 .loc 1 593 2 is_stmt 1 view .LVU722 2242 .loc 1 593 4 is_stmt 0 view .LVU723 2243 0018 FEFFFFEB bl vsnprintf 2244 .LVL240: 594:lib/vsprintf.c **** va_end(args); 2245 .loc 1 594 2 is_stmt 1 view .LVU724 595:lib/vsprintf.c **** return i; 2246 .loc 1 595 2 view .LVU725 596:lib/vsprintf.c **** } 2247 .loc 1 596 1 is_stmt 0 view .LVU726 2248 001c 08D08DE2 add sp, sp, #8 2249 .LCFI37: 2250 .cfi_def_cfa_offset 16 2251 @ sp needed 2252 0020 04E09DE4 ldr lr, [sp], #4 2253 .LCFI38: 2254 .cfi_restore 14 2255 .cfi_def_cfa_offset 12 2256 0024 0CD08DE2 add sp, sp, #12 2257 .LCFI39: 2258 .cfi_restore 3 2259 .cfi_restore 2 2260 .cfi_restore 1 2261 .cfi_def_cfa_offset 0 2262 0028 1EFF2FE1 bx lr 2263 .cfi_endproc 2264 .LFE13: 2266 .section .text.vsscanf,"ax",%progbits 2267 .align 2 2268 .global vsscanf 2269 .syntax unified 2270 .arm 2272 vsscanf: 2273 .LVL241: 2274 .LFB14: 597:lib/vsprintf.c **** 598:lib/vsprintf.c **** 599:lib/vsprintf.c **** /** 600:lib/vsprintf.c **** * vsscanf - Unformat a buffer into a list of arguments 601:lib/vsprintf.c **** * @buf: input buffer 602:lib/vsprintf.c **** * @fmt: format of buffer 603:lib/vsprintf.c **** * @args: arguments 604:lib/vsprintf.c **** */ 605:lib/vsprintf.c **** int vsscanf(const char * buf, const char * fmt, va_list args) 606:lib/vsprintf.c **** { 2275 .loc 1 606 1 is_stmt 1 view -0 2276 .cfi_startproc 2277 @ Function supports interworking. 2278 @ args = 0, pretend = 0, frame = 16 2279 @ frame_needed = 0, uses_anonymous_args = 0 2280 .loc 1 606 1 is_stmt 0 view .LVU728 2281 0000 FF412DE9 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} 2282 .LCFI40: 2283 .cfi_def_cfa_offset 40 2284 .cfi_offset 4, -24 2285 .cfi_offset 5, -20 2286 .cfi_offset 6, -16 2287 .cfi_offset 7, -12 2288 .cfi_offset 8, -8 2289 .cfi_offset 14, -4 2290 .LVL242: 2291 .loc 1 606 1 view .LVU729 2292 0004 0080A0E1 mov r8, r0 2293 0008 0250A0E1 mov r5, r2 2294 .LVL243: 607:lib/vsprintf.c **** const char *str = buf; 2295 .loc 1 607 2 is_stmt 1 view .LVU730 608:lib/vsprintf.c **** char *next; 2296 .loc 1 608 2 view .LVU731 609:lib/vsprintf.c **** char digit; 2297 .loc 1 609 2 view .LVU732 610:lib/vsprintf.c **** int num = 0; 2298 .loc 1 610 2 view .LVU733 611:lib/vsprintf.c **** int qualifier; 2299 .loc 1 611 2 view .LVU734 612:lib/vsprintf.c **** int base; 2300 .loc 1 612 2 view .LVU735 613:lib/vsprintf.c **** int field_width; 2301 .loc 1 613 2 view .LVU736 614:lib/vsprintf.c **** int is_sign = 0; 2302 .loc 1 614 2 view .LVU737 615:lib/vsprintf.c **** 616:lib/vsprintf.c **** while(*fmt && *str) { 2303 .loc 1 616 2 view .LVU738 607:lib/vsprintf.c **** char *next; 2304 .loc 1 607 14 is_stmt 0 view .LVU739 2305 000c 0040A0E1 mov r4, r0 610:lib/vsprintf.c **** int qualifier; 2306 .loc 1 610 6 view .LVU740 2307 0010 0070A0E3 mov r7, #0 606:lib/vsprintf.c **** const char *str = buf; 2308 .loc 1 606 1 view .LVU741 2309 0014 04108DE5 str r1, [sp, #4] 617:lib/vsprintf.c **** /* skip any white space in format */ 618:lib/vsprintf.c **** /* white space in format matches any amount of 619:lib/vsprintf.c **** * white space, including none, in the input. 620:lib/vsprintf.c **** */ 621:lib/vsprintf.c **** if (isspace(*fmt)) { 2310 .loc 1 621 7 view .LVU742 2311 0018 A4649FE5 ldr r6, .L388 2312 .LVL244: 2313 .L255: 616:lib/vsprintf.c **** /* skip any white space in format */ 2314 .loc 1 616 13 is_stmt 1 view .LVU743 616:lib/vsprintf.c **** /* skip any white space in format */ 2315 .loc 1 616 8 is_stmt 0 view .LVU744 2316 001c 04309DE5 ldr r3, [sp, #4] 2317 0020 0020D3E5 ldrb r2, [r3] @ zero_extendqisi2 616:lib/vsprintf.c **** /* skip any white space in format */ 2318 .loc 1 616 13 view .LVU745 2319 0024 000052E3 cmp r2, #0 2320 0028 6A00000A beq .L254 616:lib/vsprintf.c **** /* skip any white space in format */ 2321 .loc 1 616 13 discriminator 1 view .LVU746 2322 002c 0010D4E5 ldrb r1, [r4] @ zero_extendqisi2 2323 0030 000051E3 cmp r1, #0 2324 0034 6700000A beq .L254 2325 .loc 1 621 3 is_stmt 1 view .LVU747 2326 .loc 1 621 6 is_stmt 0 view .LVU748 2327 0038 0220D6E7 ldrb r2, [r6, r2] @ zero_extendqisi2 2328 003c 200012E3 tst r2, #32 2329 0040 0010A013 movne r1, #0 2330 0044 0E00001A bne .L257 2331 .L256: 622:lib/vsprintf.c **** while (isspace(*fmt)) 623:lib/vsprintf.c **** ++fmt; 624:lib/vsprintf.c **** while (isspace(*str)) 625:lib/vsprintf.c **** ++str; 626:lib/vsprintf.c **** } 627:lib/vsprintf.c **** 628:lib/vsprintf.c **** /* anything that is not a conversion must match exactly */ 629:lib/vsprintf.c **** if (*fmt != '%' && *fmt) { 2332 .loc 1 629 3 is_stmt 1 view .LVU749 2333 .loc 1 629 7 is_stmt 0 view .LVU750 2334 0048 04109DE5 ldr r1, [sp, #4] 2335 004c 0020D1E5 ldrb r2, [r1] @ zero_extendqisi2 2336 .loc 1 629 6 view .LVU751 2337 0050 250052E3 cmp r2, #37 2338 0054 00005213 cmpne r2, #0 2339 0058 0130A013 movne r3, #1 2340 005c 0030A003 moveq r3, #0 2341 0060 1700000A beq .L260 630:lib/vsprintf.c **** if (*fmt++ != *str++) 2342 .loc 1 630 4 is_stmt 1 view .LVU752 2343 .loc 1 630 7 is_stmt 0 view .LVU753 2344 0064 0030D4E5 ldrb r3, [r4] @ zero_extendqisi2 2345 .loc 1 630 12 view .LVU754 2346 0068 011081E2 add r1, r1, #1 2347 006c 04108DE5 str r1, [sp, #4] 2348 .LVL245: 2349 .loc 1 630 7 view .LVU755 2350 0070 020053E1 cmp r3, r2 2351 .LVL246: 2352 .L385: 631:lib/vsprintf.c **** break; 632:lib/vsprintf.c **** continue; 633:lib/vsprintf.c **** } 634:lib/vsprintf.c **** 635:lib/vsprintf.c **** if (!*fmt) 636:lib/vsprintf.c **** break; 637:lib/vsprintf.c **** ++fmt; 638:lib/vsprintf.c **** 639:lib/vsprintf.c **** /* skip this conversion. 640:lib/vsprintf.c **** * advance both strings to next white space 641:lib/vsprintf.c **** */ 642:lib/vsprintf.c **** if (*fmt == '*') { 643:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt) 644:lib/vsprintf.c **** fmt++; 645:lib/vsprintf.c **** while (!isspace(*str) && *str) 646:lib/vsprintf.c **** str++; 647:lib/vsprintf.c **** continue; 648:lib/vsprintf.c **** } 649:lib/vsprintf.c **** 650:lib/vsprintf.c **** /* get field width */ 651:lib/vsprintf.c **** field_width = -1; 652:lib/vsprintf.c **** if (isdigit(*fmt)) 653:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 654:lib/vsprintf.c **** 655:lib/vsprintf.c **** /* get conversion qualifier */ 656:lib/vsprintf.c **** qualifier = -1; 657:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || 658:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 659:lib/vsprintf.c **** qualifier = *fmt++; 660:lib/vsprintf.c **** if (qualifier == *fmt) { 661:lib/vsprintf.c **** if (qualifier == 'h') { 662:lib/vsprintf.c **** qualifier = 'H'; 663:lib/vsprintf.c **** fmt++; 664:lib/vsprintf.c **** } else if (qualifier == 'l') { 665:lib/vsprintf.c **** qualifier = 'L'; 666:lib/vsprintf.c **** fmt++; 667:lib/vsprintf.c **** } 668:lib/vsprintf.c **** } 669:lib/vsprintf.c **** } 670:lib/vsprintf.c **** base = 10; 671:lib/vsprintf.c **** is_sign = 0; 672:lib/vsprintf.c **** 673:lib/vsprintf.c **** if (!*fmt || !*str) 674:lib/vsprintf.c **** break; 675:lib/vsprintf.c **** 676:lib/vsprintf.c **** switch(*fmt++) { 677:lib/vsprintf.c **** case 'c': 678:lib/vsprintf.c **** { 679:lib/vsprintf.c **** char *s = (char *) va_arg(args,char*); 680:lib/vsprintf.c **** if (field_width == -1) 681:lib/vsprintf.c **** field_width = 1; 682:lib/vsprintf.c **** do { 683:lib/vsprintf.c **** *s++ = *str++; 684:lib/vsprintf.c **** } while (--field_width > 0 && *str); 685:lib/vsprintf.c **** num++; 686:lib/vsprintf.c **** } 687:lib/vsprintf.c **** continue; 688:lib/vsprintf.c **** case 's': 689:lib/vsprintf.c **** { 690:lib/vsprintf.c **** char *s = (char *) va_arg(args, char *); 691:lib/vsprintf.c **** if(field_width == -1) 692:lib/vsprintf.c **** field_width = INT_MAX; 693:lib/vsprintf.c **** /* first, skip leading white space in buffer */ 694:lib/vsprintf.c **** while (isspace(*str)) 695:lib/vsprintf.c **** str++; 696:lib/vsprintf.c **** 697:lib/vsprintf.c **** /* now copy until next white space */ 698:lib/vsprintf.c **** while (*str && !isspace(*str) && field_width--) { 699:lib/vsprintf.c **** *s++ = *str++; 700:lib/vsprintf.c **** } 701:lib/vsprintf.c **** *s = '\0'; 702:lib/vsprintf.c **** num++; 703:lib/vsprintf.c **** } 704:lib/vsprintf.c **** continue; 705:lib/vsprintf.c **** case 'n': 706:lib/vsprintf.c **** /* return number of characters read so far */ 707:lib/vsprintf.c **** { 708:lib/vsprintf.c **** int *i = (int *)va_arg(args,int*); 709:lib/vsprintf.c **** *i = str - buf; 710:lib/vsprintf.c **** } 711:lib/vsprintf.c **** continue; 712:lib/vsprintf.c **** case 'o': 713:lib/vsprintf.c **** base = 8; 714:lib/vsprintf.c **** break; 715:lib/vsprintf.c **** case 'x': 716:lib/vsprintf.c **** case 'X': 717:lib/vsprintf.c **** base = 16; 718:lib/vsprintf.c **** break; 719:lib/vsprintf.c **** case 'i': 720:lib/vsprintf.c **** base = 0; 721:lib/vsprintf.c **** case 'd': 722:lib/vsprintf.c **** is_sign = 1; 723:lib/vsprintf.c **** case 'u': 724:lib/vsprintf.c **** break; 725:lib/vsprintf.c **** case '%': 726:lib/vsprintf.c **** /* looking for '%' in str */ 727:lib/vsprintf.c **** if (*str++ != '%') 2353 .loc 1 727 7 view .LVU756 2354 0074 5700001A bne .L254 2355 .loc 1 727 12 view .LVU757 2356 0078 013084E2 add r3, r4, #1 2357 007c 2F0000EA b .L262 2358 .LVL247: 2359 .L316: 2360 .loc 1 727 12 view .LVU758 2361 0080 0110A0E3 mov r1, #1 2362 .L257: 2363 0084 0320A0E1 mov r2, r3 622:lib/vsprintf.c **** ++fmt; 2364 .loc 1 622 11 is_stmt 1 view .LVU759 2365 0088 0000D2E5 ldrb r0, [r2] @ zero_extendqisi2 2366 008c 0000D6E7 ldrb r0, [r6, r0] @ zero_extendqisi2 2367 0090 200010E3 tst r0, #32 2368 0094 013083E2 add r3, r3, #1 2369 0098 F8FFFF1A bne .L316 2370 009c 0430A0E1 mov r3, r4 2371 00a0 000051E3 cmp r1, #0 2372 00a4 04208D15 strne r2, [sp, #4] 2373 .L259: 2374 .LVL248: 622:lib/vsprintf.c **** ++fmt; 2375 .loc 1 622 11 is_stmt 0 view .LVU760 2376 00a8 0340A0E1 mov r4, r3 2377 .LVL249: 624:lib/vsprintf.c **** ++str; 2378 .loc 1 624 11 is_stmt 1 view .LVU761 2379 00ac 0020D4E5 ldrb r2, [r4] @ zero_extendqisi2 2380 00b0 0220D6E7 ldrb r2, [r6, r2] @ zero_extendqisi2 2381 00b4 200012E3 tst r2, #32 2382 00b8 013083E2 add r3, r3, #1 2383 .LVL250: 624:lib/vsprintf.c **** ++str; 2384 .loc 1 624 11 is_stmt 0 view .LVU762 2385 00bc F9FFFF1A bne .L259 2386 00c0 E0FFFFEA b .L256 2387 .L260: 635:lib/vsprintf.c **** break; 2388 .loc 1 635 3 is_stmt 1 view .LVU763 635:lib/vsprintf.c **** break; 2389 .loc 1 635 6 is_stmt 0 view .LVU764 2390 00c4 000052E3 cmp r2, #0 2391 00c8 4200000A beq .L254 637:lib/vsprintf.c **** 2392 .loc 1 637 3 is_stmt 1 view .LVU765 2393 00cc 012081E2 add r2, r1, #1 642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt) 2394 .loc 1 642 7 is_stmt 0 view .LVU766 2395 00d0 0110D1E5 ldrb r1, [r1, #1] @ zero_extendqisi2 637:lib/vsprintf.c **** 2396 .loc 1 637 3 view .LVU767 2397 00d4 04208DE5 str r2, [sp, #4] 642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt) 2398 .loc 1 642 3 is_stmt 1 view .LVU768 642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt) 2399 .loc 1 642 6 is_stmt 0 view .LVU769 2400 00d8 2A0051E3 cmp r1, #42 652:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 2401 .loc 1 652 7 view .LVU770 2402 00dc 0100D6E7 ldrb r0, [r6, r1] @ zero_extendqisi2 642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt) 2403 .loc 1 642 6 view .LVU771 2404 00e0 1800001A bne .L263 2405 .L264: 2406 00e4 0200A0E1 mov r0, r2 643:lib/vsprintf.c **** fmt++; 2407 .loc 1 643 26 is_stmt 1 view .LVU772 643:lib/vsprintf.c **** fmt++; 2408 .loc 1 643 12 is_stmt 0 view .LVU773 2409 00e8 0110D2E4 ldrb r1, [r2], #1 @ zero_extendqisi2 2410 00ec 03C0A0E1 mov ip, r3 643:lib/vsprintf.c **** fmt++; 2411 .loc 1 643 26 view .LVU774 2412 00f0 0130D6E7 ldrb r3, [r6, r1] @ zero_extendqisi2 2413 00f4 A332A0E1 lsr r3, r3, #5 2414 00f8 013023E2 eor r3, r3, #1 2415 00fc 000051E3 cmp r1, #0 2416 0100 0030A003 moveq r3, #0 2417 0104 01300312 andne r3, r3, #1 2418 0108 000053E3 cmp r3, #0 2419 010c F4FFFF1A bne .L264 2420 0110 00005CE3 cmp ip, #0 2421 0114 04008D15 strne r0, [sp, #4] 2422 .LVL251: 2423 .L266: 643:lib/vsprintf.c **** fmt++; 2424 .loc 1 643 26 view .LVU775 2425 0118 0430A0E1 mov r3, r4 2426 .LVL252: 645:lib/vsprintf.c **** str++; 2427 .loc 1 645 26 is_stmt 1 view .LVU776 645:lib/vsprintf.c **** str++; 2428 .loc 1 645 12 is_stmt 0 view .LVU777 2429 011c 0110D4E4 ldrb r1, [r4], #1 @ zero_extendqisi2 645:lib/vsprintf.c **** str++; 2430 .loc 1 645 26 view .LVU778 2431 0120 0120D6E7 ldrb r2, [r6, r1] @ zero_extendqisi2 2432 0124 A222A0E1 lsr r2, r2, #5 2433 0128 012022E2 eor r2, r2, #1 2434 012c 000051E3 cmp r1, #0 2435 0130 0020A003 moveq r2, #0 2436 0134 01200212 andne r2, r2, #1 2437 0138 000052E3 cmp r2, #0 2438 013c F5FFFF1A bne .L266 2439 .LVL253: 2440 .L262: 2441 .LBB21: 679:lib/vsprintf.c **** if (field_width == -1) 2442 .loc 1 679 10 view .LVU779 2443 0140 0340A0E1 mov r4, r3 2444 0144 B4FFFFEA b .L255 2445 .LVL254: 2446 .L263: 679:lib/vsprintf.c **** if (field_width == -1) 2447 .loc 1 679 10 view .LVU780 2448 .LBE21: 651:lib/vsprintf.c **** if (isdigit(*fmt)) 2449 .loc 1 651 3 is_stmt 1 view .LVU781 652:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 2450 .loc 1 652 3 view .LVU782 652:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 2451 .loc 1 652 6 is_stmt 0 view .LVU783 2452 0148 040010E3 tst r0, #4 651:lib/vsprintf.c **** if (isdigit(*fmt)) 2453 .loc 1 651 15 view .LVU784 2454 014c 0000E003 mvneq r0, #0 652:lib/vsprintf.c **** field_width = skip_atoi(&fmt); 2455 .loc 1 652 6 view .LVU785 653:lib/vsprintf.c **** 2456 .loc 1 653 4 is_stmt 1 view .LVU786 653:lib/vsprintf.c **** 2457 .loc 1 653 18 is_stmt 0 view .LVU787 2458 0150 04008D12 addne r0, sp, #4 2459 0154 FEFFFF1B blne skip_atoi 2460 .LVL255: 2461 .L267: 656:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || 2462 .loc 1 656 3 is_stmt 1 view .LVU788 657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 2463 .loc 1 657 3 view .LVU789 657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 2464 .loc 1 657 7 is_stmt 0 view .LVU790 2465 0158 04209DE5 ldr r2, [sp, #4] 2466 015c 0030D2E5 ldrb r3, [r2] @ zero_extendqisi2 657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 2467 .loc 1 657 6 view .LVU791 2468 0160 FB1003E2 and r1, r3, #251 2469 0164 680051E3 cmp r1, #104 2470 0168 1E00000A beq .L268 657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 2471 .loc 1 657 34 discriminator 1 view .LVU792 2472 016c 4C0053E3 cmp r3, #76 659:lib/vsprintf.c **** if (qualifier == *fmt) { 2473 .loc 1 659 20 discriminator 1 view .LVU793 2474 0170 01208202 addeq r2, r2, #1 657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 2475 .loc 1 657 34 discriminator 1 view .LVU794 2476 0174 2500000A beq .L270 657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') { 2477 .loc 1 657 49 discriminator 2 view .LVU795 2478 0178 5A0053E3 cmp r3, #90 2479 017c 0200000A beq .L271 658:lib/vsprintf.c **** qualifier = *fmt++; 2480 .loc 1 658 19 view .LVU796 2481 0180 7A0053E3 cmp r3, #122 656:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || 2482 .loc 1 656 13 view .LVU797 2483 0184 0030E013 mvnne r3, #0 658:lib/vsprintf.c **** qualifier = *fmt++; 2484 .loc 1 658 19 view .LVU798 2485 0188 0100001A bne .L272 2486 .L271: 659:lib/vsprintf.c **** if (qualifier == *fmt) { 2487 .loc 1 659 4 is_stmt 1 view .LVU799 659:lib/vsprintf.c **** if (qualifier == *fmt) { 2488 .loc 1 659 20 is_stmt 0 view .LVU800 2489 018c 012082E2 add r2, r2, #1 2490 0190 04208DE5 str r2, [sp, #4] 2491 .LVL256: 660:lib/vsprintf.c **** if (qualifier == 'h') { 2492 .loc 1 660 4 is_stmt 1 view .LVU801 2493 .L272: 670:lib/vsprintf.c **** is_sign = 0; 2494 .loc 1 670 3 view .LVU802 671:lib/vsprintf.c **** 2495 .loc 1 671 3 view .LVU803 673:lib/vsprintf.c **** break; 2496 .loc 1 673 3 view .LVU804 673:lib/vsprintf.c **** break; 2497 .loc 1 673 8 is_stmt 0 view .LVU805 2498 0194 04109DE5 ldr r1, [sp, #4] 2499 0198 0020D1E5 ldrb r2, [r1] @ zero_extendqisi2 673:lib/vsprintf.c **** break; 2500 .loc 1 673 6 view .LVU806 2501 019c 000052E3 cmp r2, #0 2502 01a0 0C00000A beq .L254 673:lib/vsprintf.c **** break; 2503 .loc 1 673 17 discriminator 1 view .LVU807 2504 01a4 00C0D4E5 ldrb ip, [r4] @ zero_extendqisi2 673:lib/vsprintf.c **** break; 2505 .loc 1 673 13 discriminator 1 view .LVU808 2506 01a8 00005CE3 cmp ip, #0 2507 01ac 0900000A beq .L254 676:lib/vsprintf.c **** case 'c': 2508 .loc 1 676 3 is_stmt 1 view .LVU809 676:lib/vsprintf.c **** case 'c': 2509 .loc 1 676 14 is_stmt 0 view .LVU810 2510 01b0 011081E2 add r1, r1, #1 676:lib/vsprintf.c **** case 'c': 2511 .loc 1 676 3 view .LVU811 2512 01b4 780052E3 cmp r2, #120 676:lib/vsprintf.c **** case 'c': 2513 .loc 1 676 14 view .LVU812 2514 01b8 04108DE5 str r1, [sp, #4] 676:lib/vsprintf.c **** case 'c': 2515 .loc 1 676 3 view .LVU813 2516 01bc 0500008A bhi .L254 2517 01c0 620052E3 cmp r2, #98 2518 01c4 1400008A bhi .L274 2519 01c8 250052E3 cmp r2, #37 2520 01cc 7D00000A beq .L275 2521 01d0 580052E3 cmp r2, #88 2522 01d4 7F00000A beq .L320 2523 .LVL257: 2524 .L254: 728:lib/vsprintf.c **** return num; 729:lib/vsprintf.c **** continue; 730:lib/vsprintf.c **** default: 731:lib/vsprintf.c **** /* invalid format; stop here */ 732:lib/vsprintf.c **** return num; 733:lib/vsprintf.c **** } 734:lib/vsprintf.c **** 735:lib/vsprintf.c **** /* have some sort of integer conversion. 736:lib/vsprintf.c **** * first, skip white space in buffer. 737:lib/vsprintf.c **** */ 738:lib/vsprintf.c **** while (isspace(*str)) 739:lib/vsprintf.c **** str++; 740:lib/vsprintf.c **** 741:lib/vsprintf.c **** digit = *str; 742:lib/vsprintf.c **** if (is_sign && digit == '-') 743:lib/vsprintf.c **** digit = *(str + 1); 744:lib/vsprintf.c **** 745:lib/vsprintf.c **** if (!digit 746:lib/vsprintf.c **** || (base == 16 && !isxdigit(digit)) 747:lib/vsprintf.c **** || (base == 10 && !isdigit(digit)) 748:lib/vsprintf.c **** || (base == 8 && (!isdigit(digit) || digit > '7')) 749:lib/vsprintf.c **** || (base == 0 && !isdigit(digit))) 750:lib/vsprintf.c **** break; 751:lib/vsprintf.c **** 752:lib/vsprintf.c **** switch(qualifier) { 753:lib/vsprintf.c **** case 'H': /* that's 'hh' in format */ 754:lib/vsprintf.c **** if (is_sign) { 755:lib/vsprintf.c **** signed char *s = (signed char *) va_arg(args,signed char *); 756:lib/vsprintf.c **** *s = (signed char) strtol(str,&next,base); 757:lib/vsprintf.c **** } else { 758:lib/vsprintf.c **** unsigned char *s = (unsigned char *) va_arg(args, unsigned char *); 759:lib/vsprintf.c **** *s = (unsigned char) strtoul(str, &next, base); 760:lib/vsprintf.c **** } 761:lib/vsprintf.c **** break; 762:lib/vsprintf.c **** case 'h': 763:lib/vsprintf.c **** if (is_sign) { 764:lib/vsprintf.c **** short *s = (short *) va_arg(args,short *); 765:lib/vsprintf.c **** *s = (short) strtol(str,&next,base); 766:lib/vsprintf.c **** } else { 767:lib/vsprintf.c **** unsigned short *s = (unsigned short *) va_arg(args, unsigned short *); 768:lib/vsprintf.c **** *s = (unsigned short) strtoul(str, &next, base); 769:lib/vsprintf.c **** } 770:lib/vsprintf.c **** break; 771:lib/vsprintf.c **** case 'l': 772:lib/vsprintf.c **** if (is_sign) { 773:lib/vsprintf.c **** long *l = (long *) va_arg(args,long *); 774:lib/vsprintf.c **** *l = strtol(str,&next,base); 775:lib/vsprintf.c **** } else { 776:lib/vsprintf.c **** unsigned long *l = (unsigned long*) va_arg(args,unsigned long*); 777:lib/vsprintf.c **** *l = strtoul(str,&next,base); 778:lib/vsprintf.c **** } 779:lib/vsprintf.c **** break; 780:lib/vsprintf.c **** case 'L': 781:lib/vsprintf.c **** if (is_sign) { 782:lib/vsprintf.c **** long long *l = (long long*) va_arg(args,long long *); 783:lib/vsprintf.c **** *l = strtoll(str,&next,base); 784:lib/vsprintf.c **** } else { 785:lib/vsprintf.c **** unsigned long long *l = (unsigned long long*) va_arg(args,unsigned long long*); 786:lib/vsprintf.c **** *l = strtoull(str,&next,base); 787:lib/vsprintf.c **** } 788:lib/vsprintf.c **** break; 789:lib/vsprintf.c **** case 'Z': 790:lib/vsprintf.c **** case 'z': 791:lib/vsprintf.c **** { 792:lib/vsprintf.c **** size_t *s = (size_t*) va_arg(args,size_t*); 793:lib/vsprintf.c **** *s = (size_t) strtoul(str,&next,base); 794:lib/vsprintf.c **** } 795:lib/vsprintf.c **** break; 796:lib/vsprintf.c **** default: 797:lib/vsprintf.c **** if (is_sign) { 798:lib/vsprintf.c **** int *i = (int *) va_arg(args, int*); 799:lib/vsprintf.c **** *i = (int) strtol(str,&next,base); 800:lib/vsprintf.c **** } else { 801:lib/vsprintf.c **** unsigned int *i = (unsigned int*) va_arg(args, unsigned int*); 802:lib/vsprintf.c **** *i = (unsigned int) strtoul(str,&next,base); 803:lib/vsprintf.c **** } 804:lib/vsprintf.c **** break; 805:lib/vsprintf.c **** } 806:lib/vsprintf.c **** num++; 807:lib/vsprintf.c **** 808:lib/vsprintf.c **** if (!next) 809:lib/vsprintf.c **** break; 810:lib/vsprintf.c **** str = next; 811:lib/vsprintf.c **** } 812:lib/vsprintf.c **** return num; 813:lib/vsprintf.c **** } 2525 .loc 1 813 1 view .LVU814 2526 01d8 0700A0E1 mov r0, r7 2527 01dc 10D08DE2 add sp, sp, #16 2528 .LCFI41: 2529 .cfi_remember_state 2530 .cfi_def_cfa_offset 24 2531 @ sp needed 2532 01e0 F041BDE8 pop {r4, r5, r6, r7, r8, lr} 2533 .LCFI42: 2534 .cfi_restore 14 2535 .cfi_restore 8 2536 .cfi_restore 7 2537 .cfi_restore 6 2538 .cfi_restore 5 2539 .cfi_restore 4 2540 .cfi_def_cfa_offset 0 2541 .LVL258: 2542 .loc 1 813 1 view .LVU815 2543 01e4 1EFF2FE1 bx lr 2544 .LVL259: 2545 .L268: 2546 .LCFI43: 2547 .cfi_restore_state 659:lib/vsprintf.c **** if (qualifier == *fmt) { 2548 .loc 1 659 4 is_stmt 1 view .LVU816 659:lib/vsprintf.c **** if (qualifier == *fmt) { 2549 .loc 1 659 20 is_stmt 0 view .LVU817 2550 01e8 011082E2 add r1, r2, #1 2551 01ec 04108DE5 str r1, [sp, #4] 2552 .LVL260: 660:lib/vsprintf.c **** if (qualifier == 'h') { 2553 .loc 1 660 4 is_stmt 1 view .LVU818 660:lib/vsprintf.c **** if (qualifier == 'h') { 2554 .loc 1 660 7 is_stmt 0 view .LVU819 2555 01f0 0110D2E5 ldrb r1, [r2, #1] @ zero_extendqisi2 2556 01f4 030051E1 cmp r1, r3 2557 01f8 E5FFFF1A bne .L272 661:lib/vsprintf.c **** qualifier = 'H'; 2558 .loc 1 661 5 is_stmt 1 view .LVU820 661:lib/vsprintf.c **** qualifier = 'H'; 2559 .loc 1 661 8 is_stmt 0 view .LVU821 2560 01fc 680053E3 cmp r3, #104 663:lib/vsprintf.c **** } else if (qualifier == 'l') { 2561 .loc 1 663 9 view .LVU822 2562 0200 022082E2 add r2, r2, #2 661:lib/vsprintf.c **** qualifier = 'H'; 2563 .loc 1 661 8 view .LVU823 662:lib/vsprintf.c **** fmt++; 2564 .loc 1 662 6 is_stmt 1 view .LVU824 2565 .LVL261: 663:lib/vsprintf.c **** } else if (qualifier == 'l') { 2566 .loc 1 663 6 view .LVU825 662:lib/vsprintf.c **** fmt++; 2567 .loc 1 662 16 is_stmt 0 view .LVU826 2568 0204 4830A003 moveq r3, #72 663:lib/vsprintf.c **** } else if (qualifier == 'l') { 2569 .loc 1 663 9 view .LVU827 2570 0208 04208D05 streq r2, [sp, #4] 2571 020c E0FFFF0A beq .L272 2572 .LVL262: 2573 .L270: 665:lib/vsprintf.c **** fmt++; 2574 .loc 1 665 16 view .LVU828 2575 0210 4C30A0E3 mov r3, #76 666:lib/vsprintf.c **** } 2576 .loc 1 666 9 view .LVU829 2577 0214 04208DE5 str r2, [sp, #4] 2578 0218 DDFFFFEA b .L272 2579 .LVL263: 2580 .L274: 676:lib/vsprintf.c **** case 'c': 2581 .loc 1 676 3 view .LVU830 2582 021c 632042E2 sub r2, r2, #99 2583 0220 150052E3 cmp r2, #21 2584 0224 02F19F97 ldrls pc, [pc, r2, asl #2] 2585 0228 EAFFFFEA b .L254 2586 .L277: 2587 022c 0C030000 .word .L284 2588 0230 00030000 .word .L283 2589 0234 D8010000 .word .L254 2590 0238 D8010000 .word .L254 2591 023c D8010000 .word .L254 2592 0240 D8010000 .word .L254 2593 0244 BC030000 .word .L282 2594 0248 D8010000 .word .L254 2595 024c D8010000 .word .L254 2596 0250 D8010000 .word .L254 2597 0254 D8010000 .word .L254 2598 0258 A8030000 .word .L281 2599 025c 84020000 .word .L280 2600 0260 D8010000 .word .L254 2601 0264 D8010000 .word .L254 2602 0268 D8010000 .word .L254 2603 026c 4C030000 .word .L279 2604 0270 D8010000 .word .L254 2605 0274 D0030000 .word .L278 2606 0278 D8010000 .word .L254 2607 027c D8010000 .word .L254 2608 0280 D8030000 .word .L320 2609 .L280: 671:lib/vsprintf.c **** 2610 .loc 1 671 11 view .LVU831 2611 0284 0010A0E3 mov r1, #0 713:lib/vsprintf.c **** break; 2612 .loc 1 713 9 view .LVU832 2613 0288 0820A0E3 mov r2, #8 2614 .LVL264: 2615 .L295: 738:lib/vsprintf.c **** str++; 2616 .loc 1 738 10 view .LVU833 2617 028c 00C0D4E5 ldrb ip, [r4] @ zero_extendqisi2 2618 0290 0CE0D6E7 ldrb lr, [r6, ip] @ zero_extendqisi2 2619 0294 20001EE3 tst lr, #32 2620 0298 0400A0E1 mov r0, r4 2621 .LVL265: 738:lib/vsprintf.c **** str++; 2622 .loc 1 738 10 is_stmt 1 view .LVU834 2623 029c 014084E2 add r4, r4, #1 2624 02a0 F9FFFF1A bne .L295 741:lib/vsprintf.c **** if (is_sign && digit == '-') 2625 .loc 1 741 3 view .LVU835 2626 .LVL266: 742:lib/vsprintf.c **** digit = *(str + 1); 2627 .loc 1 742 3 view .LVU836 742:lib/vsprintf.c **** digit = *(str + 1); 2628 .loc 1 742 6 is_stmt 0 view .LVU837 2629 02a4 2D005CE3 cmp ip, #45 2630 02a8 00E0A013 movne lr, #0 2631 02ac 01E00102 andeq lr, r1, #1 2632 02b0 00005EE3 cmp lr, #0 743:lib/vsprintf.c **** 2633 .loc 1 743 4 is_stmt 1 view .LVU838 743:lib/vsprintf.c **** 2634 .loc 1 743 10 is_stmt 0 view .LVU839 2635 02b4 01C0D015 ldrbne ip, [r0, #1] @ zero_extendqisi2 2636 .LVL267: 745:lib/vsprintf.c **** || (base == 16 && !isxdigit(digit)) 2637 .loc 1 745 3 is_stmt 1 view .LVU840 745:lib/vsprintf.c **** || (base == 16 && !isxdigit(digit)) 2638 .loc 1 745 6 is_stmt 0 view .LVU841 2639 02b8 00005CE3 cmp ip, #0 2640 02bc C5FFFF0A beq .L254 746:lib/vsprintf.c **** || (base == 10 && !isdigit(digit)) 2641 .loc 1 746 21 view .LVU842 2642 02c0 100052E3 cmp r2, #16 748:lib/vsprintf.c **** || (base == 0 && !isdigit(digit))) 2643 .loc 1 748 40 view .LVU843 2644 02c4 0CE0D6E7 ldrb lr, [r6, ip] @ zero_extendqisi2 746:lib/vsprintf.c **** || (base == 10 && !isdigit(digit)) 2645 .loc 1 746 21 view .LVU844 2646 02c8 4500000A beq .L297 747:lib/vsprintf.c **** || (base == 8 && (!isdigit(digit) || digit > '7')) 2647 .loc 1 747 21 view .LVU845 2648 02cc 0A0052E3 cmp r2, #10 2649 02d0 04E00EE2 and lr, lr, #4 2650 02d4 5400000A beq .L376 748:lib/vsprintf.c **** || (base == 0 && !isdigit(digit))) 2651 .loc 1 748 21 view .LVU846 2652 02d8 080052E3 cmp r2, #8 2653 02dc 5200001A bne .L376 748:lib/vsprintf.c **** || (base == 0 && !isdigit(digit))) 2654 .loc 1 748 55 discriminator 1 view .LVU847 2655 02e0 37005CE3 cmp ip, #55 2656 02e4 00C0A093 movls ip, #0 2657 .LVL268: 748:lib/vsprintf.c **** || (base == 0 && !isdigit(digit))) 2658 .loc 1 748 55 discriminator 1 view .LVU848 2659 02e8 01C0A083 movhi ip, #1 2660 02ec 00005EE3 cmp lr, #0 2661 02f0 01C08C03 orreq ip, ip, #1 2662 02f4 00005CE3 cmp ip, #0 2663 02f8 3B00000A beq .L301 2664 02fc B5FFFFEA b .L254 2665 .LVL269: 2666 .L283: 676:lib/vsprintf.c **** case 'c': 2667 .loc 1 676 3 view .LVU849 2668 0300 0110A0E3 mov r1, #1 2669 .L378: 670:lib/vsprintf.c **** is_sign = 0; 2670 .loc 1 670 8 view .LVU850 2671 0304 0A20A0E3 mov r2, #10 2672 0308 DFFFFFEA b .L295 2673 .L284: 2674 .LBB22: 679:lib/vsprintf.c **** if (field_width == -1) 2675 .loc 1 679 4 is_stmt 1 view .LVU851 2676 .LVL270: 681:lib/vsprintf.c **** do { 2677 .loc 1 681 17 is_stmt 0 view .LVU852 2678 030c 010070E3 cmn r0, #1 2679 0310 0100A003 moveq r0, #1 2680 0314 0430A0E1 mov r3, r4 2681 .LVL271: 679:lib/vsprintf.c **** if (field_width == -1) 2682 .loc 1 679 10 view .LVU853 2683 0318 042095E4 ldr r2, [r5], #4 2684 .LVL272: 680:lib/vsprintf.c **** field_width = 1; 2685 .loc 1 680 4 is_stmt 1 view .LVU854 2686 031c 012042E2 sub r2, r2, #1 2687 .LVL273: 2688 .L287: 682:lib/vsprintf.c **** *s++ = *str++; 2689 .loc 1 682 4 discriminator 2 view .LVU855 683:lib/vsprintf.c **** } while (--field_width > 0 && *str); 2690 .loc 1 683 5 discriminator 2 view .LVU856 683:lib/vsprintf.c **** } while (--field_width > 0 && *str); 2691 .loc 1 683 12 is_stmt 0 discriminator 2 view .LVU857 2692 0320 0110D3E4 ldrb r1, [r3], #1 @ zero_extendqisi2 2693 .LVL274: 683:lib/vsprintf.c **** } while (--field_width > 0 && *str); 2694 .loc 1 683 10 discriminator 2 view .LVU858 2695 0324 0110E2E5 strb r1, [r2, #1]! 684:lib/vsprintf.c **** num++; 2696 .loc 1 684 31 is_stmt 1 discriminator 2 view .LVU859 684:lib/vsprintf.c **** num++; 2697 .loc 1 684 31 is_stmt 0 discriminator 2 view .LVU860 2698 0328 031044E0 sub r1, r4, r3 2699 032c 001081E0 add r1, r1, r0 2700 0330 000051E3 cmp r1, #0 2701 0334 020000DA ble .L384 684:lib/vsprintf.c **** num++; 2702 .loc 1 684 31 discriminator 1 view .LVU861 2703 0338 0010D3E5 ldrb r1, [r3] @ zero_extendqisi2 2704 033c 000051E3 cmp r1, #0 2705 0340 F6FFFF1A bne .L287 2706 .LVL275: 2707 .L384: 684:lib/vsprintf.c **** num++; 2708 .loc 1 684 31 discriminator 1 view .LVU862 2709 .LBE22: 2710 .LBB23: 702:lib/vsprintf.c **** } 2711 .loc 1 702 4 is_stmt 1 view .LVU863 702:lib/vsprintf.c **** } 2712 .loc 1 702 7 is_stmt 0 view .LVU864 2713 0344 017087E2 add r7, r7, #1 2714 .LVL276: 702:lib/vsprintf.c **** } 2715 .loc 1 702 7 view .LVU865 2716 .LBE23: 704:lib/vsprintf.c **** case 'n': 2717 .loc 1 704 3 is_stmt 1 view .LVU866 2718 0348 7CFFFFEA b .L262 2719 .LVL277: 2720 .L279: 2721 .LBB24: 690:lib/vsprintf.c **** if(field_width == -1) 2722 .loc 1 690 4 view .LVU867 692:lib/vsprintf.c **** /* first, skip leading white space in buffer */ 2723 .loc 1 692 17 is_stmt 0 view .LVU868 2724 034c 010070E3 cmn r0, #1 2725 0350 0201E003 mvneq r0, #-2147483648 690:lib/vsprintf.c **** if(field_width == -1) 2726 .loc 1 690 10 view .LVU869 2727 0354 042095E4 ldr r2, [r5], #4 2728 .LVL278: 691:lib/vsprintf.c **** field_width = INT_MAX; 2729 .loc 1 691 4 is_stmt 1 view .LVU870 2730 .L289: 691:lib/vsprintf.c **** field_width = INT_MAX; 2731 .loc 1 691 4 is_stmt 0 view .LVU871 2732 0358 0430A0E1 mov r3, r4 2733 .LVL279: 694:lib/vsprintf.c **** str++; 2734 .loc 1 694 11 is_stmt 1 view .LVU872 2735 035c 0110D4E4 ldrb r1, [r4], #1 @ zero_extendqisi2 2736 0360 0110D6E7 ldrb r1, [r6, r1] @ zero_extendqisi2 2737 0364 200011E3 tst r1, #32 2738 0368 FAFFFF1A bne .L289 2739 036c 000083E0 add r0, r3, r0 2740 .LVL280: 2741 .L290: 698:lib/vsprintf.c **** *s++ = *str++; 2742 .loc 1 698 34 view .LVU873 698:lib/vsprintf.c **** *s++ = *str++; 2743 .loc 1 698 11 is_stmt 0 view .LVU874 2744 0370 0010D3E5 ldrb r1, [r3] @ zero_extendqisi2 698:lib/vsprintf.c **** *s++ = *str++; 2745 .loc 1 698 34 view .LVU875 2746 0374 000051E3 cmp r1, #0 2747 0378 0400000A beq .L291 698:lib/vsprintf.c **** *s++ = *str++; 2748 .loc 1 698 16 discriminator 1 view .LVU876 2749 037c 01C0D6E7 ldrb ip, [r6, r1] @ zero_extendqisi2 2750 0380 20001CE3 tst ip, #32 2751 0384 0100001A bne .L291 698:lib/vsprintf.c **** *s++ = *str++; 2752 .loc 1 698 34 discriminator 2 view .LVU877 2753 0388 000053E1 cmp r3, r0 2754 038c 0200001A bne .L292 2755 .LVL281: 2756 .L291: 701:lib/vsprintf.c **** num++; 2757 .loc 1 701 4 is_stmt 1 view .LVU878 701:lib/vsprintf.c **** num++; 2758 .loc 1 701 7 is_stmt 0 view .LVU879 2759 0390 0010A0E3 mov r1, #0 2760 0394 0010C2E5 strb r1, [r2] 2761 0398 E9FFFFEA b .L384 2762 .LVL282: 2763 .L292: 699:lib/vsprintf.c **** } 2764 .loc 1 699 5 is_stmt 1 view .LVU880 699:lib/vsprintf.c **** } 2765 .loc 1 699 10 is_stmt 0 view .LVU881 2766 039c 0110C2E4 strb r1, [r2], #1 2767 .LVL283: 699:lib/vsprintf.c **** } 2768 .loc 1 699 16 view .LVU882 2769 03a0 013083E2 add r3, r3, #1 2770 .LVL284: 699:lib/vsprintf.c **** } 2771 .loc 1 699 16 view .LVU883 2772 03a4 F1FFFFEA b .L290 2773 .LVL285: 2774 .L281: 699:lib/vsprintf.c **** } 2775 .loc 1 699 16 view .LVU884 2776 .LBE24: 2777 .LBB25: 708:lib/vsprintf.c **** *i = str - buf; 2778 .loc 1 708 4 is_stmt 1 view .LVU885 709:lib/vsprintf.c **** } 2779 .loc 1 709 4 view .LVU886 709:lib/vsprintf.c **** } 2780 .loc 1 709 7 is_stmt 0 view .LVU887 2781 03a8 043095E4 ldr r3, [r5], #4 2782 .LVL286: 709:lib/vsprintf.c **** } 2783 .loc 1 709 13 view .LVU888 2784 03ac 082044E0 sub r2, r4, r8 709:lib/vsprintf.c **** } 2785 .loc 1 709 7 view .LVU889 2786 03b0 002083E5 str r2, [r3] 2787 .LBE25: 711:lib/vsprintf.c **** case 'o': 2788 .loc 1 711 3 is_stmt 1 view .LVU890 2789 03b4 0430A0E1 mov r3, r4 2790 03b8 60FFFFEA b .L262 2791 .LVL287: 2792 .L282: 720:lib/vsprintf.c **** case 'd': 2793 .loc 1 720 25 view .LVU891 722:lib/vsprintf.c **** case 'u': 2794 .loc 1 722 12 is_stmt 0 view .LVU892 2795 03bc 0110A0E3 mov r1, #1 720:lib/vsprintf.c **** case 'd': 2796 .loc 1 720 30 view .LVU893 2797 03c0 0020A0E3 mov r2, #0 2798 03c4 B0FFFFEA b .L295 2799 .LVL288: 2800 .L275: 727:lib/vsprintf.c **** return num; 2801 .loc 1 727 4 is_stmt 1 view .LVU894 727:lib/vsprintf.c **** return num; 2802 .loc 1 727 7 is_stmt 0 view .LVU895 2803 03c8 25005CE3 cmp ip, #37 2804 03cc 28FFFFEA b .L385 2805 .LVL289: 2806 .L278: 671:lib/vsprintf.c **** 2807 .loc 1 671 11 view .LVU896 2808 03d0 0010A0E3 mov r1, #0 2809 03d4 CAFFFFEA b .L378 2810 .L320: 2811 03d8 0010A0E3 mov r1, #0 717:lib/vsprintf.c **** break; 2812 .loc 1 717 9 view .LVU897 2813 03dc 1020A0E3 mov r2, #16 2814 .LVL290: 717:lib/vsprintf.c **** break; 2815 .loc 1 717 9 view .LVU898 2816 03e0 A9FFFFEA b .L295 2817 .LVL291: 2818 .L297: 746:lib/vsprintf.c **** || (base == 10 && !isdigit(digit)) 2819 .loc 1 746 36 discriminator 1 view .LVU899 2820 03e4 44001EE3 tst lr, #68 2821 03e8 7AFFFF0A beq .L254 2822 .LVL292: 2823 .L301: 752:lib/vsprintf.c **** case 'H': /* that's 'hh' in format */ 2824 .loc 1 752 3 is_stmt 1 view .LVU900 2825 03ec 680053E3 cmp r3, #104 2826 .LBB26: 679:lib/vsprintf.c **** if (field_width == -1) 2827 .loc 1 679 10 is_stmt 0 view .LVU901 2828 03f0 044095E4 ldr r4, [r5], #4 2829 .LVL293: 679:lib/vsprintf.c **** if (field_width == -1) 2830 .loc 1 679 10 view .LVU902 2831 .LBE26: 752:lib/vsprintf.c **** case 'H': /* that's 'hh' in format */ 2832 .loc 1 752 3 view .LVU903 2833 03f4 2200000A beq .L302 2834 03f8 0E0000CA bgt .L303 2835 03fc 4C0053E3 cmp r3, #76 2836 0400 2700000A beq .L304 2837 0404 5A0053E3 cmp r3, #90 2838 0408 0E00000A beq .L305 2839 040c 480053E3 cmp r3, #72 2840 0410 0F00000A beq .L306 2841 .L307: 797:lib/vsprintf.c **** int *i = (int *) va_arg(args, int*); 2842 .loc 1 797 4 is_stmt 1 view .LVU904 797:lib/vsprintf.c **** int *i = (int *) va_arg(args, int*); 2843 .loc 1 797 7 is_stmt 0 view .LVU905 2844 0414 000051E3 cmp r1, #0 2845 .LBB27: 799:lib/vsprintf.c **** } else { 2846 .loc 1 799 16 view .LVU906 2847 0418 0C108DE2 add r1, sp, #12 2848 .LVL294: 799:lib/vsprintf.c **** } else { 2849 .loc 1 799 16 view .LVU907 2850 .LBE27: 797:lib/vsprintf.c **** int *i = (int *) va_arg(args, int*); 2851 .loc 1 797 7 view .LVU908 2852 041c 0A00000A beq .L314 2853 .LBB28: 798:lib/vsprintf.c **** *i = (int) strtol(str,&next,base); 2854 .loc 1 798 5 is_stmt 1 view .LVU909 2855 .LVL295: 799:lib/vsprintf.c **** } else { 2856 .loc 1 799 5 view .LVU910 799:lib/vsprintf.c **** } else { 2857 .loc 1 799 16 is_stmt 0 view .LVU911 2858 0420 FEFFFFEB bl strtol 2859 .LVL296: 2860 .L380: 799:lib/vsprintf.c **** } else { 2861 .loc 1 799 16 view .LVU912 2862 .LBE28: 2863 .LBB29: 802:lib/vsprintf.c **** } 2864 .loc 1 802 8 view .LVU913 2865 0424 000084E5 str r0, [r4] 2866 0428 0E0000EA b .L310 2867 .LVL297: 2868 .L376: 802:lib/vsprintf.c **** } 2869 .loc 1 802 8 view .LVU914 2870 .LBE29: 749:lib/vsprintf.c **** break; 2871 .loc 1 749 35 discriminator 1 view .LVU915 2872 042c 00005EE3 cmp lr, #0 2873 0430 EDFFFF1A bne .L301 2874 0434 67FFFFEA b .L254 2875 .LVL298: 2876 .L303: 752:lib/vsprintf.c **** case 'H': /* that's 'hh' in format */ 2877 .loc 1 752 3 view .LVU916 2878 0438 6C0053E3 cmp r3, #108 2879 043c F4FFFF0A beq .L307 2880 0440 7A0053E3 cmp r3, #122 2881 0444 F2FFFF1A bne .L307 2882 .L305: 2883 .LBB30: 792:lib/vsprintf.c **** *s = (size_t) strtoul(str,&next,base); 2884 .loc 1 792 4 is_stmt 1 view .LVU917 2885 .LVL299: 793:lib/vsprintf.c **** } 2886 .loc 1 793 4 view .LVU918 793:lib/vsprintf.c **** } 2887 .loc 1 793 18 is_stmt 0 view .LVU919 2888 0448 0C108DE2 add r1, sp, #12 2889 .LVL300: 2890 .L314: 793:lib/vsprintf.c **** } 2891 .loc 1 793 18 view .LVU920 2892 .LBE30: 2893 .LBB31: 801:lib/vsprintf.c **** *i = (unsigned int) strtoul(str,&next,base); 2894 .loc 1 801 5 is_stmt 1 view .LVU921 802:lib/vsprintf.c **** } 2895 .loc 1 802 5 view .LVU922 802:lib/vsprintf.c **** } 2896 .loc 1 802 25 is_stmt 0 view .LVU923 2897 044c FEFFFFEB bl strtoul 2898 .LVL301: 802:lib/vsprintf.c **** } 2899 .loc 1 802 25 view .LVU924 2900 0450 F3FFFFEA b .L380 2901 .LVL302: 2902 .L306: 802:lib/vsprintf.c **** } 2903 .loc 1 802 25 view .LVU925 2904 .LBE31: 754:lib/vsprintf.c **** signed char *s = (signed char *) va_arg(args,signed char *); 2905 .loc 1 754 4 is_stmt 1 view .LVU926 754:lib/vsprintf.c **** signed char *s = (signed char *) va_arg(args,signed char *); 2906 .loc 1 754 7 is_stmt 0 view .LVU927 2907 0454 000051E3 cmp r1, #0 2908 .LBB32: 756:lib/vsprintf.c **** } else { 2909 .loc 1 756 24 view .LVU928 2910 0458 0C108DE2 add r1, sp, #12 2911 .LVL303: 756:lib/vsprintf.c **** } else { 2912 .loc 1 756 24 view .LVU929 2913 .LBE32: 754:lib/vsprintf.c **** signed char *s = (signed char *) va_arg(args,signed char *); 2914 .loc 1 754 7 view .LVU930 2915 045c 0600000A beq .L309 2916 .LBB33: 755:lib/vsprintf.c **** *s = (signed char) strtol(str,&next,base); 2917 .loc 1 755 5 is_stmt 1 view .LVU931 2918 .LVL304: 756:lib/vsprintf.c **** } else { 2919 .loc 1 756 5 view .LVU932 756:lib/vsprintf.c **** } else { 2920 .loc 1 756 24 is_stmt 0 view .LVU933 2921 0460 FEFFFFEB bl strtol 2922 .LVL305: 2923 .L379: 756:lib/vsprintf.c **** } else { 2924 .loc 1 756 24 view .LVU934 2925 .LBE33: 2926 .LBB34: 759:lib/vsprintf.c **** } 2927 .loc 1 759 10 view .LVU935 2928 0464 0000C4E5 strb r0, [r4] 2929 .L310: 2930 .LVL306: 759:lib/vsprintf.c **** } 2931 .loc 1 759 10 view .LVU936 2932 .LBE34: 806:lib/vsprintf.c **** 2933 .loc 1 806 3 is_stmt 1 view .LVU937 808:lib/vsprintf.c **** break; 2934 .loc 1 808 7 is_stmt 0 view .LVU938 2935 0468 0C309DE5 ldr r3, [sp, #12] 808:lib/vsprintf.c **** break; 2936 .loc 1 808 6 view .LVU939 2937 046c 000053E3 cmp r3, #0 806:lib/vsprintf.c **** 2938 .loc 1 806 6 view .LVU940 2939 0470 017087E2 add r7, r7, #1 2940 .LVL307: 808:lib/vsprintf.c **** break; 2941 .loc 1 808 3 is_stmt 1 view .LVU941 808:lib/vsprintf.c **** break; 2942 .loc 1 808 6 is_stmt 0 view .LVU942 2943 0474 31FFFF1A bne .L262 2944 0478 56FFFFEA b .L254 2945 .LVL308: 2946 .L309: 2947 .LBB35: 758:lib/vsprintf.c **** *s = (unsigned char) strtoul(str, &next, base); 2948 .loc 1 758 5 is_stmt 1 view .LVU943 759:lib/vsprintf.c **** } 2949 .loc 1 759 5 view .LVU944 759:lib/vsprintf.c **** } 2950 .loc 1 759 26 is_stmt 0 view .LVU945 2951 047c FEFFFFEB bl strtoul 2952 .LVL309: 759:lib/vsprintf.c **** } 2953 .loc 1 759 26 view .LVU946 2954 0480 F7FFFFEA b .L379 2955 .LVL310: 2956 .L302: 759:lib/vsprintf.c **** } 2957 .loc 1 759 26 view .LVU947 2958 .LBE35: 763:lib/vsprintf.c **** short *s = (short *) va_arg(args,short *); 2959 .loc 1 763 4 is_stmt 1 view .LVU948 763:lib/vsprintf.c **** short *s = (short *) va_arg(args,short *); 2960 .loc 1 763 7 is_stmt 0 view .LVU949 2961 0484 000051E3 cmp r1, #0 2962 .LBB36: 765:lib/vsprintf.c **** } else { 2963 .loc 1 765 18 view .LVU950 2964 0488 0C108DE2 add r1, sp, #12 2965 .LVL311: 765:lib/vsprintf.c **** } else { 2966 .loc 1 765 18 view .LVU951 2967 .LBE36: 763:lib/vsprintf.c **** short *s = (short *) va_arg(args,short *); 2968 .loc 1 763 7 view .LVU952 2969 048c 0200000A beq .L311 2970 .LBB37: 764:lib/vsprintf.c **** *s = (short) strtol(str,&next,base); 2971 .loc 1 764 5 is_stmt 1 view .LVU953 2972 .LVL312: 765:lib/vsprintf.c **** } else { 2973 .loc 1 765 5 view .LVU954 765:lib/vsprintf.c **** } else { 2974 .loc 1 765 18 is_stmt 0 view .LVU955 2975 0490 FEFFFFEB bl strtol 2976 .LVL313: 2977 .L381: 765:lib/vsprintf.c **** } else { 2978 .loc 1 765 18 view .LVU956 2979 .LBE37: 2980 .LBB38: 768:lib/vsprintf.c **** } 2981 .loc 1 768 10 view .LVU957 2982 0494 B000C4E1 strh r0, [r4] @ movhi 2983 0498 F2FFFFEA b .L310 2984 .LVL314: 2985 .L311: 767:lib/vsprintf.c **** *s = (unsigned short) strtoul(str, &next, base); 2986 .loc 1 767 5 is_stmt 1 view .LVU958 768:lib/vsprintf.c **** } 2987 .loc 1 768 5 view .LVU959 768:lib/vsprintf.c **** } 2988 .loc 1 768 27 is_stmt 0 view .LVU960 2989 049c FEFFFFEB bl strtoul 2990 .LVL315: 768:lib/vsprintf.c **** } 2991 .loc 1 768 27 view .LVU961 2992 04a0 FBFFFFEA b .L381 2993 .LVL316: 2994 .L304: 768:lib/vsprintf.c **** } 2995 .loc 1 768 27 view .LVU962 2996 .LBE38: 781:lib/vsprintf.c **** long long *l = (long long*) va_arg(args,long long *); 2997 .loc 1 781 4 is_stmt 1 view .LVU963 781:lib/vsprintf.c **** long long *l = (long long*) va_arg(args,long long *); 2998 .loc 1 781 7 is_stmt 0 view .LVU964 2999 04a4 000051E3 cmp r1, #0 3000 .LBB39: 783:lib/vsprintf.c **** } else { 3001 .loc 1 783 10 view .LVU965 3002 04a8 0C108DE2 add r1, sp, #12 3003 .LVL317: 783:lib/vsprintf.c **** } else { 3004 .loc 1 783 10 view .LVU966 3005 .LBE39: 781:lib/vsprintf.c **** long long *l = (long long*) va_arg(args,long long *); 3006 .loc 1 781 7 view .LVU967 3007 04ac 0200000A beq .L313 3008 .LBB40: 782:lib/vsprintf.c **** *l = strtoll(str,&next,base); 3009 .loc 1 782 5 is_stmt 1 view .LVU968 3010 .LVL318: 783:lib/vsprintf.c **** } else { 3011 .loc 1 783 5 view .LVU969 783:lib/vsprintf.c **** } else { 3012 .loc 1 783 10 is_stmt 0 view .LVU970 3013 04b0 FEFFFFEB bl strtoll 3014 .LVL319: 3015 .L382: 783:lib/vsprintf.c **** } else { 3016 .loc 1 783 10 view .LVU971 3017 .LBE40: 3018 .LBB41: 786:lib/vsprintf.c **** } 3019 .loc 1 786 8 view .LVU972 3020 04b4 030084E8 stm r4, {r0-r1} 3021 04b8 EAFFFFEA b .L310 3022 .LVL320: 3023 .L313: 785:lib/vsprintf.c **** *l = strtoull(str,&next,base); 3024 .loc 1 785 5 is_stmt 1 view .LVU973 786:lib/vsprintf.c **** } 3025 .loc 1 786 5 view .LVU974 786:lib/vsprintf.c **** } 3026 .loc 1 786 10 is_stmt 0 view .LVU975 3027 04bc FEFFFFEB bl strtoull 3028 .LVL321: 786:lib/vsprintf.c **** } 3029 .loc 1 786 10 view .LVU976 3030 04c0 FBFFFFEA b .L382 3031 .L389: 3032 .align 2 3033 .L388: 3034 04c4 00000000 .word _ctype 3035 .LBE41: 3036 .cfi_endproc 3037 .LFE14: 3039 .section .text.sscanf,"ax",%progbits 3040 .align 2 3041 .global sscanf 3042 .syntax unified 3043 .arm 3045 sscanf: 3046 .LVL322: 3047 .LFB15: 814:lib/vsprintf.c **** 815:lib/vsprintf.c **** 816:lib/vsprintf.c **** /** 817:lib/vsprintf.c **** * sscanf - Unformat a buffer into a list of arguments 818:lib/vsprintf.c **** * @buf: input buffer 819:lib/vsprintf.c **** * @fmt: formatting of buffer 820:lib/vsprintf.c **** * @...: resulting arguments 821:lib/vsprintf.c **** */ 822:lib/vsprintf.c **** int sscanf(const char * buf, const char * fmt, ...) 823:lib/vsprintf.c **** { 3048 .loc 1 823 1 is_stmt 1 view -0 3049 .cfi_startproc 3050 @ Function supports interworking. 3051 @ args = 4, pretend = 12, frame = 8 3052 @ frame_needed = 0, uses_anonymous_args = 1 824:lib/vsprintf.c **** va_list args; 3053 .loc 1 824 2 view .LVU978 825:lib/vsprintf.c **** int i; 3054 .loc 1 825 2 view .LVU979 826:lib/vsprintf.c **** 827:lib/vsprintf.c **** va_start(args,fmt); 3055 .loc 1 827 2 view .LVU980 823:lib/vsprintf.c **** va_list args; 3056 .loc 1 823 1 is_stmt 0 view .LVU981 3057 0000 0E002DE9 push {r1, r2, r3} 3058 .LCFI44: 3059 .cfi_def_cfa_offset 12 3060 .cfi_offset 1, -12 3061 .cfi_offset 2, -8 3062 .cfi_offset 3, -4 3063 0004 03402DE9 push {r0, r1, lr} 3064 .LCFI45: 3065 .cfi_def_cfa_offset 24 3066 .cfi_offset 14, -16 828:lib/vsprintf.c **** i = vsscanf(buf,fmt,args); 3067 .loc 1 828 6 view .LVU982 3068 0008 0C109DE5 ldr r1, [sp, #12] 827:lib/vsprintf.c **** i = vsscanf(buf,fmt,args); 3069 .loc 1 827 2 view .LVU983 3070 000c 10208DE2 add r2, sp, #16 3071 0010 04208DE5 str r2, [sp, #4] 3072 .loc 1 828 2 is_stmt 1 view .LVU984 3073 .loc 1 828 6 is_stmt 0 view .LVU985 3074 0014 FEFFFFEB bl vsscanf 3075 .LVL323: 829:lib/vsprintf.c **** va_end(args); 3076 .loc 1 829 2 is_stmt 1 view .LVU986 830:lib/vsprintf.c **** return i; 3077 .loc 1 830 2 view .LVU987 831:lib/vsprintf.c **** } 3078 .loc 1 831 1 is_stmt 0 view .LVU988 3079 0018 08D08DE2 add sp, sp, #8 3080 .LCFI46: 3081 .cfi_def_cfa_offset 16 3082 @ sp needed 3083 001c 04E09DE4 ldr lr, [sp], #4 3084 .LCFI47: 3085 .cfi_restore 14 3086 .cfi_def_cfa_offset 12 3087 0020 0CD08DE2 add sp, sp, #12 3088 .LCFI48: 3089 .cfi_restore 3 3090 .cfi_restore 2 3091 .cfi_restore 1 3092 .cfi_def_cfa_offset 0 3093 0024 1EFF2FE1 bx lr 3094 .cfi_endproc 3095 .LFE15: 3097 .section .text.puts,"ax",%progbits 3098 .align 2 3099 .global puts 3100 .syntax unified 3101 .arm 3103 puts: 3104 .LVL324: 3105 .LFB16: 832:lib/vsprintf.c **** 833:lib/vsprintf.c **** /* generic puts() implementation independent of who provides putchar() */ 834:lib/vsprintf.c **** int puts(const char *s) 835:lib/vsprintf.c **** { 3106 .loc 1 835 1 is_stmt 1 view -0 3107 .cfi_startproc 3108 @ Function supports interworking. 3109 @ args = 0, pretend = 0, frame = 0 3110 @ frame_needed = 0, uses_anonymous_args = 0 836:lib/vsprintf.c **** #ifdef ARCH_HAS_CONSOLE 837:lib/vsprintf.c **** return _puts(s); 3111 .loc 1 837 2 view .LVU990 835:lib/vsprintf.c **** #ifdef ARCH_HAS_CONSOLE 3112 .loc 1 835 1 is_stmt 0 view .LVU991 3113 0000 10402DE9 push {r4, lr} 3114 .LCFI49: 3115 .cfi_def_cfa_offset 8 3116 .cfi_offset 4, -8 3117 .cfi_offset 14, -4 3118 .loc 1 837 9 view .LVU992 3119 0004 FEFFFFEB bl sercomm_puts 3120 .LVL325: 838:lib/vsprintf.c **** #else 839:lib/vsprintf.c **** while (1) { 840:lib/vsprintf.c **** char c = *s++; 841:lib/vsprintf.c **** if (c == 0) 842:lib/vsprintf.c **** return; 843:lib/vsprintf.c **** putchar(c); 844:lib/vsprintf.c **** } 845:lib/vsprintf.c **** return 0; 846:lib/vsprintf.c **** #endif 847:lib/vsprintf.c **** } 3121 .loc 1 847 1 view .LVU993 3122 0008 1040BDE8 pop {r4, lr} 3123 .LCFI50: 3124 .cfi_restore 14 3125 .cfi_restore 4 3126 .cfi_def_cfa_offset 0 3127 000c 1EFF2FE1 bx lr 3128 .cfi_endproc 3129 .LFE16: 3131 .section .rodata 3132 .set .LANCHOR0,. + 0 3135 large_digits.1: 3136 0000 30313233 .ascii "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\000" 3136 34353637 3136 38394142 3136 43444546 3136 4748494A 3139 small_digits.0: 3140 0025 30313233 .ascii "0123456789abcdefghijklmnopqrstuvwxyz\000" 3140 34353637 3140 38396162 3140 63646566 3140 6768696A 3141 .text 3142 .Letext0: 3143 .file 3 "/usr/lib/gcc/arm-none-eabi/12.2.1/include/stddef.h" 3144 .file 4 "/usr/lib/gcc/arm-none-eabi/12.2.1/include/stdarg.h" 3145 .file 5 "include/comm/sercomm_cons.h" 3146 .file 6 "include/string.h" 3147 .file 7 "" DEFINED SYMBOLS *ABS*:00000000 vsprintf.c /tmp/ccad83nd.s:19 .text.__toupper:00000000 $a /tmp/ccad83nd.s:23 .text.__toupper:00000000 __toupper /tmp/ccad83nd.s:52 .text.__toupper:00000018 $d /tmp/ccad83nd.s:57 .text.skip_atoi:00000000 $a /tmp/ccad83nd.s:61 .text.skip_atoi:00000000 skip_atoi /tmp/ccad83nd.s:119 .text.skip_atoi:00000048 $d /tmp/ccad83nd.s:124 .text.number:00000000 $a /tmp/ccad83nd.s:128 .text.number:00000000 number /tmp/ccad83nd.s:609 .text.number:000002a4 $d /tmp/ccad83nd.s:614 .text.strtoul:00000000 $a /tmp/ccad83nd.s:619 .text.strtoul:00000000 strtoul /tmp/ccad83nd.s:783 .text.strtoul:000000d0 $d /tmp/ccad83nd.s:788 .text.strtol:00000000 $a /tmp/ccad83nd.s:793 .text.strtol:00000000 strtol /tmp/ccad83nd.s:854 .text.strtoull:00000000 $a /tmp/ccad83nd.s:859 .text.strtoull:00000000 strtoull /tmp/ccad83nd.s:1037 .text.strtoull:000000f0 $d /tmp/ccad83nd.s:1042 .text.strtoll:00000000 $a /tmp/ccad83nd.s:1047 .text.strtoll:00000000 strtoll /tmp/ccad83nd.s:1103 .text.vsnprintf:00000000 $a /tmp/ccad83nd.s:1108 .text.vsnprintf:00000000 vsnprintf /tmp/ccad83nd.s:1534 .text.vsnprintf:00000278 $d /tmp/ccad83nd.s:1558 .text.vsnprintf:000002d0 $a /tmp/ccad83nd.s:2001 .text.vsnprintf:000005a0 $d /tmp/ccad83nd.s:2006 .text.vscnprintf:00000000 $a /tmp/ccad83nd.s:2011 .text.vscnprintf:00000000 vscnprintf /tmp/ccad83nd.s:2051 .text.snprintf:00000000 $a /tmp/ccad83nd.s:2056 .text.snprintf:00000000 snprintf /tmp/ccad83nd.s:2107 .text.scnprintf:00000000 $a /tmp/ccad83nd.s:2112 .text.scnprintf:00000000 scnprintf /tmp/ccad83nd.s:2175 .text.vsprintf:00000000 $a /tmp/ccad83nd.s:2180 .text.vsprintf:00000000 vsprintf /tmp/ccad83nd.s:2206 .text.sprintf:00000000 $a /tmp/ccad83nd.s:2211 .text.sprintf:00000000 sprintf /tmp/ccad83nd.s:2267 .text.vsscanf:00000000 $a /tmp/ccad83nd.s:2272 .text.vsscanf:00000000 vsscanf /tmp/ccad83nd.s:2587 .text.vsscanf:0000022c $d /tmp/ccad83nd.s:2611 .text.vsscanf:00000284 $a /tmp/ccad83nd.s:3034 .text.vsscanf:000004c4 $d /tmp/ccad83nd.s:3040 .text.sscanf:00000000 $a /tmp/ccad83nd.s:3045 .text.sscanf:00000000 sscanf /tmp/ccad83nd.s:3098 .text.puts:00000000 $a /tmp/ccad83nd.s:3103 .text.puts:00000000 puts /tmp/ccad83nd.s:3135 .rodata:00000000 large_digits.1 /tmp/ccad83nd.s:3139 .rodata:00000025 small_digits.0 UNDEFINED SYMBOLS _ctype __do_div64 strnlen sercomm_puts