Matomat/firmware/lib/vsprintf.lst
2015-11-15 18:18:42 +00:00

3472 lines
139 KiB
Plaintext

1 .cpu arm7tdmi
2 .fpu softvfp
3 .eabi_attribute 20, 1
4 .eabi_attribute 21, 1
5 .eabi_attribute 23, 3
6 .eabi_attribute 24, 1
7 .eabi_attribute 25, 1
8 .eabi_attribute 26, 1
9 .eabi_attribute 30, 4
10 .eabi_attribute 18, 4
11 .file "vsprintf.c"
19 .Ltext0:
20 .cfi_sections .debug_frame
21 .align 2
23 __toupper:
24 .LFB1:
25 .file 1 "include/asm/ctype.h"
1:include/asm/ctype.h **** #ifndef _LINUX_CTYPE_H
2:include/asm/ctype.h **** #define _LINUX_CTYPE_H
3:include/asm/ctype.h ****
4:include/asm/ctype.h **** /*
5:include/asm/ctype.h **** * NOTE! This ctype does not handle EOF like the standard C
6:include/asm/ctype.h **** * library is required to.
7:include/asm/ctype.h **** */
8:include/asm/ctype.h ****
9:include/asm/ctype.h **** #define _U 0x01 /* upper */
10:include/asm/ctype.h **** #define _L 0x02 /* lower */
11:include/asm/ctype.h **** #define _D 0x04 /* digit */
12:include/asm/ctype.h **** #define _C 0x08 /* cntrl */
13:include/asm/ctype.h **** #define _P 0x10 /* punct */
14:include/asm/ctype.h **** #define _S 0x20 /* white space (space/lf/tab) */
15:include/asm/ctype.h **** #define _X 0x40 /* hex digit */
16:include/asm/ctype.h **** #define _SP 0x80 /* hard space (0x20) */
17:include/asm/ctype.h ****
18:include/asm/ctype.h **** extern unsigned char _ctype[];
19:include/asm/ctype.h ****
20:include/asm/ctype.h **** #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
21:include/asm/ctype.h ****
22:include/asm/ctype.h **** #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
23:include/asm/ctype.h **** #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
24:include/asm/ctype.h **** #define iscntrl(c) ((__ismask(c)&(_C)) != 0)
25:include/asm/ctype.h **** #define isdigit(c) ((__ismask(c)&(_D)) != 0)
26:include/asm/ctype.h **** #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
27:include/asm/ctype.h **** #define islower(c) ((__ismask(c)&(_L)) != 0)
28:include/asm/ctype.h **** #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
29:include/asm/ctype.h **** #define ispunct(c) ((__ismask(c)&(_P)) != 0)
30:include/asm/ctype.h **** #define isspace(c) ((__ismask(c)&(_S)) != 0)
31:include/asm/ctype.h **** #define isupper(c) ((__ismask(c)&(_U)) != 0)
32:include/asm/ctype.h **** #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
33:include/asm/ctype.h ****
34:include/asm/ctype.h **** #define isascii(c) (((unsigned char)(c))<=0x7f)
35:include/asm/ctype.h **** #define toascii(c) (((unsigned char)(c))&0x7f)
36:include/asm/ctype.h ****
37:include/asm/ctype.h **** static inline unsigned char __tolower(unsigned char c)
38:include/asm/ctype.h **** {
39:include/asm/ctype.h **** if (isupper(c))
40:include/asm/ctype.h **** c -= 'A'-'a';
41:include/asm/ctype.h **** return c;
42:include/asm/ctype.h **** }
43:include/asm/ctype.h ****
44:include/asm/ctype.h **** static inline unsigned char __toupper(unsigned char c)
45:include/asm/ctype.h **** {
26 .loc 1 45 0
27 .cfi_startproc
28 @ Function supports interworking.
29 @ args = 0, pretend = 0, frame = 0
30 @ frame_needed = 0, uses_anonymous_args = 0
31 @ link register save eliminated.
32 .LVL0:
46:include/asm/ctype.h **** if (islower(c))
33 .loc 1 46 0
34 0000 10309FE5 ldr r3, .L3
35 0004 0030D3E7 ldrb r3, [r3, r0] @ zero_extendqisi2
36 0008 020013E3 tst r3, #2
47:include/asm/ctype.h **** c -= 'a'-'A';
37 .loc 1 47 0
38 000c 20004012 subne r0, r0, #32
39 .LVL1:
40 0010 FF000012 andne r0, r0, #255
41 .LVL2:
48:include/asm/ctype.h **** return c;
49:include/asm/ctype.h **** }
42 .loc 1 49 0
43 0014 1EFF2FE1 bx lr
44 .L4:
45 .align 2
46 .L3:
47 0018 00000000 .word _ctype
48 .cfi_endproc
49 .LFE1:
51 .align 2
53 skip_atoi:
54 .LFB6:
55 .file 2 "lib/vsprintf.c"
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 <crutcher+kernel@datastacks.com>
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 <quade@hsnr.de>
16:lib/vsprintf.c **** * - scnprintf and vscnprintf
17:lib/vsprintf.c **** */
18:lib/vsprintf.c ****
19:lib/vsprintf.c **** #include <stdarg.h>
20:lib/vsprintf.c **** #include <sys/types.h>
21:lib/vsprintf.c **** #include <string.h>
22:lib/vsprintf.c **** #include <asm/ctype.h>
23:lib/vsprintf.c ****
24:lib/vsprintf.c **** #include <asm/div64.h>
25:lib/vsprintf.c **** #include <limits.h>
26:lib/vsprintf.c ****
27:lib/vsprintf.c **** /**
28:lib/vsprintf.c **** * simple_strtoul - convert a string to an unsigned long
29:lib/vsprintf.c **** * @cp: The start of the string
30:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here
31:lib/vsprintf.c **** * @base: The number base to use
32:lib/vsprintf.c **** */
33:lib/vsprintf.c **** unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base)
34:lib/vsprintf.c **** {
35:lib/vsprintf.c **** unsigned long result = 0,value;
36:lib/vsprintf.c ****
37:lib/vsprintf.c **** if (!base) {
38:lib/vsprintf.c **** base = 10;
39:lib/vsprintf.c **** if (*cp == '0') {
40:lib/vsprintf.c **** base = 8;
41:lib/vsprintf.c **** cp++;
42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
43:lib/vsprintf.c **** cp++;
44:lib/vsprintf.c **** base = 16;
45:lib/vsprintf.c **** }
46:lib/vsprintf.c **** }
47:lib/vsprintf.c **** } else if (base == 16) {
48:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X')
49:lib/vsprintf.c **** cp += 2;
50:lib/vsprintf.c **** }
51:lib/vsprintf.c **** while (isxdigit(*cp) &&
52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
53:lib/vsprintf.c **** result = result*base + value;
54:lib/vsprintf.c **** cp++;
55:lib/vsprintf.c **** }
56:lib/vsprintf.c **** if (endp)
57:lib/vsprintf.c **** *endp = (char *)cp;
58:lib/vsprintf.c **** return result;
59:lib/vsprintf.c **** }
60:lib/vsprintf.c ****
61:lib/vsprintf.c ****
62:lib/vsprintf.c **** /**
63:lib/vsprintf.c **** * simple_strtol - convert a string to a signed long
64:lib/vsprintf.c **** * @cp: The start of the string
65:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here
66:lib/vsprintf.c **** * @base: The number base to use
67:lib/vsprintf.c **** */
68:lib/vsprintf.c **** long simple_strtol(const char *cp,char **endp,unsigned int base)
69:lib/vsprintf.c **** {
70:lib/vsprintf.c **** if(*cp=='-')
71:lib/vsprintf.c **** return -simple_strtoul(cp+1,endp,base);
72:lib/vsprintf.c **** return simple_strtoul(cp,endp,base);
73:lib/vsprintf.c **** }
74:lib/vsprintf.c ****
75:lib/vsprintf.c ****
76:lib/vsprintf.c **** /**
77:lib/vsprintf.c **** * simple_strtoull - convert a string to an unsigned long long
78:lib/vsprintf.c **** * @cp: The start of the string
79:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here
80:lib/vsprintf.c **** * @base: The number base to use
81:lib/vsprintf.c **** */
82:lib/vsprintf.c **** unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base)
83:lib/vsprintf.c **** {
84:lib/vsprintf.c **** unsigned long long result = 0,value;
85:lib/vsprintf.c ****
86:lib/vsprintf.c **** if (!base) {
87:lib/vsprintf.c **** base = 10;
88:lib/vsprintf.c **** if (*cp == '0') {
89:lib/vsprintf.c **** base = 8;
90:lib/vsprintf.c **** cp++;
91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
92:lib/vsprintf.c **** cp++;
93:lib/vsprintf.c **** base = 16;
94:lib/vsprintf.c **** }
95:lib/vsprintf.c **** }
96:lib/vsprintf.c **** } else if (base == 16) {
97:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X')
98:lib/vsprintf.c **** cp += 2;
99:lib/vsprintf.c **** }
100:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) {
102:lib/vsprintf.c **** result = result*base + value;
103:lib/vsprintf.c **** cp++;
104:lib/vsprintf.c **** }
105:lib/vsprintf.c **** if (endp)
106:lib/vsprintf.c **** *endp = (char *)cp;
107:lib/vsprintf.c **** return result;
108:lib/vsprintf.c **** }
109:lib/vsprintf.c ****
110:lib/vsprintf.c ****
111:lib/vsprintf.c **** /**
112:lib/vsprintf.c **** * simple_strtoll - convert a string to a signed long long
113:lib/vsprintf.c **** * @cp: The start of the string
114:lib/vsprintf.c **** * @endp: A pointer to the end of the parsed string will be placed here
115:lib/vsprintf.c **** * @base: The number base to use
116:lib/vsprintf.c **** */
117:lib/vsprintf.c **** long long simple_strtoll(const char *cp,char **endp,unsigned int base)
118:lib/vsprintf.c **** {
119:lib/vsprintf.c **** if(*cp=='-')
120:lib/vsprintf.c **** return -simple_strtoull(cp+1,endp,base);
121:lib/vsprintf.c **** return simple_strtoull(cp,endp,base);
122:lib/vsprintf.c **** }
123:lib/vsprintf.c ****
124:lib/vsprintf.c **** static int skip_atoi(const char **s)
125:lib/vsprintf.c **** {
56 .loc 2 125 0
57 .cfi_startproc
58 @ Function supports interworking.
59 @ args = 0, pretend = 0, frame = 0
60 @ frame_needed = 0, uses_anonymous_args = 0
61 @ link register save eliminated.
62 .LVL3:
126:lib/vsprintf.c **** int i=0;
63 .loc 2 126 0
64 001c 0030A0E3 mov r3, #0
127:lib/vsprintf.c ****
128:lib/vsprintf.c **** while (isdigit(**s))
65 .loc 2 128 0
66 0020 040000EA b .L6
67 .LVL4:
68 .L7:
129:lib/vsprintf.c **** i = i*10 + *((*s)++) - '0';
69 .loc 2 129 0
70 0024 302042E2 sub r2, r2, #48
71 0028 0AC0A0E3 mov ip, #10
72 002c 9C2323E0 mla r3, ip, r3, r2
73 .LVL5:
74 0030 011081E2 add r1, r1, #1
75 0034 001080E5 str r1, [r0, #0]
76 .LVL6:
77 .L6:
128:lib/vsprintf.c **** while (isdigit(**s))
78 .loc 2 128 0 discriminator 1
79 0038 001090E5 ldr r1, [r0, #0]
80 003c 14C09FE5 ldr ip, .L8
81 0040 0020D1E5 ldrb r2, [r1, #0] @ zero_extendqisi2
82 0044 02C0DCE7 ldrb ip, [ip, r2] @ zero_extendqisi2
83 0048 04001CE3 tst ip, #4
84 004c F4FFFF1A bne .L7
130:lib/vsprintf.c **** return i;
131:lib/vsprintf.c **** }
85 .loc 2 131 0
86 0050 0300A0E1 mov r0, r3
87 .LVL7:
88 0054 1EFF2FE1 bx lr
89 .L9:
90 .align 2
91 .L8:
92 0058 00000000 .word _ctype
93 .cfi_endproc
94 .LFE6:
96 .align 2
98 number:
99 .LFB7:
132:lib/vsprintf.c ****
133:lib/vsprintf.c **** #define ZEROPAD 1 /* pad with zero */
134:lib/vsprintf.c **** #define SIGN 2 /* unsigned/signed long */
135:lib/vsprintf.c **** #define PLUS 4 /* show plus */
136:lib/vsprintf.c **** #define SPACE 8 /* space if plus */
137:lib/vsprintf.c **** #define LEFT 16 /* left justified */
138:lib/vsprintf.c **** #define SPECIAL 32 /* 0x */
139:lib/vsprintf.c **** #define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */
140:lib/vsprintf.c ****
141:lib/vsprintf.c **** static char * number(char * buf, char * end, unsigned long long num, int base, int size, int precis
142:lib/vsprintf.c **** {
100 .loc 2 142 0
101 .cfi_startproc
102 @ Function supports interworking.
103 @ args = 16, pretend = 0, frame = 88
104 @ frame_needed = 0, uses_anonymous_args = 0
105 .LVL8:
106 005c F04F2DE9 stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
107 .LCFI0:
108 .cfi_def_cfa_offset 36
109 0060 5CD04DE2 sub sp, sp, #92
110 .LCFI1:
111 .cfi_def_cfa_offset 128
112 .loc 2 142 0
113 0064 8C709DE5 ldr r7, [sp, #140]
114 .cfi_offset 14, -4
115 .cfi_offset 11, -8
116 .cfi_offset 10, -12
117 .cfi_offset 9, -16
118 .cfi_offset 8, -20
119 .cfi_offset 7, -24
120 .cfi_offset 6, -28
121 .cfi_offset 5, -32
122 .cfi_offset 4, -36
123 0068 01A0A0E1 mov sl, r1
143:lib/vsprintf.c **** char c,sign,tmp[66];
144:lib/vsprintf.c **** const char *digits;
145:lib/vsprintf.c **** static const char small_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
146:lib/vsprintf.c **** static const char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
147:lib/vsprintf.c **** int i;
148:lib/vsprintf.c ****
149:lib/vsprintf.c **** digits = (type & LARGE) ? large_digits : small_digits;
124 .loc 2 149 0
125 006c 30129FE5 ldr r1, .L51
126 .LVL9:
127 0070 400017E3 tst r7, #64
142:lib/vsprintf.c **** {
128 .loc 2 142 0
129 0074 0050A0E1 mov r5, r0
130 0078 80B09DE5 ldr fp, [sp, #128]
131 .loc 2 149 0
132 007c 250081E2 add r0, r1, #37
133 .LVL10:
134 0080 0010A001 moveq r1, r0
135 0084 04108DE5 str r1, [sp, #4]
136 .LVL11:
150:lib/vsprintf.c **** if (type & LEFT)
137 .loc 2 150 0
138 0088 100017E3 tst r7, #16
151:lib/vsprintf.c **** type &= ~ZEROPAD;
152:lib/vsprintf.c **** if (base < 2 || base > 36)
139 .loc 2 152 0
140 008c 02104BE2 sub r1, fp, #2
141 .LVL12:
151:lib/vsprintf.c **** type &= ~ZEROPAD;
142 .loc 2 151 0
143 0090 0170C713 bicne r7, r7, #1
144 .LVL13:
145 .loc 2 152 0
146 0094 220051E3 cmp r1, #34
142:lib/vsprintf.c **** {
147 .loc 2 142 0
148 0098 84609DE5 ldr r6, [sp, #132]
149 .loc 2 152 0
150 009c 7B00008A bhi .L47
153:lib/vsprintf.c **** return NULL;
154:lib/vsprintf.c **** c = (type & ZEROPAD) ? '0' : ' ';
151 .loc 2 154 0
152 00a0 010017E3 tst r7, #1
153 00a4 2000A003 moveq r0, #32
154 00a8 3000A013 movne r0, #48
155:lib/vsprintf.c **** sign = 0;
156:lib/vsprintf.c **** if (type & SIGN) {
155 .loc 2 156 0
156 00ac 029017E2 ands r9, r7, #2
154:lib/vsprintf.c **** c = (type & ZEROPAD) ? '0' : ' ';
157 .loc 2 154 0
158 00b0 08008DE5 str r0, [sp, #8]
159 .LVL14:
160 .loc 2 156 0
161 00b4 0E00000A beq .L15
157:lib/vsprintf.c **** if ((signed long long) num < 0) {
162 .loc 2 157 0
163 00b8 000052E3 cmp r2, #0
164 00bc 0010D3E2 sbcs r1, r3, #0
165 00c0 040000AA bge .L16
166 .LVL15:
158:lib/vsprintf.c **** sign = '-';
159:lib/vsprintf.c **** num = - (signed long long) num;
167 .loc 2 159 0
168 00c4 002072E2 rsbs r2, r2, #0
169 00c8 0030E3E2 rsc r3, r3, #0
170 .LVL16:
160:lib/vsprintf.c **** size--;
171 .loc 2 160 0
172 00cc 016046E2 sub r6, r6, #1
173 .LVL17:
158:lib/vsprintf.c **** sign = '-';
174 .loc 2 158 0
175 00d0 2D90A0E3 mov r9, #45
176 00d4 060000EA b .L15
177 .LVL18:
178 .L16:
161:lib/vsprintf.c **** } else if (type & PLUS) {
179 .loc 2 161 0
180 00d8 040017E3 tst r7, #4
162:lib/vsprintf.c **** sign = '+';
163:lib/vsprintf.c **** size--;
181 .loc 2 163 0
182 00dc 01604612 subne r6, r6, #1
183 .LVL19:
162:lib/vsprintf.c **** sign = '+';
184 .loc 2 162 0
185 00e0 2B90A013 movne r9, #43
161:lib/vsprintf.c **** } else if (type & PLUS) {
186 .loc 2 161 0
187 00e4 0200001A bne .L15
164:lib/vsprintf.c **** } else if (type & SPACE) {
188 .loc 2 164 0
189 00e8 089017E2 ands r9, r7, #8
190 .LVL20:
165:lib/vsprintf.c **** sign = ' ';
166:lib/vsprintf.c **** size--;
191 .loc 2 166 0
192 00ec 01604612 subne r6, r6, #1
193 .LVL21:
165:lib/vsprintf.c **** sign = ' ';
194 .loc 2 165 0
195 00f0 2090A013 movne r9, #32
196 .LVL22:
197 .L15:
167:lib/vsprintf.c **** }
168:lib/vsprintf.c **** }
169:lib/vsprintf.c **** if (type & SPECIAL) {
198 .loc 2 169 0
199 00f4 20C017E2 ands ip, r7, #32
200 00f8 0CC08DE5 str ip, [sp, #12]
201 00fc 0400000A beq .L18
170:lib/vsprintf.c **** if (base == 16)
202 .loc 2 170 0
203 0100 10005BE3 cmp fp, #16
171:lib/vsprintf.c **** size -= 2;
204 .loc 2 171 0
205 0104 02604602 subeq r6, r6, #2
206 .LVL23:
170:lib/vsprintf.c **** if (base == 16)
207 .loc 2 170 0
208 0108 0100000A beq .L18
172:lib/vsprintf.c **** else if (base == 8)
209 .loc 2 172 0
210 010c 08005BE3 cmp fp, #8
173:lib/vsprintf.c **** size--;
211 .loc 2 173 0
212 0110 01604602 subeq r6, r6, #1
213 .LVL24:
214 .L18:
174:lib/vsprintf.c **** }
175:lib/vsprintf.c **** i = 0;
176:lib/vsprintf.c **** if (num == 0)
215 .loc 2 176 0
216 0114 030092E1 orrs r0, r2, r3
177:lib/vsprintf.c **** tmp[i++]='0';
217 .loc 2 177 0
218 0118 3030A003 moveq r3, #48
219 011c 1430CD05 streqb r3, [sp, #20]
220 .LVL25:
221 0120 0180A003 moveq r8, #1
176:lib/vsprintf.c **** if (num == 0)
222 .loc 2 176 0
223 0124 0B00000A beq .L21
224 0128 0080A0E3 mov r8, #0
225 .LVL26:
226 .L22:
227 .LBB2:
178:lib/vsprintf.c **** else while (num != 0)
179:lib/vsprintf.c **** tmp[i++] = digits[do_div(num,base)];
228 .loc 2 179 0
229 012c 0200A0E1 mov r0, r2
230 .LVL27:
231 0130 0B40A0E1 mov r4, fp
232 .LVL28:
233 0134 0310A0E1 mov r1, r3
234 @ 179 "lib/vsprintf.c" 1
235 .ifnc r1,r1 ; .err ; .endif
236 .ifnc r2,r2 ; .err ; .endif
237 .ifnc r0,r0 ; .err ; .endif
238 .ifnc r4,r4 ; .err ; .endif
239 0138 FEFFFFEB bl __do_div64
240 @ 0 "" 2
241 .LVL29:
242 .LBE2:
243 013c 04C09DE5 ldr ip, [sp, #4]
244 0140 0100DCE7 ldrb r0, [ip, r1] @ zero_extendqisi2
245 .LVL30:
246 0144 14108DE2 add r1, sp, #20
247 .LVL31:
248 0148 0800C1E7 strb r0, [r1, r8]
178:lib/vsprintf.c **** else while (num != 0)
249 .loc 2 178 0
250 014c 030092E1 orrs r0, r2, r3
251 .loc 2 179 0
252 0150 018088E2 add r8, r8, #1
253 .LVL32:
178:lib/vsprintf.c **** else while (num != 0)
254 .loc 2 178 0
255 0154 F4FFFF1A bne .L22
256 .LVL33:
257 .L21:
258 0158 88309DE5 ldr r3, [sp, #136]
259 015c 030058E1 cmp r8, r3
260 0160 0830A0A1 movge r3, r8
261 0164 0330A0B1 movlt r3, r3
262 .LVL34:
180:lib/vsprintf.c **** if (i > precision)
181:lib/vsprintf.c **** precision = i;
182:lib/vsprintf.c **** size -= precision;
183:lib/vsprintf.c **** if (!(type&(ZEROPAD+LEFT))) {
263 .loc 2 183 0
264 0168 110017E3 tst r7, #17
182:lib/vsprintf.c **** size -= precision;
265 .loc 2 182 0
266 016c 066063E0 rsb r6, r3, r6
267 .LVL35:
268 .loc 2 183 0
269 0170 0800001A bne .L23
270 0174 030000EA b .L24
271 .LVL36:
272 .L26:
184:lib/vsprintf.c **** while(size-->0) {
185:lib/vsprintf.c **** if (buf <= end)
273 .loc 2 185 0
274 0178 0A0055E1 cmp r5, sl
186:lib/vsprintf.c **** *buf = ' ';
275 .loc 2 186 0
276 017c 2020A093 movls r2, #32
277 0180 0020C595 strlsb r2, [r5, #0]
187:lib/vsprintf.c **** ++buf;
278 .loc 2 187 0
279 0184 015085E2 add r5, r5, #1
280 .LVL37:
281 .L24:
184:lib/vsprintf.c **** while(size-->0) {
282 .loc 2 184 0 discriminator 1
283 0188 016046E2 sub r6, r6, #1
284 .LVL38:
141:lib/vsprintf.c **** static char * number(char * buf, char * end, unsigned long long num, int base, int size, int precis
285 .loc 2 141 0 discriminator 1
286 018c 012086E2 add r2, r6, #1
184:lib/vsprintf.c **** while(size-->0) {
287 .loc 2 184 0 discriminator 1
288 0190 000052E3 cmp r2, #0
289 0194 F7FFFFCA bgt .L26
290 .L23:
188:lib/vsprintf.c **** }
189:lib/vsprintf.c **** }
190:lib/vsprintf.c **** if (sign) {
291 .loc 2 190 0
292 0198 000059E3 cmp r9, #0
293 019c 0200000A beq .L27
191:lib/vsprintf.c **** if (buf <= end)
294 .loc 2 191 0
295 01a0 0A0055E1 cmp r5, sl
192:lib/vsprintf.c **** *buf = sign;
296 .loc 2 192 0
297 01a4 0090C595 strlsb r9, [r5, #0]
193:lib/vsprintf.c **** ++buf;
298 .loc 2 193 0
299 01a8 015085E2 add r5, r5, #1
300 .LVL39:
301 .L27:
194:lib/vsprintf.c **** }
195:lib/vsprintf.c **** if (type & SPECIAL) {
302 .loc 2 195 0
303 01ac 0C109DE5 ldr r1, [sp, #12]
304 01b0 000051E3 cmp r1, #0
305 01b4 1100000A beq .L29
196:lib/vsprintf.c **** if (base==8) {
306 .loc 2 196 0
307 01b8 08005BE3 cmp fp, #8
308 01bc 0400001A bne .L30
197:lib/vsprintf.c **** if (buf <= end)
309 .loc 2 197 0
310 01c0 0A0055E1 cmp r5, sl
198:lib/vsprintf.c **** *buf = '0';
311 .loc 2 198 0
312 01c4 3020A093 movls r2, #48
313 01c8 0020C595 strlsb r2, [r5, #0]
199:lib/vsprintf.c **** ++buf;
314 .loc 2 199 0
315 01cc 015085E2 add r5, r5, #1
316 .LVL40:
317 01d0 0A0000EA b .L29
318 .L30:
200:lib/vsprintf.c **** } else if (base==16) {
319 .loc 2 200 0
320 01d4 10005BE3 cmp fp, #16
321 01d8 0800001A bne .L29
201:lib/vsprintf.c **** if (buf <= end)
322 .loc 2 201 0
323 01dc 0A0055E1 cmp r5, sl
202:lib/vsprintf.c **** *buf = '0';
324 .loc 2 202 0
325 01e0 3020A093 movls r2, #48
326 01e4 0020C595 strlsb r2, [r5, #0]
203:lib/vsprintf.c **** ++buf;
327 .loc 2 203 0
328 01e8 012085E2 add r2, r5, #1
329 .LVL41:
204:lib/vsprintf.c **** if (buf <= end)
330 .loc 2 204 0
331 01ec 0A0052E1 cmp r2, sl
205:lib/vsprintf.c **** *buf = digits[33];
332 .loc 2 205 0
333 01f0 04C09D95 ldrls ip, [sp, #4]
334 01f4 2110DC95 ldrlsb r1, [ip, #33] @ zero_extendqisi2
335 01f8 0110C595 strlsb r1, [r5, #1]
206:lib/vsprintf.c **** ++buf;
336 .loc 2 206 0
337 01fc 015082E2 add r5, r2, #1
338 .LVL42:
339 .L29:
207:lib/vsprintf.c **** }
208:lib/vsprintf.c **** }
209:lib/vsprintf.c **** if (!(type & LEFT)) {
340 .loc 2 209 0
341 0200 100017E3 tst r7, #16
342 0204 0E00001A bne .L38
343 0208 030000EA b .L35
344 .L37:
210:lib/vsprintf.c **** while (size-- > 0) {
211:lib/vsprintf.c **** if (buf <= end)
345 .loc 2 211 0
346 020c 0A0055E1 cmp r5, sl
212:lib/vsprintf.c **** *buf = c;
347 .loc 2 212 0
348 0210 08009D95 ldrls r0, [sp, #8]
349 0214 0000C595 strlsb r0, [r5, #0]
213:lib/vsprintf.c **** ++buf;
350 .loc 2 213 0
351 0218 015085E2 add r5, r5, #1
352 .LVL43:
353 .L35:
210:lib/vsprintf.c **** while (size-- > 0) {
354 .loc 2 210 0 discriminator 1
355 021c 016046E2 sub r6, r6, #1
356 .LVL44:
141:lib/vsprintf.c **** static char * number(char * buf, char * end, unsigned long long num, int base, int size, int precis
357 .loc 2 141 0 discriminator 1
358 0220 012086E2 add r2, r6, #1
210:lib/vsprintf.c **** while (size-- > 0) {
359 .loc 2 210 0 discriminator 1
360 0224 000052E3 cmp r2, #0
361 0228 F7FFFFCA bgt .L37
362 022c 040000EA b .L38
363 .LVL45:
364 .L40:
214:lib/vsprintf.c **** }
215:lib/vsprintf.c **** }
216:lib/vsprintf.c **** while (i < precision--) {
217:lib/vsprintf.c **** if (buf <= end)
365 .loc 2 217 0
366 0230 0A0055E1 cmp r5, sl
218:lib/vsprintf.c **** *buf = '0';
367 .loc 2 218 0
368 0234 3020A093 movls r2, #48
369 0238 0020C595 strlsb r2, [r5, #0]
219:lib/vsprintf.c **** ++buf;
370 .loc 2 219 0
371 023c 013043E2 sub r3, r3, #1
372 0240 015085E2 add r5, r5, #1
373 .LVL46:
374 .L38:
216:lib/vsprintf.c **** while (i < precision--) {
375 .loc 2 216 0 discriminator 1
376 0244 030058E1 cmp r8, r3
377 0248 F8FFFFBA blt .L40
378 .LVL47:
379 .L42:
220:lib/vsprintf.c **** }
221:lib/vsprintf.c **** while (i-- > 0) {
222:lib/vsprintf.c **** if (buf <= end)
380 .loc 2 222 0
381 024c 0A0055E1 cmp r5, sl
223:lib/vsprintf.c **** *buf = tmp[i];
382 .loc 2 223 0
383 0250 14308D92 addls r3, sp, #20
221:lib/vsprintf.c **** while (i-- > 0) {
384 .loc 2 221 0
385 0254 018048E2 sub r8, r8, #1
386 .loc 2 223 0
387 0258 0830D397 ldrlsb r3, [r3, r8] @ zero_extendqisi2
388 025c 0030C595 strlsb r3, [r5, #0]
221:lib/vsprintf.c **** while (i-- > 0) {
389 .loc 2 221 0
390 0260 000058E3 cmp r8, #0
224:lib/vsprintf.c **** ++buf;
391 .loc 2 224 0
392 0264 015085E2 add r5, r5, #1
393 .LVL48:
221:lib/vsprintf.c **** while (i-- > 0) {
394 .loc 2 221 0
395 0268 F7FFFFCA bgt .L42
396 026c 040000EA b .L43
397 .LVL49:
398 .L45:
225:lib/vsprintf.c **** }
226:lib/vsprintf.c **** while (size-- > 0) {
227:lib/vsprintf.c **** if (buf <= end)
399 .loc 2 227 0
400 0270 0A0055E1 cmp r5, sl
228:lib/vsprintf.c **** *buf = ' ';
401 .loc 2 228 0
402 0274 2030A093 movls r3, #32
403 0278 0030C595 strlsb r3, [r5, #0]
229:lib/vsprintf.c **** ++buf;
404 .loc 2 229 0
405 027c 016046E2 sub r6, r6, #1
406 0280 015085E2 add r5, r5, #1
407 .LVL50:
408 .L43:
226:lib/vsprintf.c **** while (size-- > 0) {
409 .loc 2 226 0 discriminator 1
410 0284 000056E3 cmp r6, #0
411 0288 F8FFFFCA bgt .L45
412 028c 000000EA b .L13
413 .LVL51:
414 .L47:
153:lib/vsprintf.c **** return NULL;
415 .loc 2 153 0
416 0290 0050A0E3 mov r5, #0
417 .LVL52:
418 .L13:
230:lib/vsprintf.c **** }
231:lib/vsprintf.c **** return buf;
232:lib/vsprintf.c **** }
419 .loc 2 232 0
420 0294 0500A0E1 mov r0, r5
421 0298 5CD08DE2 add sp, sp, #92
422 029c F04FBDE8 ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
423 02a0 1EFF2FE1 bx lr
424 .L52:
425 .align 2
426 .L51:
427 02a4 00000000 .word .LANCHOR0
428 .cfi_endproc
429 .LFE7:
431 .align 2
432 .global simple_strtoul
434 simple_strtoul:
435 .LFB2:
34:lib/vsprintf.c **** {
436 .loc 2 34 0
437 .cfi_startproc
438 @ Function supports interworking.
439 @ args = 0, pretend = 0, frame = 0
440 @ frame_needed = 0, uses_anonymous_args = 0
441 .LVL53:
442 02a8 F0412DE9 stmfd sp!, {r4, r5, r6, r7, r8, lr}
443 .LCFI2:
444 .cfi_def_cfa_offset 24
37:lib/vsprintf.c **** if (!base) {
445 .loc 2 37 0
446 02ac 006052E2 subs r6, r2, #0
447 .cfi_offset 14, -4
448 .cfi_offset 8, -8
449 .cfi_offset 7, -12
450 .cfi_offset 6, -16
451 .cfi_offset 5, -20
452 .cfi_offset 4, -24
34:lib/vsprintf.c **** {
453 .loc 2 34 0
454 02b0 0040A0E1 mov r4, r0
455 02b4 0150A0E1 mov r5, r1
37:lib/vsprintf.c **** if (!base) {
456 .loc 2 37 0
457 02b8 1100001A bne .L54
458 .LVL54:
39:lib/vsprintf.c **** if (*cp == '0') {
459 .loc 2 39 0
460 02bc 0030D0E5 ldrb r3, [r0, #0] @ zero_extendqisi2
461 02c0 300053E3 cmp r3, #48
38:lib/vsprintf.c **** base = 10;
462 .loc 2 38 0
463 02c4 0A60A013 movne r6, #10
39:lib/vsprintf.c **** if (*cp == '0') {
464 .loc 2 39 0
465 02c8 1600001A bne .L55
466 .LVL55:
42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
467 .loc 2 42 0
468 02cc 0100F4E5 ldrb r0, [r4, #1]! @ zero_extendqisi2
469 .LVL56:
470 02d0 4AFFFFEB bl __toupper
471 .LVL57:
472 02d4 580050E3 cmp r0, #88
40:lib/vsprintf.c **** base = 8;
473 .loc 2 40 0
474 02d8 0860A013 movne r6, #8
42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
475 .loc 2 42 0
476 02dc 1100001A bne .L55
42:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
477 .loc 2 42 0 is_stmt 0 discriminator 1
478 02e0 0130D4E5 ldrb r3, [r4, #1] @ zero_extendqisi2
479 02e4 90209FE5 ldr r2, .L65
480 02e8 0330D2E7 ldrb r3, [r2, r3] @ zero_extendqisi2
481 02ec 443003E2 and r3, r3, #68
482 02f0 000053E3 cmp r3, #0
40:lib/vsprintf.c **** base = 8;
483 .loc 2 40 0 is_stmt 1 discriminator 1
484 02f4 1060A013 movne r6, #16
485 02f8 0860A003 moveq r6, #8
486 02fc 01408412 addne r4, r4, #1
487 .LVL58:
488 0300 080000EA b .L55
489 .LVL59:
490 .L54:
47:lib/vsprintf.c **** } else if (base == 16) {
491 .loc 2 47 0
492 0304 100056E3 cmp r6, #16
493 0308 0600001A bne .L55
48:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X')
494 .loc 2 48 0
495 030c 0030D0E5 ldrb r3, [r0, #0] @ zero_extendqisi2
496 0310 300053E3 cmp r3, #48
497 0314 0300001A bne .L55
48:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X')
498 .loc 2 48 0 is_stmt 0 discriminator 1
499 0318 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2
500 .LVL60:
501 031c 37FFFFEB bl __toupper
502 .LVL61:
503 0320 580050E3 cmp r0, #88
49:lib/vsprintf.c **** cp += 2;
504 .loc 2 49 0 is_stmt 1 discriminator 1
505 0324 02408402 addeq r4, r4, #2
506 .LVL62:
507 .L55:
38:lib/vsprintf.c **** base = 10;
508 .loc 2 38 0 discriminator 1
509 0328 0070A0E3 mov r7, #0
510 032c 000000EA b .L56
511 .LVL63:
512 .L60:
53:lib/vsprintf.c **** result = result*base + value;
513 .loc 2 53 0
514 0330 960727E0 mla r7, r6, r7, r0
515 .LVL64:
516 .L56:
53:lib/vsprintf.c **** result = result*base + value;
517 .loc 2 53 0 is_stmt 0 discriminator 1
518 0334 0480A0E1 mov r8, r4
519 .LVL65:
51:lib/vsprintf.c **** while (isxdigit(*cp) &&
520 .loc 2 51 0 is_stmt 1 discriminator 1
521 0338 3C309FE5 ldr r3, .L65
522 033c 0100D4E4 ldrb r0, [r4], #1 @ zero_extendqisi2
523 .LVL66:
524 0340 0030D3E7 ldrb r3, [r3, r0] @ zero_extendqisi2
525 0344 440013E3 tst r3, #68
526 0348 0600000A beq .L57
52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
527 .loc 2 52 0
528 034c 040013E3 tst r3, #4
529 0350 30004012 subne r0, r0, #48
530 0354 0100001A bne .L59
52:lib/vsprintf.c **** (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
531 .loc 2 52 0 is_stmt 0 discriminator 2
532 0358 28FFFFEB bl __toupper
533 035c 370040E2 sub r0, r0, #55
534 .L59:
535 .LVL67:
51:lib/vsprintf.c **** while (isxdigit(*cp) &&
536 .loc 2 51 0 is_stmt 1 discriminator 3
537 0360 060050E1 cmp r0, r6
538 0364 F1FFFF3A bcc .L60
539 .LVL68:
540 .L57:
56:lib/vsprintf.c **** if (endp)
541 .loc 2 56 0
542 0368 000055E3 cmp r5, #0
57:lib/vsprintf.c **** *endp = (char *)cp;
543 .loc 2 57 0
544 036c 00808515 strne r8, [r5, #0]
59:lib/vsprintf.c **** }
545 .loc 2 59 0
546 0370 0700A0E1 mov r0, r7
547 0374 F041BDE8 ldmfd sp!, {r4, r5, r6, r7, r8, lr}
548 0378 1EFF2FE1 bx lr
549 .L66:
550 .align 2
551 .L65:
552 037c 00000000 .word _ctype
553 .cfi_endproc
554 .LFE2:
556 .align 2
557 .global simple_strtol
559 simple_strtol:
560 .LFB3:
69:lib/vsprintf.c **** {
561 .loc 2 69 0
562 .cfi_startproc
563 @ Function supports interworking.
564 @ args = 0, pretend = 0, frame = 0
565 @ frame_needed = 0, uses_anonymous_args = 0
566 .LVL69:
567 0380 10402DE9 stmfd sp!, {r4, lr}
568 .LCFI3:
569 .cfi_def_cfa_offset 8
70:lib/vsprintf.c **** if(*cp=='-')
570 .loc 2 70 0
571 0384 00C0D0E5 ldrb ip, [r0, #0] @ zero_extendqisi2
572 0388 2D005CE3 cmp ip, #45
573 038c 0400001A bne .L68
574 .cfi_offset 14, -4
575 .cfi_offset 4, -8
71:lib/vsprintf.c **** return -simple_strtoul(cp+1,endp,base);
576 .loc 2 71 0
577 0390 010080E2 add r0, r0, #1
578 .LVL70:
579 0394 FEFFFFEB bl simple_strtoul
580 .LVL71:
73:lib/vsprintf.c **** }
581 .loc 2 73 0
582 0398 000060E2 rsb r0, r0, #0
583 039c 1040BDE8 ldmfd sp!, {r4, lr}
584 03a0 1EFF2FE1 bx lr
585 .LVL72:
586 .L68:
587 03a4 1040BDE8 ldmfd sp!, {r4, lr}
72:lib/vsprintf.c **** return simple_strtoul(cp,endp,base);
588 .loc 2 72 0
589 03a8 FEFFFFEA b simple_strtoul
590 .cfi_endproc
591 .LFE3:
593 .align 2
594 .global simple_strtoull
596 simple_strtoull:
597 .LFB4:
83:lib/vsprintf.c **** {
598 .loc 2 83 0
599 .cfi_startproc
600 @ Function supports interworking.
601 @ args = 0, pretend = 0, frame = 0
602 @ frame_needed = 0, uses_anonymous_args = 0
603 .LVL73:
604 03ac F8452DE9 stmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
605 .LCFI4:
606 .cfi_def_cfa_offset 32
86:lib/vsprintf.c **** if (!base) {
607 .loc 2 86 0
608 03b0 006052E2 subs r6, r2, #0
609 .cfi_offset 14, -4
610 .cfi_offset 10, -8
611 .cfi_offset 8, -12
612 .cfi_offset 7, -16
613 .cfi_offset 6, -20
614 .cfi_offset 5, -24
615 .cfi_offset 4, -28
616 .cfi_offset 3, -32
83:lib/vsprintf.c **** {
617 .loc 2 83 0
618 03b4 0040A0E1 mov r4, r0
619 03b8 0150A0E1 mov r5, r1
86:lib/vsprintf.c **** if (!base) {
620 .loc 2 86 0
621 03bc 1100001A bne .L71
622 .LVL74:
88:lib/vsprintf.c **** if (*cp == '0') {
623 .loc 2 88 0
624 03c0 0030D0E5 ldrb r3, [r0, #0] @ zero_extendqisi2
625 03c4 300053E3 cmp r3, #48
87:lib/vsprintf.c **** base = 10;
626 .loc 2 87 0
627 03c8 0A60A013 movne r6, #10
88:lib/vsprintf.c **** if (*cp == '0') {
628 .loc 2 88 0
629 03cc 1600001A bne .L72
630 .LVL75:
91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
631 .loc 2 91 0
632 03d0 0100F4E5 ldrb r0, [r4, #1]! @ zero_extendqisi2
633 .LVL76:
634 03d4 09FFFFEB bl __toupper
635 .LVL77:
636 03d8 580050E3 cmp r0, #88
89:lib/vsprintf.c **** base = 8;
637 .loc 2 89 0
638 03dc 0860A013 movne r6, #8
91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
639 .loc 2 91 0
640 03e0 1100001A bne .L72
91:lib/vsprintf.c **** if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
641 .loc 2 91 0 is_stmt 0 discriminator 1
642 03e4 0130D4E5 ldrb r3, [r4, #1] @ zero_extendqisi2
643 03e8 B8209FE5 ldr r2, .L83
644 03ec 0330D2E7 ldrb r3, [r2, r3] @ zero_extendqisi2
645 03f0 443003E2 and r3, r3, #68
646 03f4 000053E3 cmp r3, #0
89:lib/vsprintf.c **** base = 8;
647 .loc 2 89 0 is_stmt 1 discriminator 1
648 03f8 1060A013 movne r6, #16
649 03fc 0860A003 moveq r6, #8
650 0400 01408412 addne r4, r4, #1
651 .LVL78:
652 0404 080000EA b .L72
653 .LVL79:
654 .L71:
96:lib/vsprintf.c **** } else if (base == 16) {
655 .loc 2 96 0
656 0408 100056E3 cmp r6, #16
657 040c 0600001A bne .L72
97:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X')
658 .loc 2 97 0
659 0410 0030D0E5 ldrb r3, [r0, #0] @ zero_extendqisi2
660 0414 300053E3 cmp r3, #48
661 0418 0300001A bne .L72
97:lib/vsprintf.c **** if (cp[0] == '0' && toupper(cp[1]) == 'X')
662 .loc 2 97 0 is_stmt 0 discriminator 1
663 041c 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2
664 .LVL80:
665 0420 F6FEFFEB bl __toupper
666 .LVL81:
667 0424 580050E3 cmp r0, #88
98:lib/vsprintf.c **** cp += 2;
668 .loc 2 98 0 is_stmt 1 discriminator 1
669 0428 02408402 addeq r4, r4, #2
670 .LVL82:
671 .L72:
87:lib/vsprintf.c **** base = 10;
672 .loc 2 87 0 discriminator 1
673 042c 0070A0E3 mov r7, #0
674 0430 0080A0E3 mov r8, #0
675 0434 030000EA b .L73
676 .LVL83:
677 .L78:
102:lib/vsprintf.c **** result = result*base + value;
678 .loc 2 102 0
679 0438 972683E0 umull r2, r3, r7, r6
680 043c 963823E0 mla r3, r6, r8, r3
681 0440 027090E0 adds r7, r0, r2
682 .LVL84:
683 0444 0380A1E0 adc r8, r1, r3
684 .LVL85:
685 .L73:
102:lib/vsprintf.c **** result = result*base + value;
686 .loc 2 102 0 is_stmt 0 discriminator 1
687 0448 04A0A0E1 mov sl, r4
688 .LVL86:
100:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
689 .loc 2 100 0 is_stmt 1 discriminator 1
690 044c 54309FE5 ldr r3, .L83
691 0450 0100D4E4 ldrb r0, [r4], #1 @ zero_extendqisi2
692 .LVL87:
693 0454 0030D3E7 ldrb r3, [r3, r0] @ zero_extendqisi2
694 0458 440013E3 tst r3, #68
695 045c 0B00000A beq .L74
100:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
696 .loc 2 100 0 is_stmt 0 discriminator 2
697 0460 040013E3 tst r3, #4
698 0464 30004012 subne r0, r0, #48
699 0468 0200001A bne .L76
700 046c 020013E3 tst r3, #2
101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) {
701 .loc 2 101 0 is_stmt 1
702 0470 E2FEFF1B blne __toupper
703 .L77:
100:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
704 .loc 2 100 0 discriminator 3
705 0474 370040E2 sub r0, r0, #55
706 .L76:
100:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
707 .loc 2 100 0 is_stmt 0 discriminator 5
708 0478 C01FA0E1 mov r1, r0, asr #31
709 .LVL88:
101:lib/vsprintf.c **** ? toupper(*cp) : *cp)-'A'+10) < base) {
710 .loc 2 101 0 is_stmt 1 discriminator 5
711 047c 0620A0E1 mov r2, r6
712 0480 0030A0E3 mov r3, #0
100:lib/vsprintf.c **** while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
713 .loc 2 100 0 discriminator 5
714 0484 030051E1 cmp r1, r3
715 0488 02005001 cmpeq r0, r2
716 048c E9FFFF3A bcc .L78
717 .LVL89:
718 .L74:
105:lib/vsprintf.c **** if (endp)
719 .loc 2 105 0
720 0490 000055E3 cmp r5, #0
106:lib/vsprintf.c **** *endp = (char *)cp;
721 .loc 2 106 0
722 0494 00A08515 strne sl, [r5, #0]
108:lib/vsprintf.c **** }
723 .loc 2 108 0
724 0498 0700A0E1 mov r0, r7
725 049c 0810A0E1 mov r1, r8
726 04a0 F845BDE8 ldmfd sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
727 04a4 1EFF2FE1 bx lr
728 .L84:
729 .align 2
730 .L83:
731 04a8 00000000 .word _ctype
732 .cfi_endproc
733 .LFE4:
735 .align 2
736 .global simple_strtoll
738 simple_strtoll:
739 .LFB5:
118:lib/vsprintf.c **** {
740 .loc 2 118 0
741 .cfi_startproc
742 @ Function supports interworking.
743 @ args = 0, pretend = 0, frame = 0
744 @ frame_needed = 0, uses_anonymous_args = 0
745 .LVL90:
746 04ac 10402DE9 stmfd sp!, {r4, lr}
747 .LCFI5:
748 .cfi_def_cfa_offset 8
119:lib/vsprintf.c **** if(*cp=='-')
749 .loc 2 119 0
750 04b0 00C0D0E5 ldrb ip, [r0, #0] @ zero_extendqisi2
751 04b4 2D005CE3 cmp ip, #45
752 04b8 0700001A bne .L86
753 .cfi_offset 14, -4
754 .cfi_offset 4, -8
120:lib/vsprintf.c **** return -simple_strtoull(cp+1,endp,base);
755 .loc 2 120 0
756 04bc 010080E2 add r0, r0, #1
757 .LVL91:
758 04c0 FEFFFFEB bl simple_strtoull
759 .LVL92:
760 04c4 003070E2 rsbs r3, r0, #0
761 04c8 0040E1E2 rsc r4, r1, #0
122:lib/vsprintf.c **** }
762 .loc 2 122 0
763 04cc 0300A0E1 mov r0, r3
764 04d0 0410A0E1 mov r1, r4
765 04d4 1040BDE8 ldmfd sp!, {r4, lr}
766 04d8 1EFF2FE1 bx lr
767 .LVL93:
768 .L86:
769 04dc 1040BDE8 ldmfd sp!, {r4, lr}
121:lib/vsprintf.c **** return simple_strtoull(cp,endp,base);
770 .loc 2 121 0
771 04e0 FEFFFFEA b simple_strtoull
772 .cfi_endproc
773 .LFE5:
775 .align 2
776 .global vsnprintf
778 vsnprintf:
779 .LFB8:
233:lib/vsprintf.c ****
234:lib/vsprintf.c **** /**
235:lib/vsprintf.c **** * vsnprintf - Format a string and place it in a buffer
236:lib/vsprintf.c **** * @buf: The buffer to place the result into
237:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space
238:lib/vsprintf.c **** * @fmt: The format string to use
239:lib/vsprintf.c **** * @args: Arguments for the format string
240:lib/vsprintf.c **** *
241:lib/vsprintf.c **** * The return value is the number of characters which would
242:lib/vsprintf.c **** * be generated for the given input, excluding the trailing
243:lib/vsprintf.c **** * '\0', as per ISO C99. If you want to have the exact
244:lib/vsprintf.c **** * number of characters written into @buf as return value
245:lib/vsprintf.c **** * (not including the trailing '\0'), use vscnprintf. If the
246:lib/vsprintf.c **** * return is greater than or equal to @size, the resulting
247:lib/vsprintf.c **** * string is truncated.
248:lib/vsprintf.c **** *
249:lib/vsprintf.c **** * Call this function if you are already dealing with a va_list.
250:lib/vsprintf.c **** * You probably want snprintf instead.
251:lib/vsprintf.c **** */
252:lib/vsprintf.c **** int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
253:lib/vsprintf.c **** {
780 .loc 2 253 0
781 .cfi_startproc
782 @ Function supports interworking.
783 @ args = 0, pretend = 0, frame = 8
784 @ frame_needed = 0, uses_anonymous_args = 0
785 .LVL94:
786 04e4 F04F2DE9 stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
787 .LCFI6:
788 .cfi_def_cfa_offset 36
254:lib/vsprintf.c **** int len;
255:lib/vsprintf.c **** unsigned long long num;
256:lib/vsprintf.c **** int i, base;
257:lib/vsprintf.c **** char *str, *end, c;
258:lib/vsprintf.c **** const char *s;
259:lib/vsprintf.c ****
260:lib/vsprintf.c **** int flags; /* flags to number() */
261:lib/vsprintf.c ****
262:lib/vsprintf.c **** int field_width; /* width of output field */
263:lib/vsprintf.c **** int precision; /* min. # of digits for integers; max
264:lib/vsprintf.c **** number of chars for from string */
265:lib/vsprintf.c **** int qualifier; /* 'h', 'l', or 'L' for integer fields */
266:lib/vsprintf.c **** /* 'z' support added 23/7/1999 S.H. */
267:lib/vsprintf.c **** /* 'z' changed to 'Z' --davidm 1/25/99 */
268:lib/vsprintf.c **** /* 't' added for ptrdiff_t */
269:lib/vsprintf.c ****
270:lib/vsprintf.c **** /* Reject out-of-range values early */
271:lib/vsprintf.c **** if ((int) size < 0) {
789 .loc 2 271 0
790 04e8 007051E2 subs r7, r1, #0
791 .cfi_offset 14, -4
792 .cfi_offset 11, -8
793 .cfi_offset 10, -12
794 .cfi_offset 9, -16
795 .cfi_offset 8, -20
796 .cfi_offset 7, -24
797 .cfi_offset 6, -28
798 .cfi_offset 5, -32
799 .cfi_offset 4, -36
253:lib/vsprintf.c **** {
800 .loc 2 253 0
801 04ec 1CD04DE2 sub sp, sp, #28
802 .LCFI7:
803 .cfi_def_cfa_offset 64
253:lib/vsprintf.c **** {
804 .loc 2 253 0
805 04f0 0050A0E1 mov r5, r0
806 04f4 14208DE5 str r2, [sp, #20]
807 04f8 0360A0E1 mov r6, r3
272:lib/vsprintf.c **** return 0;
808 .loc 2 272 0
809 04fc 0000A0B3 movlt r0, #0
810 .LVL95:
271:lib/vsprintf.c **** if ((int) size < 0) {
811 .loc 2 271 0
812 0500 350100BA blt .L89
813 .LVL96:
273:lib/vsprintf.c **** }
274:lib/vsprintf.c ****
275:lib/vsprintf.c **** str = buf;
276:lib/vsprintf.c **** end = buf + size - 1;
814 .loc 2 276 0
815 0504 014047E2 sub r4, r7, #1
816 0508 044080E0 add r4, r0, r4
817 .LVL97:
277:lib/vsprintf.c ****
278:lib/vsprintf.c **** if (end < buf - 1) {
818 .loc 2 278 0
819 050c 013040E2 sub r3, r0, #1
820 .LVL98:
821 0510 030054E1 cmp r4, r3
822 .LVL99:
279:lib/vsprintf.c **** end = ((void *) -1);
280:lib/vsprintf.c **** size = end - buf + 1;
823 .loc 2 280 0
824 0514 00706032 rsbcc r7, r0, #0
825 .LVL100:
279:lib/vsprintf.c **** end = ((void *) -1);
826 .loc 2 279 0
827 0518 0040E033 mvncc r4, #0
828 .LBB3:
281:lib/vsprintf.c **** }
282:lib/vsprintf.c ****
283:lib/vsprintf.c **** for (; *fmt ; ++fmt) {
284:lib/vsprintf.c **** if (*fmt != '%') {
285:lib/vsprintf.c **** if (str <= end)
286:lib/vsprintf.c **** *str = *fmt;
287:lib/vsprintf.c **** ++str;
288:lib/vsprintf.c **** continue;
289:lib/vsprintf.c **** }
290:lib/vsprintf.c ****
291:lib/vsprintf.c **** /* process flags */
292:lib/vsprintf.c **** flags = 0;
293:lib/vsprintf.c **** repeat:
294:lib/vsprintf.c **** ++fmt; /* this also skips first '%' */
295:lib/vsprintf.c **** switch (*fmt) {
296:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat;
297:lib/vsprintf.c **** case '+': flags |= PLUS; goto repeat;
298:lib/vsprintf.c **** case ' ': flags |= SPACE; goto repeat;
299:lib/vsprintf.c **** case '#': flags |= SPECIAL; goto repeat;
300:lib/vsprintf.c **** case '0': flags |= ZEROPAD; goto repeat;
301:lib/vsprintf.c **** }
302:lib/vsprintf.c ****
303:lib/vsprintf.c **** /* get field width */
304:lib/vsprintf.c **** field_width = -1;
305:lib/vsprintf.c **** if (isdigit(*fmt))
306:lib/vsprintf.c **** field_width = skip_atoi(&fmt);
307:lib/vsprintf.c **** else if (*fmt == '*') {
308:lib/vsprintf.c **** ++fmt;
309:lib/vsprintf.c **** /* it's the next argument */
310:lib/vsprintf.c **** field_width = va_arg(args, int);
311:lib/vsprintf.c **** if (field_width < 0) {
312:lib/vsprintf.c **** field_width = -field_width;
313:lib/vsprintf.c **** flags |= LEFT;
314:lib/vsprintf.c **** }
315:lib/vsprintf.c **** }
316:lib/vsprintf.c ****
317:lib/vsprintf.c **** /* get the precision */
318:lib/vsprintf.c **** precision = -1;
319:lib/vsprintf.c **** if (*fmt == '.') {
320:lib/vsprintf.c **** ++fmt;
321:lib/vsprintf.c **** if (isdigit(*fmt))
322:lib/vsprintf.c **** precision = skip_atoi(&fmt);
323:lib/vsprintf.c **** else if (*fmt == '*') {
324:lib/vsprintf.c **** ++fmt;
325:lib/vsprintf.c **** /* it's the next argument */
326:lib/vsprintf.c **** precision = va_arg(args, int);
327:lib/vsprintf.c **** }
328:lib/vsprintf.c **** if (precision < 0)
329:lib/vsprintf.c **** precision = 0;
330:lib/vsprintf.c **** }
331:lib/vsprintf.c ****
332:lib/vsprintf.c **** /* get the conversion qualifier */
333:lib/vsprintf.c **** qualifier = -1;
334:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
335:lib/vsprintf.c **** *fmt =='Z' || *fmt == 'z' || *fmt == 't') {
336:lib/vsprintf.c **** qualifier = *fmt;
337:lib/vsprintf.c **** ++fmt;
338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') {
339:lib/vsprintf.c **** qualifier = 'L';
340:lib/vsprintf.c **** ++fmt;
341:lib/vsprintf.c **** }
342:lib/vsprintf.c **** }
343:lib/vsprintf.c ****
344:lib/vsprintf.c **** /* default base */
345:lib/vsprintf.c **** base = 10;
346:lib/vsprintf.c ****
347:lib/vsprintf.c **** switch (*fmt) {
348:lib/vsprintf.c **** case 'c':
349:lib/vsprintf.c **** if (!(flags & LEFT)) {
350:lib/vsprintf.c **** while (--field_width > 0) {
351:lib/vsprintf.c **** if (str <= end)
352:lib/vsprintf.c **** *str = ' ';
353:lib/vsprintf.c **** ++str;
354:lib/vsprintf.c **** }
355:lib/vsprintf.c **** }
356:lib/vsprintf.c **** c = (unsigned char) va_arg(args, int);
357:lib/vsprintf.c **** if (str <= end)
358:lib/vsprintf.c **** *str = c;
359:lib/vsprintf.c **** ++str;
360:lib/vsprintf.c **** while (--field_width > 0) {
361:lib/vsprintf.c **** if (str <= end)
362:lib/vsprintf.c **** *str = ' ';
363:lib/vsprintf.c **** ++str;
364:lib/vsprintf.c **** }
365:lib/vsprintf.c **** continue;
366:lib/vsprintf.c ****
367:lib/vsprintf.c **** case 's':
368:lib/vsprintf.c **** s = va_arg(args, char *);
369:lib/vsprintf.c ****
370:lib/vsprintf.c **** len = strnlen(s, precision);
371:lib/vsprintf.c ****
372:lib/vsprintf.c **** if (!(flags & LEFT)) {
373:lib/vsprintf.c **** while (len < field_width--) {
374:lib/vsprintf.c **** if (str <= end)
375:lib/vsprintf.c **** *str = ' ';
376:lib/vsprintf.c **** ++str;
377:lib/vsprintf.c **** }
378:lib/vsprintf.c **** }
379:lib/vsprintf.c **** for (i = 0; i < len; ++i) {
380:lib/vsprintf.c **** if (str <= end)
381:lib/vsprintf.c **** *str = *s;
382:lib/vsprintf.c **** ++str; ++s;
383:lib/vsprintf.c **** }
384:lib/vsprintf.c **** while (len < field_width--) {
385:lib/vsprintf.c **** if (str <= end)
386:lib/vsprintf.c **** *str = ' ';
387:lib/vsprintf.c **** ++str;
388:lib/vsprintf.c **** }
389:lib/vsprintf.c **** continue;
390:lib/vsprintf.c ****
391:lib/vsprintf.c **** case 'p':
392:lib/vsprintf.c **** if (field_width == -1) {
393:lib/vsprintf.c **** field_width = 2*sizeof(void *);
394:lib/vsprintf.c **** flags |= ZEROPAD;
395:lib/vsprintf.c **** }
396:lib/vsprintf.c **** str = number(str, end,
397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *),
398:lib/vsprintf.c **** 16, field_width, precision, flags);
399:lib/vsprintf.c **** continue;
400:lib/vsprintf.c ****
401:lib/vsprintf.c ****
402:lib/vsprintf.c **** case 'n':
403:lib/vsprintf.c **** /* FIXME:
404:lib/vsprintf.c **** * What does C99 say about the overflow case here? */
405:lib/vsprintf.c **** if (qualifier == 'l') {
406:lib/vsprintf.c **** long * ip = va_arg(args, long *);
407:lib/vsprintf.c **** *ip = (str - buf);
408:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') {
409:lib/vsprintf.c **** size_t * ip = va_arg(args, size_t *);
410:lib/vsprintf.c **** *ip = (str - buf);
411:lib/vsprintf.c **** } else {
412:lib/vsprintf.c **** int * ip = va_arg(args, int *);
829 .loc 2 412 0
830 051c 0580A0E1 mov r8, r5
831 0520 230100EA b .L91
832 .LVL101:
833 .L157:
834 .LBE3:
284:lib/vsprintf.c **** if (*fmt != '%') {
835 .loc 2 284 0
836 0524 250053E3 cmp r3, #37
837 0528 00A0A003 moveq sl, #0
838 052c 0300000A beq .L167
285:lib/vsprintf.c **** if (str <= end)
839 .loc 2 285 0
840 0530 040058E1 cmp r8, r4
286:lib/vsprintf.c **** *str = *fmt;
841 .loc 2 286 0
842 0534 0030C895 strlsb r3, [r8, #0]
287:lib/vsprintf.c **** ++str;
843 .loc 2 287 0
844 0538 018088E2 add r8, r8, #1
845 .LVL102:
846 053c 170100EA b .L172
847 .L167:
848 .LVL103:
294:lib/vsprintf.c **** ++fmt; /* this also skips first '%' */
849 .loc 2 294 0
850 0540 14309DE5 ldr r3, [sp, #20]
851 0544 012083E2 add r2, r3, #1
852 .LVL104:
853 0548 14208DE5 str r2, [sp, #20]
295:lib/vsprintf.c **** switch (*fmt) {
854 .loc 2 295 0
855 054c 0130D3E5 ldrb r3, [r3, #1] @ zero_extendqisi2
856 0550 2B0053E3 cmp r3, #43
857 0554 0C00000A beq .L99
858 0558 0400008A bhi .L102
859 055c 200053E3 cmp r3, #32
860 0560 0B00000A beq .L97
861 0564 230053E3 cmp r3, #35
862 0568 0F00001A bne .L96
863 056c 0A0000EA b .L177
864 .L102:
865 0570 2D0053E3 cmp r3, #45
866 0574 0200000A beq .L100
867 0578 300053E3 cmp r3, #48
868 057c 0A00001A bne .L96
869 0580 070000EA b .L178
870 .L100:
296:lib/vsprintf.c **** case '-': flags |= LEFT; goto repeat;
871 .loc 2 296 0
872 0584 10A08AE3 orr sl, sl, #16
873 .LVL105:
874 0588 ECFFFFEA b .L167
875 .L99:
297:lib/vsprintf.c **** case '+': flags |= PLUS; goto repeat;
876 .loc 2 297 0
877 058c 04A08AE3 orr sl, sl, #4
878 .LVL106:
879 0590 EAFFFFEA b .L167
880 .L97:
298:lib/vsprintf.c **** case ' ': flags |= SPACE; goto repeat;
881 .loc 2 298 0
882 0594 08A08AE3 orr sl, sl, #8
883 .LVL107:
884 0598 E8FFFFEA b .L167
885 .L177:
299:lib/vsprintf.c **** case '#': flags |= SPECIAL; goto repeat;
886 .loc 2 299 0
887 059c 20A08AE3 orr sl, sl, #32
888 .LVL108:
889 05a0 E6FFFFEA b .L167
890 .L178:
300:lib/vsprintf.c **** case '0': flags |= ZEROPAD; goto repeat;
891 .loc 2 300 0
892 05a4 01A08AE3 orr sl, sl, #1
893 .LVL109:
894 05a8 E4FFFFEA b .L167
895 .L96:
896 .LVL110:
305:lib/vsprintf.c **** if (isdigit(*fmt))
897 .loc 2 305 0
898 05ac 34149FE5 ldr r1, .L181
899 05b0 0310D1E7 ldrb r1, [r1, r3] @ zero_extendqisi2
900 05b4 040011E3 tst r1, #4
901 05b8 0400000A beq .L104
306:lib/vsprintf.c **** field_width = skip_atoi(&fmt);
902 .loc 2 306 0
903 05bc 14008DE2 add r0, sp, #20
904 05c0 95FEFFEB bl skip_atoi
905 05c4 0620A0E1 mov r2, r6
906 05c8 0090A0E1 mov r9, r0
907 .LVL111:
908 05cc 0A0000EA b .L105
909 .LVL112:
910 .L104:
307:lib/vsprintf.c **** else if (*fmt == '*') {
911 .loc 2 307 0
912 05d0 2A0053E3 cmp r3, #42
913 05d4 0620A011 movne r2, r6
304:lib/vsprintf.c **** field_width = -1;
914 .loc 2 304 0
915 05d8 0090E013 mvnne r9, #0
307:lib/vsprintf.c **** else if (*fmt == '*') {
916 .loc 2 307 0
917 05dc 0600001A bne .L105
310:lib/vsprintf.c **** field_width = va_arg(args, int);
918 .loc 2 310 0
919 05e0 009096E5 ldr r9, [r6, #0]
308:lib/vsprintf.c **** ++fmt;
920 .loc 2 308 0
921 05e4 012082E2 add r2, r2, #1
311:lib/vsprintf.c **** if (field_width < 0) {
922 .loc 2 311 0
923 05e8 000059E3 cmp r9, #0
308:lib/vsprintf.c **** ++fmt;
924 .loc 2 308 0
925 05ec 14208DE5 str r2, [sp, #20]
312:lib/vsprintf.c **** field_width = -field_width;
926 .loc 2 312 0
927 05f0 009069B2 rsblt r9, r9, #0
310:lib/vsprintf.c **** field_width = va_arg(args, int);
928 .loc 2 310 0
929 05f4 042086E2 add r2, r6, #4
930 .LVL113:
313:lib/vsprintf.c **** flags |= LEFT;
931 .loc 2 313 0
932 05f8 10A08AB3 orrlt sl, sl, #16
933 .LVL114:
934 .L105:
319:lib/vsprintf.c **** if (*fmt == '.') {
935 .loc 2 319 0
936 05fc 14309DE5 ldr r3, [sp, #20]
937 0600 0010D3E5 ldrb r1, [r3, #0] @ zero_extendqisi2
938 0604 2E0051E3 cmp r1, #46
318:lib/vsprintf.c **** precision = -1;
939 .loc 2 318 0
940 0608 0010E013 mvnne r1, #0
319:lib/vsprintf.c **** if (*fmt == '.') {
941 .loc 2 319 0
942 060c 1300001A bne .L106
320:lib/vsprintf.c **** ++fmt;
943 .loc 2 320 0
944 0610 010083E2 add r0, r3, #1
945 0614 14008DE5 str r0, [sp, #20]
321:lib/vsprintf.c **** if (isdigit(*fmt))
946 .loc 2 321 0
947 0618 C8139FE5 ldr r1, .L181
948 061c 0130D3E5 ldrb r3, [r3, #1] @ zero_extendqisi2
949 0620 0310D1E7 ldrb r1, [r1, r3] @ zero_extendqisi2
950 0624 041011E2 ands r1, r1, #4
951 0628 0500000A beq .L107
322:lib/vsprintf.c **** precision = skip_atoi(&fmt);
952 .loc 2 322 0
953 062c 14008DE2 add r0, sp, #20
954 0630 10208DE5 str r2, [sp, #16]
955 0634 78FEFFEB bl skip_atoi
956 0638 10209DE5 ldr r2, [sp, #16]
957 063c 0010A0E1 mov r1, r0
958 .LVL115:
959 0640 050000EA b .L108
960 .LVL116:
961 .L107:
323:lib/vsprintf.c **** else if (*fmt == '*') {
962 .loc 2 323 0
963 0644 2A0053E3 cmp r3, #42
964 0648 0400001A bne .L106
324:lib/vsprintf.c **** ++fmt;
965 .loc 2 324 0
966 064c 010080E2 add r0, r0, #1
967 0650 14008DE5 str r0, [sp, #20]
326:lib/vsprintf.c **** precision = va_arg(args, int);
968 .loc 2 326 0
969 0654 001092E5 ldr r1, [r2, #0]
970 .LVL117:
971 0658 042082E2 add r2, r2, #4
972 .LVL118:
973 .L108:
329:lib/vsprintf.c **** precision = 0;
974 .loc 2 329 0
975 065c C11FC1E1 bic r1, r1, r1, asr #31
976 .LVL119:
977 .L106:
334:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
978 .loc 2 334 0
979 0660 14009DE5 ldr r0, [sp, #20]
980 0664 0030D0E5 ldrb r3, [r0, #0] @ zero_extendqisi2
981 0668 680053E3 cmp r3, #104
982 066c 6C005313 cmpne r3, #108
983 0670 0900000A beq .L109
334:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
984 .loc 2 334 0 is_stmt 0 discriminator 1
985 0674 5A0053E3 cmp r3, #90
986 0678 0700000A beq .L109
987 067c 0100008A bhi .L111
988 0680 4C0053E3 cmp r3, #76
989 0684 020000EA b .L169
990 .L111:
991 0688 740053E3 cmp r3, #116
992 068c 0200000A beq .L109
993 0690 7A0053E3 cmp r3, #122
994 .L169:
333:lib/vsprintf.c **** qualifier = -1;
995 .loc 2 333 0 is_stmt 1 discriminator 1
996 0694 0030E013 mvnne r3, #0
334:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
997 .loc 2 334 0 discriminator 1
998 0698 0800001A bne .L110
999 .L109:
1000 .LVL120:
337:lib/vsprintf.c **** ++fmt;
1001 .loc 2 337 0
1002 069c 01C080E2 add ip, r0, #1
338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') {
1003 .loc 2 338 0
1004 06a0 6C0053E3 cmp r3, #108
337:lib/vsprintf.c **** ++fmt;
1005 .loc 2 337 0
1006 06a4 14C08DE5 str ip, [sp, #20]
338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') {
1007 .loc 2 338 0
1008 06a8 0400001A bne .L110
338:lib/vsprintf.c **** if (qualifier == 'l' && *fmt == 'l') {
1009 .loc 2 338 0 is_stmt 0 discriminator 1
1010 06ac 0100D0E5 ldrb r0, [r0, #1] @ zero_extendqisi2
1011 06b0 6C0050E3 cmp r0, #108
1012 .LVL121:
340:lib/vsprintf.c **** ++fmt;
1013 .loc 2 340 0 is_stmt 1 discriminator 1
1014 06b4 01C08C02 addeq ip, ip, #1
1015 06b8 14C08D05 streq ip, [sp, #20]
339:lib/vsprintf.c **** qualifier = 'L';
1016 .loc 2 339 0 discriminator 1
1017 06bc 4C30A003 moveq r3, #76
1018 .LVL122:
1019 .L110:
347:lib/vsprintf.c **** switch (*fmt) {
1020 .loc 2 347 0
1021 06c0 14009DE5 ldr r0, [sp, #20]
1022 06c4 0000D0E5 ldrb r0, [r0, #0] @ zero_extendqisi2
1023 06c8 6E0050E3 cmp r0, #110
1024 06cc 6400000A beq .L117
1025 06d0 0C00008A bhi .L123
1026 06d4 630050E3 cmp r0, #99
1027 06d8 1700000A beq .L115
1028 06dc 0400008A bhi .L124
1029 06e0 250050E3 cmp r0, #37
1030 06e4 6A00000A beq .L113
1031 06e8 580050E3 cmp r0, #88
1032 06ec 7100001A bne .L112
1033 06f0 6C0000EA b .L179
1034 .L124:
1035 06f4 640050E3 cmp r0, #100
1036 06f8 6C00000A beq .L116
1037 06fc 690050E3 cmp r0, #105
1038 0700 6C00001A bne .L112
1039 0704 690000EA b .L116
1040 .L123:
1041 0708 730050E3 cmp r0, #115
1042 070c 2200000A beq .L120
1043 0710 0400008A bhi .L125
1044 0714 6F0050E3 cmp r0, #111
1045 0718 6000000A beq .L118
1046 071c 700050E3 cmp r0, #112
1047 0720 6400001A bne .L112
1048 0724 400000EA b .L180
1049 .L125:
1050 0728 750050E3 cmp r0, #117
1051 072c 6F00000A beq .L121
1052 0730 780050E3 cmp r0, #120
1053 0734 5F00001A bne .L112
1054 0738 6E0000EA b .L166
1055 .L115:
349:lib/vsprintf.c **** if (!(flags & LEFT)) {
1056 .loc 2 349 0
1057 073c 10001AE3 tst sl, #16
1058 0740 0700001A bne .L126
1059 0744 030000EA b .L127
1060 .LVL123:
1061 .L129:
351:lib/vsprintf.c **** if (str <= end)
1062 .loc 2 351 0
1063 0748 040058E1 cmp r8, r4
352:lib/vsprintf.c **** *str = ' ';
1064 .loc 2 352 0
1065 074c 2030A093 movls r3, #32
1066 0750 0030C895 strlsb r3, [r8, #0]
353:lib/vsprintf.c **** ++str;
1067 .loc 2 353 0
1068 0754 018088E2 add r8, r8, #1
1069 .LVL124:
1070 .L127:
350:lib/vsprintf.c **** while (--field_width > 0) {
1071 .loc 2 350 0 discriminator 1
1072 0758 019049E2 sub r9, r9, #1
1073 .LVL125:
1074 075c 000059E3 cmp r9, #0
1075 0760 F8FFFFCA bgt .L129
1076 .L126:
357:lib/vsprintf.c **** if (str <= end)
1077 .loc 2 357 0
1078 0764 040058E1 cmp r8, r4
356:lib/vsprintf.c **** c = (unsigned char) va_arg(args, int);
1079 .loc 2 356 0
1080 0768 043082E2 add r3, r2, #4
1081 076c 002092E5 ldr r2, [r2, #0]
1082 .LVL126:
357:lib/vsprintf.c **** if (str <= end)
1083 .loc 2 357 0
1084 0770 0400008A bhi .L132
1085 0774 020000EA b .L173
1086 .L133:
361:lib/vsprintf.c **** if (str <= end)
1087 .loc 2 361 0
1088 0778 040058E1 cmp r8, r4
1089 077c 0100008A bhi .L132
362:lib/vsprintf.c **** *str = ' ';
1090 .loc 2 362 0
1091 0780 2020A0E3 mov r2, #32
1092 .L173:
1093 0784 0020C8E5 strb r2, [r8, #0]
1094 .L132:
360:lib/vsprintf.c **** while (--field_width > 0) {
1095 .loc 2 360 0
1096 0788 019049E2 sub r9, r9, #1
1097 .LVL127:
1098 078c 000059E3 cmp r9, #0
363:lib/vsprintf.c **** ++str;
1099 .loc 2 363 0
1100 0790 018088E2 add r8, r8, #1
1101 .LVL128:
360:lib/vsprintf.c **** while (--field_width > 0) {
1102 .loc 2 360 0
1103 0794 F7FFFFCA bgt .L133
1104 0798 3B0000EA b .L171
1105 .LVL129:
1106 .L120:
368:lib/vsprintf.c **** s = va_arg(args, char *);
1107 .loc 2 368 0
1108 079c 006092E5 ldr r6, [r2, #0]
370:lib/vsprintf.c **** len = strnlen(s, precision);
1109 .loc 2 370 0
1110 07a0 0600A0E1 mov r0, r6
368:lib/vsprintf.c **** s = va_arg(args, char *);
1111 .loc 2 368 0
1112 07a4 04B082E2 add fp, r2, #4
1113 .LVL130:
370:lib/vsprintf.c **** len = strnlen(s, precision);
1114 .loc 2 370 0
1115 07a8 FEFFFFEB bl strnlen
1116 .LVL131:
372:lib/vsprintf.c **** if (!(flags & LEFT)) {
1117 .loc 2 372 0
1118 07ac 10001AE3 tst sl, #16
1119 07b0 0800001A bne .L134
1120 07b4 030000EA b .L135
1121 .L137:
374:lib/vsprintf.c **** if (str <= end)
1122 .loc 2 374 0
1123 07b8 040058E1 cmp r8, r4
375:lib/vsprintf.c **** *str = ' ';
1124 .loc 2 375 0
1125 07bc 2030A093 movls r3, #32
1126 07c0 0030C895 strlsb r3, [r8, #0]
376:lib/vsprintf.c **** ++str;
1127 .loc 2 376 0
1128 07c4 018088E2 add r8, r8, #1
1129 .LVL132:
1130 .L135:
373:lib/vsprintf.c **** while (len < field_width--) {
1131 .loc 2 373 0 discriminator 1
1132 07c8 019049E2 sub r9, r9, #1
1133 .LVL133:
252:lib/vsprintf.c **** int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
1134 .loc 2 252 0 discriminator 1
1135 07cc 013089E2 add r3, r9, #1
373:lib/vsprintf.c **** while (len < field_width--) {
1136 .loc 2 373 0 discriminator 1
1137 07d0 030050E1 cmp r0, r3
1138 07d4 F7FFFFBA blt .L137
1139 .L134:
1140 .LVL134:
379:lib/vsprintf.c **** for (i = 0; i < len; ++i) {
1141 .loc 2 379 0
1142 07d8 0820A0E1 mov r2, r8
1143 07dc 0030A0E3 mov r3, #0
1144 07e0 040000EA b .L138
1145 .LVL135:
1146 .L140:
380:lib/vsprintf.c **** if (str <= end)
1147 .loc 2 380 0
1148 07e4 040052E1 cmp r2, r4
381:lib/vsprintf.c **** *str = *s;
1149 .loc 2 381 0
1150 07e8 0310D697 ldrlsb r1, [r6, r3] @ zero_extendqisi2
382:lib/vsprintf.c **** ++str; ++s;
1151 .loc 2 382 0
1152 07ec 012082E2 add r2, r2, #1
1153 .LVL136:
381:lib/vsprintf.c **** *str = *s;
1154 .loc 2 381 0
1155 07f0 0310C897 strlsb r1, [r8, r3]
379:lib/vsprintf.c **** for (i = 0; i < len; ++i) {
1156 .loc 2 379 0
1157 07f4 013083E2 add r3, r3, #1
1158 .LVL137:
1159 .L138:
379:lib/vsprintf.c **** for (i = 0; i < len; ++i) {
1160 .loc 2 379 0 is_stmt 0 discriminator 1
1161 07f8 000053E1 cmp r3, r0
1162 07fc F8FFFFBA blt .L140
379:lib/vsprintf.c **** for (i = 0; i < len; ++i) {
1163 .loc 2 379 0
1164 0800 0280A0E1 mov r8, r2
1165 0804 040000EA b .L141
1166 .LVL138:
1167 .L143:
385:lib/vsprintf.c **** if (str <= end)
1168 .loc 2 385 0 is_stmt 1
1169 0808 040058E1 cmp r8, r4
386:lib/vsprintf.c **** *str = ' ';
1170 .loc 2 386 0
1171 080c 2030A093 movls r3, #32
1172 0810 0030C895 strlsb r3, [r8, #0]
387:lib/vsprintf.c **** ++str;
1173 .loc 2 387 0
1174 0814 019049E2 sub r9, r9, #1
1175 0818 018088E2 add r8, r8, #1
1176 .LVL139:
1177 .L141:
384:lib/vsprintf.c **** while (len < field_width--) {
1178 .loc 2 384 0 discriminator 1
1179 081c 090050E1 cmp r0, r9
1180 0820 F8FFFFBA blt .L143
368:lib/vsprintf.c **** s = va_arg(args, char *);
1181 .loc 2 368 0
1182 0824 0B20A0E1 mov r2, fp
1183 0828 5D0000EA b .L95
1184 .LVL140:
1185 .L180:
392:lib/vsprintf.c **** if (field_width == -1) {
1186 .loc 2 392 0
1187 082c 010079E3 cmn r9, #1
1188 .LVL141:
396:lib/vsprintf.c **** str = number(str, end,
1189 .loc 2 396 0
1190 0830 1030A0E3 mov r3, #16
1191 .LVL142:
394:lib/vsprintf.c **** flags |= ZEROPAD;
1192 .loc 2 394 0
1193 0834 01A08A03 orreq sl, sl, #1
1194 .LVL143:
393:lib/vsprintf.c **** field_width = 2*sizeof(void *);
1195 .loc 2 393 0
1196 0838 09908902 addeq r9, r9, #9
1197 .LVL144:
397:lib/vsprintf.c **** (unsigned long) va_arg(args, void *),
1198 .loc 2 397 0
1199 083c 046082E2 add r6, r2, #4
396:lib/vsprintf.c **** str = number(str, end,
1200 .loc 2 396 0
1201 0840 0800A0E1 mov r0, r8
1202 0844 002092E5 ldr r2, [r2, #0]
1203 0848 00308DE5 str r3, [sp, #0]
1204 084c 08108DE5 str r1, [sp, #8]
1205 0850 04908DE5 str r9, [sp, #4]
1206 0854 0CA08DE5 str sl, [sp, #12]
1207 0858 0410A0E1 mov r1, r4
1208 .LVL145:
1209 085c 0030A0E3 mov r3, #0
1210 0860 4C0000EA b .L176
1211 .LVL146:
1212 .L117:
405:lib/vsprintf.c **** if (qualifier == 'l') {
1213 .loc 2 405 0
1214 0864 6C0053E3 cmp r3, #108
1215 .LVL147:
1216 .LBB4:
407:lib/vsprintf.c **** *ip = (str - buf);
1217 .loc 2 407 0
1218 0868 00309205 ldreq r3, [r2, #0]
1219 .LVL148:
1220 086c 08106500 rsbeq r1, r5, r8
1221 .LVL149:
1222 0870 00108305 streq r1, [r3, #0]
406:lib/vsprintf.c **** long * ip = va_arg(args, long *);
1223 .loc 2 406 0
1224 0874 04208202 addeq r2, r2, #4
1225 .LVL150:
1226 0878 4900000A beq .L95
1227 .LVL151:
1228 .L145:
1229 087c 043082E2 add r3, r2, #4
1230 .LVL152:
1231 .LBE4:
1232 .LBB5:
410:lib/vsprintf.c **** *ip = (str - buf);
1233 .loc 2 410 0
1234 0880 002092E5 ldr r2, [r2, #0]
1235 0884 081065E0 rsb r1, r5, r8
1236 .LVL153:
1237 0888 001082E5 str r1, [r2, #0]
1238 .L171:
409:lib/vsprintf.c **** size_t * ip = va_arg(args, size_t *);
1239 .loc 2 409 0
1240 088c 0320A0E1 mov r2, r3
1241 0890 430000EA b .L95
1242 .LVL154:
1243 .L113:
1244 .LBE5:
413:lib/vsprintf.c **** *ip = (str - buf);
414:lib/vsprintf.c **** }
415:lib/vsprintf.c **** continue;
416:lib/vsprintf.c ****
417:lib/vsprintf.c **** case '%':
418:lib/vsprintf.c **** if (str <= end)
1245 .loc 2 418 0
1246 0894 040058E1 cmp r8, r4
419:lib/vsprintf.c **** *str = '%';
1247 .loc 2 419 0
1248 0898 0000C895 strlsb r0, [r8, #0]
1249 089c 110000EA b .L150
1250 .L118:
1251 .LVL155:
420:lib/vsprintf.c **** ++str;
421:lib/vsprintf.c **** continue;
422:lib/vsprintf.c ****
423:lib/vsprintf.c **** /* integer number formats - set up the flags and "break" */
424:lib/vsprintf.c **** case 'o':
425:lib/vsprintf.c **** base = 8;
1252 .loc 2 425 0
1253 08a0 0800A0E3 mov r0, #8
426:lib/vsprintf.c **** break;
1254 .loc 2 426 0
1255 08a4 140000EA b .L122
1256 .LVL156:
1257 .L179:
427:lib/vsprintf.c ****
428:lib/vsprintf.c **** case 'X':
429:lib/vsprintf.c **** flags |= LARGE;
1258 .loc 2 429 0
1259 08a8 40A08AE3 orr sl, sl, #64
1260 .LVL157:
1261 08ac 110000EA b .L166
1262 .L116:
430:lib/vsprintf.c **** case 'x':
431:lib/vsprintf.c **** base = 16;
432:lib/vsprintf.c **** break;
433:lib/vsprintf.c ****
434:lib/vsprintf.c **** case 'd':
435:lib/vsprintf.c **** case 'i':
436:lib/vsprintf.c **** flags |= SIGN;
1263 .loc 2 436 0
1264 08b0 02A08AE3 orr sl, sl, #2
1265 .LVL158:
1266 08b4 0D0000EA b .L121
1267 .L112:
437:lib/vsprintf.c **** case 'u':
438:lib/vsprintf.c **** break;
439:lib/vsprintf.c ****
440:lib/vsprintf.c **** default:
441:lib/vsprintf.c **** if (str <= end)
1268 .loc 2 441 0
1269 08b8 040058E1 cmp r8, r4
442:lib/vsprintf.c **** *str = '%';
1270 .loc 2 442 0
1271 08bc 2530A093 movls r3, #37
1272 .LVL159:
1273 08c0 0030C895 strlsb r3, [r8, #0]
443:lib/vsprintf.c **** ++str;
444:lib/vsprintf.c **** if (*fmt) {
1274 .loc 2 444 0
1275 08c4 14309DE5 ldr r3, [sp, #20]
1276 08c8 0010D3E5 ldrb r1, [r3, #0] @ zero_extendqisi2
1277 .LVL160:
1278 08cc 000051E3 cmp r1, #0
445:lib/vsprintf.c **** if (str <= end)
446:lib/vsprintf.c **** *str = *fmt;
447:lib/vsprintf.c **** ++str;
448:lib/vsprintf.c **** } else {
449:lib/vsprintf.c **** --fmt;
1279 .loc 2 449 0
1280 08d0 01304302 subeq r3, r3, #1
443:lib/vsprintf.c **** ++str;
1281 .loc 2 443 0
1282 08d4 018088E2 add r8, r8, #1
1283 .LVL161:
1284 .loc 2 449 0
1285 08d8 14308D05 streq r3, [sp, #20]
444:lib/vsprintf.c **** if (*fmt) {
1286 .loc 2 444 0
1287 08dc 3000000A beq .L95
445:lib/vsprintf.c **** if (str <= end)
1288 .loc 2 445 0
1289 08e0 040058E1 cmp r8, r4
446:lib/vsprintf.c **** *str = *fmt;
1290 .loc 2 446 0
1291 08e4 0010C895 strlsb r1, [r8, #0]
1292 .L150:
447:lib/vsprintf.c **** ++str;
1293 .loc 2 447 0
1294 08e8 018088E2 add r8, r8, #1
1295 .LVL162:
1296 08ec 2C0000EA b .L95
1297 .LVL163:
1298 .L121:
345:lib/vsprintf.c **** base = 10;
1299 .loc 2 345 0
1300 08f0 0A00A0E3 mov r0, #10
1301 08f4 000000EA b .L122
1302 .L166:
431:lib/vsprintf.c **** base = 16;
1303 .loc 2 431 0
1304 08f8 1000A0E3 mov r0, #16
1305 .LVL164:
1306 .L122:
450:lib/vsprintf.c **** }
451:lib/vsprintf.c **** continue;
452:lib/vsprintf.c **** }
453:lib/vsprintf.c **** if (qualifier == 'L')
1307 .loc 2 453 0
1308 08fc 4C0053E3 cmp r3, #76
454:lib/vsprintf.c **** num = va_arg(args, long long);
1309 .loc 2 454 0
1310 0900 07208202 addeq r2, r2, #7
1311 0904 0720C203 biceq r2, r2, #7
1312 0908 08608202 addeq r6, r2, #8
1313 090c 0C009208 ldmeqia r2, {r2-r3}
1314 .LVL165:
1315 0910 1A00000A beq .L152
1316 .LVL166:
1317 .L151:
455:lib/vsprintf.c **** else if (qualifier == 'l') {
1318 .loc 2 455 0
1319 0914 6C0053E3 cmp r3, #108
456:lib/vsprintf.c **** num = va_arg(args, unsigned long);
1320 .loc 2 456 0
1321 0918 04608202 addeq r6, r2, #4
1322 091c 00209205 ldreq r2, [r2, #0]
455:lib/vsprintf.c **** else if (qualifier == 'l') {
1323 .loc 2 455 0
1324 0920 1200000A beq .L156
1325 0924 046082E2 add r6, r2, #4
1326 0928 002092E5 ldr r2, [r2, #0]
457:lib/vsprintf.c **** if (flags & SIGN)
458:lib/vsprintf.c **** num = (signed long) num;
459:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') {
1327 .loc 2 459 0
1328 092c 5A0053E3 cmp r3, #90
1329 0930 7A005313 cmpne r3, #122
460:lib/vsprintf.c **** num = va_arg(args, size_t);
1330 .loc 2 460 0
1331 0934 0030A003 moveq r3, #0
459:lib/vsprintf.c **** } else if (qualifier == 'Z' || qualifier == 'z') {
1332 .loc 2 459 0
1333 0938 1000000A beq .L152
461:lib/vsprintf.c **** } else if (qualifier == 't') {
1334 .loc 2 461 0
1335 093c 740053E3 cmp r3, #116
1336 0940 0D00000A beq .L170
1337 .L155:
462:lib/vsprintf.c **** num = va_arg(args, ptrdiff_t);
463:lib/vsprintf.c **** } else if (qualifier == 'h') {
1338 .loc 2 463 0
1339 0944 680053E3 cmp r3, #104
1340 0948 0800001A bne .L156
464:lib/vsprintf.c **** num = (unsigned short) va_arg(args, int);
1341 .loc 2 464 0
1342 094c 0228A0E1 mov r2, r2, asl #16
1343 0950 22C8A0E1 mov ip, r2, lsr #16
465:lib/vsprintf.c **** if (flags & SIGN)
1344 .loc 2 465 0
1345 0954 02001AE3 tst sl, #2
464:lib/vsprintf.c **** num = (unsigned short) va_arg(args, int);
1346 .loc 2 464 0
1347 0958 0C20A0E1 mov r2, ip
1348 095c 0030A0E3 mov r3, #0
1349 .LVL167:
466:lib/vsprintf.c **** num = (signed short) num;
1350 .loc 2 466 0
1351 0960 0C28A011 movne r2, ip, asl #16
1352 .LVL168:
1353 0964 4228A011 movne r2, r2, asr #16
465:lib/vsprintf.c **** if (flags & SIGN)
1354 .loc 2 465 0
1355 0968 0300001A bne .L170
1356 096c 030000EA b .L152
1357 .LVL169:
1358 .L156:
467:lib/vsprintf.c **** } else {
468:lib/vsprintf.c **** num = va_arg(args, unsigned int);
469:lib/vsprintf.c **** if (flags & SIGN)
1359 .loc 2 469 0
1360 0970 02001AE3 tst sl, #2
468:lib/vsprintf.c **** num = va_arg(args, unsigned int);
1361 .loc 2 468 0
1362 0974 0030A0E3 mov r3, #0
1363 .LVL170:
1364 .loc 2 469 0
1365 0978 0000000A beq .L152
1366 .LVL171:
1367 .L170:
470:lib/vsprintf.c **** num = (signed int) num;
1368 .loc 2 470 0
1369 097c C23FA0E1 mov r3, r2, asr #31
1370 .LVL172:
1371 .L152:
471:lib/vsprintf.c **** }
472:lib/vsprintf.c **** str = number(str, end, num, base,
1372 .loc 2 472 0
1373 0980 04908DE5 str r9, [sp, #4]
1374 0984 0CA08DE5 str sl, [sp, #12]
1375 0988 00008DE5 str r0, [sp, #0]
1376 098c 08108DE5 str r1, [sp, #8]
1377 0990 0800A0E1 mov r0, r8
1378 .LVL173:
1379 0994 0410A0E1 mov r1, r4
1380 .LVL174:
1381 .L176:
1382 0998 AFFDFFEB bl number
1383 .LVL175:
1384 099c 0080A0E1 mov r8, r0
1385 .LVL176:
1386 .L172:
1387 09a0 0620A0E1 mov r2, r6
1388 .L95:
283:lib/vsprintf.c **** for (; *fmt ; ++fmt) {
1389 .loc 2 283 0
1390 09a4 14309DE5 ldr r3, [sp, #20]
1391 09a8 013083E2 add r3, r3, #1
1392 09ac 14308DE5 str r3, [sp, #20]
1393 09b0 0260A0E1 mov r6, r2
1394 .LVL177:
1395 .L91:
283:lib/vsprintf.c **** for (; *fmt ; ++fmt) {
1396 .loc 2 283 0 is_stmt 0 discriminator 1
1397 09b4 14309DE5 ldr r3, [sp, #20]
1398 09b8 0030D3E5 ldrb r3, [r3, #0] @ zero_extendqisi2
1399 09bc 000053E3 cmp r3, #0
1400 09c0 D7FEFF1A bne .L157
473:lib/vsprintf.c **** field_width, precision, flags);
474:lib/vsprintf.c **** }
475:lib/vsprintf.c **** if (str <= end)
1401 .loc 2 475 0 is_stmt 1
1402 09c4 040058E1 cmp r8, r4
476:lib/vsprintf.c **** *str = '\0';
1403 .loc 2 476 0
1404 09c8 0030C895 strlsb r3, [r8, #0]
475:lib/vsprintf.c **** if (str <= end)
1405 .loc 2 475 0
1406 09cc 0100009A bls .L159
477:lib/vsprintf.c **** else if (size > 0)
1407 .loc 2 477 0
1408 09d0 000057E3 cmp r7, #0
478:lib/vsprintf.c **** /* don't write out a null byte if the buf size is zero */
479:lib/vsprintf.c **** *end = '\0';
1409 .loc 2 479 0
1410 09d4 0030C415 strneb r3, [r4, #0]
1411 .L159:
480:lib/vsprintf.c **** /* the trailing null byte doesn't count towards the total
481:lib/vsprintf.c **** * ++str;
482:lib/vsprintf.c **** */
483:lib/vsprintf.c **** return str-buf;
1412 .loc 2 483 0
1413 09d8 080065E0 rsb r0, r5, r8
1414 .LVL178:
1415 .L89:
484:lib/vsprintf.c **** }
1416 .loc 2 484 0
1417 09dc 1CD08DE2 add sp, sp, #28
1418 09e0 F04FBDE8 ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
1419 09e4 1EFF2FE1 bx lr
1420 .L182:
1421 .align 2
1422 .L181:
1423 09e8 00000000 .word _ctype
1424 .cfi_endproc
1425 .LFE8:
1427 .align 2
1428 .global vscnprintf
1430 vscnprintf:
1431 .LFB9:
485:lib/vsprintf.c ****
486:lib/vsprintf.c ****
487:lib/vsprintf.c **** /**
488:lib/vsprintf.c **** * vscnprintf - Format a string and place it in a buffer
489:lib/vsprintf.c **** * @buf: The buffer to place the result into
490:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space
491:lib/vsprintf.c **** * @fmt: The format string to use
492:lib/vsprintf.c **** * @args: Arguments for the format string
493:lib/vsprintf.c **** *
494:lib/vsprintf.c **** * The return value is the number of characters which have been written into
495:lib/vsprintf.c **** * the @buf not including the trailing '\0'. If @size is <= 0 the function
496:lib/vsprintf.c **** * returns 0.
497:lib/vsprintf.c **** *
498:lib/vsprintf.c **** * Call this function if you are already dealing with a va_list.
499:lib/vsprintf.c **** * You probably want scnprintf instead.
500:lib/vsprintf.c **** */
501:lib/vsprintf.c **** int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
502:lib/vsprintf.c **** {
1432 .loc 2 502 0
1433 .cfi_startproc
1434 @ Function supports interworking.
1435 @ args = 0, pretend = 0, frame = 0
1436 @ frame_needed = 0, uses_anonymous_args = 0
1437 .LVL179:
1438 09ec 10402DE9 stmfd sp!, {r4, lr}
1439 .LCFI8:
1440 .cfi_def_cfa_offset 8
1441 .loc 2 502 0
1442 09f0 0140A0E1 mov r4, r1
1443 .cfi_offset 14, -4
1444 .cfi_offset 4, -8
503:lib/vsprintf.c **** unsigned int i;
504:lib/vsprintf.c ****
505:lib/vsprintf.c **** i=vsnprintf(buf,size,fmt,args);
1445 .loc 2 505 0
1446 09f4 FEFFFFEB bl vsnprintf
1447 .LVL180:
506:lib/vsprintf.c **** return (i >= size) ? (size - 1) : i;
1448 .loc 2 506 0
1449 09f8 040050E1 cmp r0, r4
1450 09fc 01004422 subcs r0, r4, #1
1451 .LVL181:
507:lib/vsprintf.c **** }
1452 .loc 2 507 0
1453 0a00 1040BDE8 ldmfd sp!, {r4, lr}
1454 0a04 1EFF2FE1 bx lr
1455 .cfi_endproc
1456 .LFE9:
1458 .align 2
1459 .global snprintf
1461 snprintf:
1462 .LFB10:
508:lib/vsprintf.c ****
509:lib/vsprintf.c ****
510:lib/vsprintf.c **** /**
511:lib/vsprintf.c **** * snprintf - Format a string and place it in a buffer
512:lib/vsprintf.c **** * @buf: The buffer to place the result into
513:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space
514:lib/vsprintf.c **** * @fmt: The format string to use
515:lib/vsprintf.c **** * @...: Arguments for the format string
516:lib/vsprintf.c **** *
517:lib/vsprintf.c **** * The return value is the number of characters which would be
518:lib/vsprintf.c **** * generated for the given input, excluding the trailing null,
519:lib/vsprintf.c **** * as per ISO C99. If the return is greater than or equal to
520:lib/vsprintf.c **** * @size, the resulting string is truncated.
521:lib/vsprintf.c **** */
522:lib/vsprintf.c **** int snprintf(char * buf, size_t size, const char *fmt, ...)
523:lib/vsprintf.c **** {
1463 .loc 2 523 0
1464 .cfi_startproc
1465 @ Function supports interworking.
1466 @ args = 4, pretend = 8, frame = 8
1467 @ frame_needed = 0, uses_anonymous_args = 1
1468 .LVL182:
1469 0a08 0C002DE9 stmfd sp!, {r2, r3}
1470 .LCFI9:
1471 .cfi_def_cfa_offset 8
1472 0a0c 07402DE9 stmfd sp!, {r0, r1, r2, lr}
1473 .LCFI10:
1474 .cfi_def_cfa_offset 24
524:lib/vsprintf.c **** va_list args;
525:lib/vsprintf.c **** int i;
526:lib/vsprintf.c ****
527:lib/vsprintf.c **** va_start(args, fmt);
528:lib/vsprintf.c **** i=vsnprintf(buf,size,fmt,args);
1475 .loc 2 528 0
1476 0a10 10209DE5 ldr r2, [sp, #16]
1477 .cfi_offset 14, -12
1478 .cfi_offset 1, -20
1479 .cfi_offset 0, -24
1480 .cfi_offset 3, -4
1481 .cfi_offset 2, -16
527:lib/vsprintf.c **** va_start(args, fmt);
1482 .loc 2 527 0
1483 0a14 14308DE2 add r3, sp, #20
1484 0a18 04308DE5 str r3, [sp, #4]
1485 .loc 2 528 0
1486 0a1c FEFFFFEB bl vsnprintf
1487 .LVL183:
529:lib/vsprintf.c **** va_end(args);
530:lib/vsprintf.c **** return i;
531:lib/vsprintf.c **** }
1488 .loc 2 531 0
1489 0a20 0E40BDE8 ldmfd sp!, {r1, r2, r3, lr}
1490 0a24 08D08DE2 add sp, sp, #8
1491 0a28 1EFF2FE1 bx lr
1492 .cfi_endproc
1493 .LFE10:
1495 .align 2
1496 .global scnprintf
1498 scnprintf:
1499 .LFB11:
532:lib/vsprintf.c ****
533:lib/vsprintf.c ****
534:lib/vsprintf.c **** /**
535:lib/vsprintf.c **** * scnprintf - Format a string and place it in a buffer
536:lib/vsprintf.c **** * @buf: The buffer to place the result into
537:lib/vsprintf.c **** * @size: The size of the buffer, including the trailing null space
538:lib/vsprintf.c **** * @fmt: The format string to use
539:lib/vsprintf.c **** * @...: Arguments for the format string
540:lib/vsprintf.c **** *
541:lib/vsprintf.c **** * The return value is the number of characters written into @buf not including
542:lib/vsprintf.c **** * the trailing '\0'. If @size is <= 0 the function returns 0. If the return is
543:lib/vsprintf.c **** * greater than or equal to @size, the resulting string is truncated.
544:lib/vsprintf.c **** */
545:lib/vsprintf.c ****
546:lib/vsprintf.c **** int scnprintf(char * buf, size_t size, const char *fmt, ...)
547:lib/vsprintf.c **** {
1500 .loc 2 547 0
1501 .cfi_startproc
1502 @ Function supports interworking.
1503 @ args = 4, pretend = 8, frame = 8
1504 @ frame_needed = 0, uses_anonymous_args = 1
1505 .LVL184:
1506 0a2c 0C002DE9 stmfd sp!, {r2, r3}
1507 .LCFI11:
1508 .cfi_def_cfa_offset 8
1509 0a30 13402DE9 stmfd sp!, {r0, r1, r4, lr}
1510 .LCFI12:
1511 .cfi_def_cfa_offset 24
548:lib/vsprintf.c **** va_list args;
549:lib/vsprintf.c **** unsigned int i;
550:lib/vsprintf.c ****
551:lib/vsprintf.c **** va_start(args, fmt);
552:lib/vsprintf.c **** i = vsnprintf(buf, size, fmt, args);
1512 .loc 2 552 0
1513 0a34 10209DE5 ldr r2, [sp, #16]
1514 .cfi_offset 14, -12
1515 .cfi_offset 4, -16
1516 .cfi_offset 1, -20
1517 .cfi_offset 0, -24
1518 .cfi_offset 3, -4
1519 .cfi_offset 2, -8
551:lib/vsprintf.c **** va_start(args, fmt);
1520 .loc 2 551 0
1521 0a38 14308DE2 add r3, sp, #20
547:lib/vsprintf.c **** {
1522 .loc 2 547 0
1523 0a3c 0140A0E1 mov r4, r1
551:lib/vsprintf.c **** va_start(args, fmt);
1524 .loc 2 551 0
1525 0a40 04308DE5 str r3, [sp, #4]
1526 .loc 2 552 0
1527 0a44 FEFFFFEB bl vsnprintf
1528 .LVL185:
553:lib/vsprintf.c **** va_end(args);
554:lib/vsprintf.c **** return (i >= size) ? (size - 1) : i;
1529 .loc 2 554 0
1530 0a48 040050E1 cmp r0, r4
1531 0a4c 01004422 subcs r0, r4, #1
1532 .LVL186:
555:lib/vsprintf.c **** }
1533 .loc 2 555 0
1534 0a50 1C40BDE8 ldmfd sp!, {r2, r3, r4, lr}
1535 0a54 08D08DE2 add sp, sp, #8
1536 0a58 1EFF2FE1 bx lr
1537 .cfi_endproc
1538 .LFE11:
1540 .align 2
1541 .global vsprintf
1543 vsprintf:
1544 .LFB12:
556:lib/vsprintf.c ****
557:lib/vsprintf.c **** /**
558:lib/vsprintf.c **** * vsprintf - Format a string and place it in a buffer
559:lib/vsprintf.c **** * @buf: The buffer to place the result into
560:lib/vsprintf.c **** * @fmt: The format string to use
561:lib/vsprintf.c **** * @args: Arguments for the format string
562:lib/vsprintf.c **** *
563:lib/vsprintf.c **** * The function returns the number of characters written
564:lib/vsprintf.c **** * into @buf. Use vsnprintf or vscnprintf in order to avoid
565:lib/vsprintf.c **** * buffer overflows.
566:lib/vsprintf.c **** *
567:lib/vsprintf.c **** * Call this function if you are already dealing with a va_list.
568:lib/vsprintf.c **** * You probably want sprintf instead.
569:lib/vsprintf.c **** */
570:lib/vsprintf.c **** int vsprintf(char *buf, const char *fmt, va_list args)
571:lib/vsprintf.c **** {
1545 .loc 2 571 0
1546 .cfi_startproc
1547 @ Function supports interworking.
1548 @ args = 0, pretend = 0, frame = 0
1549 @ frame_needed = 0, uses_anonymous_args = 0
1550 @ link register save eliminated.
1551 .LVL187:
1552 .loc 2 571 0
1553 0a5c 01C0A0E1 mov ip, r1
1554 0a60 0230A0E1 mov r3, r2
572:lib/vsprintf.c **** return vsnprintf(buf, INT_MAX, fmt, args);
1555 .loc 2 572 0
1556 0a64 0211E0E3 mvn r1, #-2147483648
1557 .LVL188:
1558 0a68 0C20A0E1 mov r2, ip
1559 .LVL189:
573:lib/vsprintf.c **** }
1560 .loc 2 573 0
572:lib/vsprintf.c **** return vsnprintf(buf, INT_MAX, fmt, args);
1561 .loc 2 572 0
1562 0a6c FEFFFFEA b vsnprintf
1563 .cfi_endproc
1564 .LFE12:
1566 .align 2
1567 .global sprintf
1569 sprintf:
1570 .LFB13:
574:lib/vsprintf.c ****
575:lib/vsprintf.c ****
576:lib/vsprintf.c **** /**
577:lib/vsprintf.c **** * sprintf - Format a string and place it in a buffer
578:lib/vsprintf.c **** * @buf: The buffer to place the result into
579:lib/vsprintf.c **** * @fmt: The format string to use
580:lib/vsprintf.c **** * @...: Arguments for the format string
581:lib/vsprintf.c **** *
582:lib/vsprintf.c **** * The function returns the number of characters written
583:lib/vsprintf.c **** * into @buf. Use snprintf or scnprintf in order to avoid
584:lib/vsprintf.c **** * buffer overflows.
585:lib/vsprintf.c **** */
586:lib/vsprintf.c **** int sprintf(char * buf, const char *fmt, ...)
587:lib/vsprintf.c **** {
1571 .loc 2 587 0
1572 .cfi_startproc
1573 @ Function supports interworking.
1574 @ args = 4, pretend = 12, frame = 8
1575 @ frame_needed = 0, uses_anonymous_args = 1
1576 .LVL190:
1577 0a70 0E002DE9 stmfd sp!, {r1, r2, r3}
1578 .LCFI13:
1579 .cfi_def_cfa_offset 12
1580 0a74 03402DE9 stmfd sp!, {r0, r1, lr}
1581 .LCFI14:
1582 .cfi_def_cfa_offset 24
588:lib/vsprintf.c **** va_list args;
589:lib/vsprintf.c **** int i;
590:lib/vsprintf.c ****
591:lib/vsprintf.c **** va_start(args, fmt);
592:lib/vsprintf.c **** i=vsnprintf(buf, INT_MAX, fmt, args);
1583 .loc 2 592 0
1584 0a78 0C209DE5 ldr r2, [sp, #12]
1585 .cfi_offset 14, -16
1586 .cfi_offset 0, -24
1587 .cfi_offset 3, -4
1588 .cfi_offset 2, -8
1589 .cfi_offset 1, -20
591:lib/vsprintf.c **** va_start(args, fmt);
1590 .loc 2 591 0
1591 0a7c 10308DE2 add r3, sp, #16
1592 .loc 2 592 0
1593 0a80 0211E0E3 mvn r1, #-2147483648
591:lib/vsprintf.c **** va_start(args, fmt);
1594 .loc 2 591 0
1595 0a84 04308DE5 str r3, [sp, #4]
1596 .loc 2 592 0
1597 0a88 FEFFFFEB bl vsnprintf
1598 .LVL191:
593:lib/vsprintf.c **** va_end(args);
594:lib/vsprintf.c **** return i;
595:lib/vsprintf.c **** }
1599 .loc 2 595 0
1600 0a8c 0C40BDE8 ldmfd sp!, {r2, r3, lr}
1601 0a90 0CD08DE2 add sp, sp, #12
1602 0a94 1EFF2FE1 bx lr
1603 .cfi_endproc
1604 .LFE13:
1606 .align 2
1607 .global vsscanf
1609 vsscanf:
1610 .LFB14:
596:lib/vsprintf.c ****
597:lib/vsprintf.c ****
598:lib/vsprintf.c **** /**
599:lib/vsprintf.c **** * vsscanf - Unformat a buffer into a list of arguments
600:lib/vsprintf.c **** * @buf: input buffer
601:lib/vsprintf.c **** * @fmt: format of buffer
602:lib/vsprintf.c **** * @args: arguments
603:lib/vsprintf.c **** */
604:lib/vsprintf.c **** int vsscanf(const char * buf, const char * fmt, va_list args)
605:lib/vsprintf.c **** {
1611 .loc 2 605 0
1612 .cfi_startproc
1613 @ Function supports interworking.
1614 @ args = 0, pretend = 0, frame = 16
1615 @ frame_needed = 0, uses_anonymous_args = 0
1616 .LVL192:
1617 0a98 FF412DE9 stmfd sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}
1618 .LCFI15:
1619 .cfi_def_cfa_offset 40
1620 .LVL193:
1621 .loc 2 605 0
1622 0a9c 0050A0E1 mov r5, r0
1623 .cfi_offset 14, -4
1624 .cfi_offset 8, -8
1625 .cfi_offset 7, -12
1626 .cfi_offset 6, -16
1627 .cfi_offset 5, -20
1628 .cfi_offset 4, -24
1629 .cfi_offset 3, -28
1630 .cfi_offset 2, -32
1631 .cfi_offset 1, -36
1632 .cfi_offset 0, -40
1633 .LVL194:
1634 0aa0 04108DE5 str r1, [sp, #4]
1635 .LVL195:
1636 0aa4 0270A0E1 mov r7, r2
1637 .LVL196:
606:lib/vsprintf.c **** const char *str = buf;
1638 .loc 2 606 0
1639 0aa8 0060A0E1 mov r6, r0
607:lib/vsprintf.c **** char *next;
608:lib/vsprintf.c **** char digit;
609:lib/vsprintf.c **** int num = 0;
1640 .loc 2 609 0
1641 0aac 0040A0E3 mov r4, #0
610:lib/vsprintf.c **** int qualifier;
611:lib/vsprintf.c **** int base;
612:lib/vsprintf.c **** int field_width;
613:lib/vsprintf.c **** int is_sign = 0;
614:lib/vsprintf.c ****
615:lib/vsprintf.c **** while(*fmt && *str) {
1642 .loc 2 615 0
1643 0ab0 300100EA b .L255
1644 .LVL197:
1645 .L248:
616:lib/vsprintf.c **** /* skip any white space in format */
617:lib/vsprintf.c **** /* white space in format matchs any amount of
618:lib/vsprintf.c **** * white space, including none, in the input.
619:lib/vsprintf.c **** */
620:lib/vsprintf.c **** if (isspace(*fmt)) {
1646 .loc 2 620 0
1647 0ab4 E8249FE5 ldr r2, .L278
1648 0ab8 0330D2E7 ldrb r3, [r2, r3] @ zero_extendqisi2
1649 0abc 200013E3 tst r3, #32
1650 0ac0 0200001A bne .L192
1651 0ac4 0E0000EA b .L193
1652 .LVL198:
1653 .L194:
621:lib/vsprintf.c **** while (isspace(*fmt))
622:lib/vsprintf.c **** ++fmt;
1654 .loc 2 622 0
1655 0ac8 013083E2 add r3, r3, #1
1656 0acc 04308DE5 str r3, [sp, #4]
1657 .L192:
621:lib/vsprintf.c **** while (isspace(*fmt))
1658 .loc 2 621 0 discriminator 1
1659 0ad0 04309DE5 ldr r3, [sp, #4]
1660 0ad4 C8149FE5 ldr r1, .L278
1661 0ad8 0020D3E5 ldrb r2, [r3, #0] @ zero_extendqisi2
1662 0adc 0220D1E7 ldrb r2, [r1, r2] @ zero_extendqisi2
1663 0ae0 200012E3 tst r2, #32
1664 0ae4 F7FFFF1A bne .L194
621:lib/vsprintf.c **** while (isspace(*fmt))
1665 .loc 2 621 0 is_stmt 0
1666 0ae8 0630A0E1 mov r3, r6
1667 .L195:
621:lib/vsprintf.c **** while (isspace(*fmt))
1668 .loc 2 621 0 discriminator 1
1669 0aec 0360A0E1 mov r6, r3
1670 .LVL199:
623:lib/vsprintf.c **** while (isspace(*str))
1671 .loc 2 623 0 is_stmt 1 discriminator 1
1672 0af0 AC149FE5 ldr r1, .L278
1673 0af4 0120D3E4 ldrb r2, [r3], #1 @ zero_extendqisi2
1674 .LVL200:
1675 0af8 0220D1E7 ldrb r2, [r1, r2] @ zero_extendqisi2
1676 0afc 200012E3 tst r2, #32
1677 0b00 F9FFFF1A bne .L195
1678 .L193:
624:lib/vsprintf.c **** ++str;
625:lib/vsprintf.c **** }
626:lib/vsprintf.c ****
627:lib/vsprintf.c **** /* anything that is not a conversion must match exactly */
628:lib/vsprintf.c **** if (*fmt != '%' && *fmt) {
1679 .loc 2 628 0
1680 0b04 04309DE5 ldr r3, [sp, #4]
1681 0b08 0020D3E5 ldrb r2, [r3, #0] @ zero_extendqisi2
1682 0b0c 000052E3 cmp r2, #0
1683 0b10 25005213 cmpne r2, #37
1684 0b14 0400000A beq .L196
629:lib/vsprintf.c **** if (*fmt++ != *str++)
1685 .loc 2 629 0
1686 0b18 0010D6E5 ldrb r1, [r6, #0] @ zero_extendqisi2
1687 0b1c 013083E2 add r3, r3, #1
1688 0b20 04308DE5 str r3, [sp, #4]
1689 .LVL201:
1690 0b24 010052E1 cmp r2, r1
1691 0b28 A10000EA b .L266
1692 .LVL202:
1693 .L196:
630:lib/vsprintf.c **** break;
631:lib/vsprintf.c **** continue;
632:lib/vsprintf.c **** }
633:lib/vsprintf.c ****
634:lib/vsprintf.c **** if (!*fmt)
1694 .loc 2 634 0
1695 0b2c 000052E3 cmp r2, #0
1696 0b30 1701000A beq .L197
635:lib/vsprintf.c **** break;
636:lib/vsprintf.c **** ++fmt;
1697 .loc 2 636 0
1698 0b34 012083E2 add r2, r3, #1
1699 0b38 04208DE5 str r2, [sp, #4]
637:lib/vsprintf.c ****
638:lib/vsprintf.c **** /* skip this conversion.
639:lib/vsprintf.c **** * advance both strings to next white space
640:lib/vsprintf.c **** */
641:lib/vsprintf.c **** if (*fmt == '*') {
1700 .loc 2 641 0
1701 0b3c 0130D3E5 ldrb r3, [r3, #1] @ zero_extendqisi2
1702 0b40 2A0053E3 cmp r3, #42
1703 0b44 1600001A bne .L256
1704 0b48 010000EA b .L199
1705 .L203:
642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt)
643:lib/vsprintf.c **** fmt++;
1706 .loc 2 643 0
1707 0b4c 012082E2 add r2, r2, #1
1708 0b50 04208DE5 str r2, [sp, #4]
1709 .L199:
642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt)
1710 .loc 2 642 0 discriminator 1
1711 0b54 04209DE5 ldr r2, [sp, #4]
1712 0b58 44149FE5 ldr r1, .L278
1713 0b5c 0030D2E5 ldrb r3, [r2, #0] @ zero_extendqisi2
1714 0b60 0310D1E7 ldrb r1, [r1, r3] @ zero_extendqisi2
1715 0b64 200011E3 tst r1, #32
1716 0b68 0100000A beq .L201
1717 .L204:
1718 0b6c 0630A0E1 mov r3, r6
1719 0b70 020000EA b .L202
1720 .L201:
642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt)
1721 .loc 2 642 0 is_stmt 0 discriminator 2
1722 0b74 000053E3 cmp r3, #0
1723 0b78 F3FFFF1A bne .L203
1724 0b7c FAFFFFEA b .L204
1725 .L202:
642:lib/vsprintf.c **** while (!isspace(*fmt) && *fmt)
1726 .loc 2 642 0 discriminator 1
1727 0b80 0360A0E1 mov r6, r3
1728 .LVL203:
644:lib/vsprintf.c **** while (!isspace(*str) && *str)
1729 .loc 2 644 0 is_stmt 1 discriminator 1
1730 0b84 18149FE5 ldr r1, .L278
1731 0b88 0120D3E4 ldrb r2, [r3], #1 @ zero_extendqisi2
1732 .LVL204:
1733 0b8c 0210D1E7 ldrb r1, [r1, r2] @ zero_extendqisi2
1734 0b90 200011E3 tst r1, #32
1735 0b94 F700001A bne .L255
1736 .loc 2 644 0 is_stmt 0 discriminator 2
1737 0b98 000052E3 cmp r2, #0
1738 0b9c F7FFFF1A bne .L202
1739 0ba0 F40000EA b .L255
1740 .L256:
1741 .LVL205:
645:lib/vsprintf.c **** str++;
646:lib/vsprintf.c **** continue;
647:lib/vsprintf.c **** }
648:lib/vsprintf.c ****
649:lib/vsprintf.c **** /* get field width */
650:lib/vsprintf.c **** field_width = -1;
651:lib/vsprintf.c **** if (isdigit(*fmt))
1742 .loc 2 651 0 is_stmt 1
1743 0ba4 F8239FE5 ldr r2, .L278
1744 0ba8 0330D2E7 ldrb r3, [r2, r3] @ zero_extendqisi2
1745 0bac 040013E3 tst r3, #4
650:lib/vsprintf.c **** field_width = -1;
1746 .loc 2 650 0
1747 0bb0 0000E003 mvneq r0, #0
1748 .loc 2 651 0
652:lib/vsprintf.c **** field_width = skip_atoi(&fmt);
1749 .loc 2 652 0
1750 0bb4 04008D12 addne r0, sp, #4
1751 0bb8 17FDFF1B blne skip_atoi
1752 .LVL206:
1753 .L205:
653:lib/vsprintf.c ****
654:lib/vsprintf.c **** /* get conversion qualifier */
655:lib/vsprintf.c **** qualifier = -1;
656:lib/vsprintf.c **** if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
1754 .loc 2 656 0
1755 0bbc 04109DE5 ldr r1, [sp, #4]
1756 0bc0 0030D1E5 ldrb r3, [r1, #0] @ zero_extendqisi2
1757 0bc4 680053E3 cmp r3, #104
1758 0bc8 6C005313 cmpne r3, #108
1759 0bcc 0600000A beq .L206
1760 .loc 2 656 0 is_stmt 0 discriminator 1
1761 0bd0 5A0053E3 cmp r3, #90
1762 0bd4 0400000A beq .L206
1763 0bd8 7A0053E3 cmp r3, #122
1764 0bdc 0200000A beq .L206
1765 0be0 4C0053E3 cmp r3, #76
655:lib/vsprintf.c **** qualifier = -1;
1766 .loc 2 655 0 is_stmt 1 discriminator 1
1767 0be4 0030E013 mvnne r3, #0
1768 .loc 2 656 0 discriminator 1
1769 0be8 0D00001A bne .L207
1770 .L206:
1771 .LVL207:
657:lib/vsprintf.c **** *fmt == 'Z' || *fmt == 'z') {
658:lib/vsprintf.c **** qualifier = *fmt++;
1772 .loc 2 658 0
1773 0bec 012081E2 add r2, r1, #1
1774 0bf0 04208DE5 str r2, [sp, #4]
659:lib/vsprintf.c **** if (qualifier == *fmt) {
1775 .loc 2 659 0
1776 0bf4 0110D1E5 ldrb r1, [r1, #1] @ zero_extendqisi2
1777 0bf8 010053E1 cmp r3, r1
1778 0bfc 0800001A bne .L207
660:lib/vsprintf.c **** if (qualifier == 'h') {
1779 .loc 2 660 0
1780 0c00 680053E3 cmp r3, #104
661:lib/vsprintf.c **** qualifier = 'H';
662:lib/vsprintf.c **** fmt++;
1781 .loc 2 662 0
1782 0c04 01208202 addeq r2, r2, #1
1783 0c08 04208D05 streq r2, [sp, #4]
661:lib/vsprintf.c **** qualifier = 'H';
1784 .loc 2 661 0
1785 0c0c 4830A003 moveq r3, #72
1786 .LVL208:
660:lib/vsprintf.c **** if (qualifier == 'h') {
1787 .loc 2 660 0
1788 0c10 0300000A beq .L207
663:lib/vsprintf.c **** } else if (qualifier == 'l') {
1789 .loc 2 663 0
1790 0c14 6C0053E3 cmp r3, #108
1791 .LVL209:
664:lib/vsprintf.c **** qualifier = 'L';
665:lib/vsprintf.c **** fmt++;
1792 .loc 2 665 0
1793 0c18 01208202 addeq r2, r2, #1
1794 0c1c 04208D05 streq r2, [sp, #4]
664:lib/vsprintf.c **** qualifier = 'L';
1795 .loc 2 664 0
1796 0c20 4C30A003 moveq r3, #76
1797 .LVL210:
1798 .L207:
666:lib/vsprintf.c **** }
667:lib/vsprintf.c **** }
668:lib/vsprintf.c **** }
669:lib/vsprintf.c **** base = 10;
670:lib/vsprintf.c **** is_sign = 0;
671:lib/vsprintf.c ****
672:lib/vsprintf.c **** if (!*fmt || !*str)
1799 .loc 2 672 0
1800 0c24 04109DE5 ldr r1, [sp, #4]
1801 0c28 0020D1E5 ldrb r2, [r1, #0] @ zero_extendqisi2
1802 0c2c 000052E3 cmp r2, #0
1803 0c30 D700000A beq .L197
1804 .loc 2 672 0 is_stmt 0 discriminator 1
1805 0c34 00C0D6E5 ldrb ip, [r6, #0] @ zero_extendqisi2
1806 0c38 00005CE3 cmp ip, #0
1807 0c3c D400000A beq .L197
673:lib/vsprintf.c **** break;
674:lib/vsprintf.c ****
675:lib/vsprintf.c **** switch(*fmt++) {
1808 .loc 2 675 0 is_stmt 1
1809 0c40 011081E2 add r1, r1, #1
1810 0c44 6E0052E3 cmp r2, #110
1811 0c48 04108DE5 str r1, [sp, #4]
1812 0c4c 4800000A beq .L214
1813 0c50 0B00008A bhi .L218
1814 0c54 630052E3 cmp r2, #99
1815 0c58 1900000A beq .L211
1816 0c5c 0300008A bhi .L219
1817 0c60 250052E3 cmp r2, #37
1818 0c64 5000000A beq .L209
1819 0c68 580052E3 cmp r2, #88
1820 0c6c 0D0000EA b .L259
1821 .L219:
1822 0c70 640052E3 cmp r2, #100
1823 0c74 0F00000A beq .L251
1824 0c78 690052E3 cmp r2, #105
1825 0c7c C400001A bne .L197
1826 0c80 460000EA b .L273
1827 .L218:
1828 0c84 730052E3 cmp r2, #115
1829 0c88 1D00000A beq .L216
1830 0c8c 0200008A bhi .L220
1831 0c90 6F0052E3 cmp r2, #111
1832 0c94 BE00001A bne .L197
1833 0c98 3A0000EA b .L274
1834 .L220:
1835 0c9c 750052E3 cmp r2, #117
1836 0ca0 0200000A beq .L217
1837 0ca4 780052E3 cmp r2, #120
1838 .L259:
1839 0ca8 B900001A bne .L197
1840 0cac 380000EA b .L275
1841 .L217:
670:lib/vsprintf.c **** is_sign = 0;
1842 .loc 2 670 0
1843 0cb0 0010A0E3 mov r1, #0
1844 0cb4 000000EA b .L260
1845 .L251:
676:lib/vsprintf.c **** case 'c':
677:lib/vsprintf.c **** {
678:lib/vsprintf.c **** char *s = (char *) va_arg(args,char*);
679:lib/vsprintf.c **** if (field_width == -1)
680:lib/vsprintf.c **** field_width = 1;
681:lib/vsprintf.c **** do {
682:lib/vsprintf.c **** *s++ = *str++;
683:lib/vsprintf.c **** } while (--field_width > 0 && *str);
684:lib/vsprintf.c **** num++;
685:lib/vsprintf.c **** }
686:lib/vsprintf.c **** continue;
687:lib/vsprintf.c **** case 's':
688:lib/vsprintf.c **** {
689:lib/vsprintf.c **** char *s = (char *) va_arg(args, char *);
690:lib/vsprintf.c **** if(field_width == -1)
691:lib/vsprintf.c **** field_width = INT_MAX;
692:lib/vsprintf.c **** /* first, skip leading white space in buffer */
693:lib/vsprintf.c **** while (isspace(*str))
694:lib/vsprintf.c **** str++;
695:lib/vsprintf.c ****
696:lib/vsprintf.c **** /* now copy until next white space */
697:lib/vsprintf.c **** while (*str && !isspace(*str) && field_width--) {
698:lib/vsprintf.c **** *s++ = *str++;
699:lib/vsprintf.c **** }
700:lib/vsprintf.c **** *s = '\0';
701:lib/vsprintf.c **** num++;
702:lib/vsprintf.c **** }
703:lib/vsprintf.c **** continue;
704:lib/vsprintf.c **** case 'n':
705:lib/vsprintf.c **** /* return number of characters read so far */
706:lib/vsprintf.c **** {
707:lib/vsprintf.c **** int *i = (int *)va_arg(args,int*);
708:lib/vsprintf.c **** *i = str - buf;
709:lib/vsprintf.c **** }
710:lib/vsprintf.c **** continue;
711:lib/vsprintf.c **** case 'o':
712:lib/vsprintf.c **** base = 8;
713:lib/vsprintf.c **** break;
714:lib/vsprintf.c **** case 'x':
715:lib/vsprintf.c **** case 'X':
716:lib/vsprintf.c **** base = 16;
717:lib/vsprintf.c **** break;
718:lib/vsprintf.c **** case 'i':
719:lib/vsprintf.c **** base = 0;
720:lib/vsprintf.c **** case 'd':
721:lib/vsprintf.c **** is_sign = 1;
1846 .loc 2 721 0
1847 0cb8 0110A0E3 mov r1, #1
1848 .L260:
669:lib/vsprintf.c **** base = 10;
1849 .loc 2 669 0
1850 0cbc 0A20A0E3 mov r2, #10
1851 0cc0 3E0000EA b .L221
1852 .L211:
1853 .LBB6:
680:lib/vsprintf.c **** field_width = 1;
1854 .loc 2 680 0
1855 0cc4 010070E3 cmn r0, #1
678:lib/vsprintf.c **** char *s = (char *) va_arg(args,char*);
1856 .loc 2 678 0
1857 0cc8 001097E5 ldr r1, [r7, #0]
1858 0ccc 04C087E2 add ip, r7, #4
1859 .LVL211:
680:lib/vsprintf.c **** field_width = 1;
1860 .loc 2 680 0
1861 0cd0 0100A003 moveq r0, #1
1862 .LVL212:
679:lib/vsprintf.c **** if (field_width == -1)
1863 .loc 2 679 0
1864 0cd4 0620A0E1 mov r2, r6
680:lib/vsprintf.c **** field_width = 1;
1865 .loc 2 680 0
1866 0cd8 0630A0E1 mov r3, r6
1867 .LVL213:
1868 .L224:
682:lib/vsprintf.c **** *s++ = *str++;
1869 .loc 2 682 0 discriminator 1
1870 0cdc 0160D3E4 ldrb r6, [r3], #1 @ zero_extendqisi2
683:lib/vsprintf.c **** } while (--field_width > 0 && *str);
1871 .loc 2 683 0 discriminator 1
1872 0ce0 010040E2 sub r0, r0, #1
1873 .LVL214:
1874 0ce4 000050E3 cmp r0, #0
682:lib/vsprintf.c **** *s++ = *str++;
1875 .loc 2 682 0 discriminator 1
1876 0ce8 0160C1E4 strb r6, [r1], #1
1877 .LVL215:
1878 0cec 0360A0E1 mov r6, r3
1879 .LVL216:
683:lib/vsprintf.c **** } while (--field_width > 0 && *str);
1880 .loc 2 683 0 discriminator 1
1881 0cf0 1C0000DA ble .L265
1882 0cf4 0170F2E5 ldrb r7, [r2, #1]! @ zero_extendqisi2
1883 0cf8 000057E3 cmp r7, #0
1884 0cfc F6FFFF1A bne .L224
1885 0d00 180000EA b .L265
1886 .LVL217:
1887 .L216:
1888 .LBE6:
1889 .LBB7:
691:lib/vsprintf.c **** field_width = INT_MAX;
1890 .loc 2 691 0
1891 0d04 010070E3 cmn r0, #1
689:lib/vsprintf.c **** char *s = (char *) va_arg(args, char *);
1892 .loc 2 689 0
1893 0d08 003097E5 ldr r3, [r7, #0]
1894 .LVL218:
1895 0d0c 04C087E2 add ip, r7, #4
1896 .LVL219:
691:lib/vsprintf.c **** field_width = INT_MAX;
1897 .loc 2 691 0
1898 0d10 0201E003 mvneq r0, #-2147483648
1899 .LVL220:
1900 .L226:
690:lib/vsprintf.c **** if(field_width == -1)
1901 .loc 2 690 0 discriminator 1
1902 0d14 0620A0E1 mov r2, r6
1903 .LVL221:
693:lib/vsprintf.c **** while (isspace(*str))
1904 .loc 2 693 0 discriminator 1
1905 0d18 84729FE5 ldr r7, .L278
1906 0d1c 0110D6E4 ldrb r1, [r6], #1 @ zero_extendqisi2
1907 .LVL222:
1908 0d20 0110D7E7 ldrb r1, [r7, r1] @ zero_extendqisi2
1909 0d24 200011E3 tst r1, #32
1910 0d28 F9FFFF1A bne .L226
1911 0d2c 010000EA b .L227
1912 .LVL223:
1913 .L229:
698:lib/vsprintf.c **** *s++ = *str++;
1914 .loc 2 698 0
1915 0d30 0110C3E4 strb r1, [r3], #1
1916 .LVL224:
697:lib/vsprintf.c **** while (*str && !isspace(*str) && field_width--) {
1917 .loc 2 697 0
1918 0d34 010040E2 sub r0, r0, #1
1919 .LVL225:
1920 .L227:
698:lib/vsprintf.c **** *s++ = *str++;
1921 .loc 2 698 0 discriminator 1
1922 0d38 0260A0E1 mov r6, r2
1923 .LVL226:
697:lib/vsprintf.c **** while (*str && !isspace(*str) && field_width--) {
1924 .loc 2 697 0 discriminator 1
1925 0d3c 0110D2E4 ldrb r1, [r2], #1 @ zero_extendqisi2
1926 .LVL227:
1927 0d40 000051E3 cmp r1, #0
1928 0d44 0500000A beq .L228
697:lib/vsprintf.c **** while (*str && !isspace(*str) && field_width--) {
1929 .loc 2 697 0 is_stmt 0 discriminator 2
1930 0d48 54729FE5 ldr r7, .L278
1931 0d4c 0170D7E7 ldrb r7, [r7, r1] @ zero_extendqisi2
1932 0d50 200017E3 tst r7, #32
1933 0d54 0100001A bne .L228
1934 .LVL228:
697:lib/vsprintf.c **** while (*str && !isspace(*str) && field_width--) {
1935 .loc 2 697 0 discriminator 1
1936 0d58 000050E3 cmp r0, #0
1937 0d5c F3FFFF1A bne .L229
1938 .LVL229:
1939 .L228:
700:lib/vsprintf.c **** *s = '\0';
1940 .loc 2 700 0 is_stmt 1
1941 0d60 0020A0E3 mov r2, #0
1942 0d64 0020C3E5 strb r2, [r3, #0]
1943 .LVL230:
1944 .L265:
701:lib/vsprintf.c **** num++;
1945 .loc 2 701 0
1946 0d68 014084E2 add r4, r4, #1
1947 .LVL231:
1948 .LBE7:
689:lib/vsprintf.c **** char *s = (char *) va_arg(args, char *);
1949 .loc 2 689 0
1950 0d6c 0C70A0E1 mov r7, ip
703:lib/vsprintf.c **** continue;
1951 .loc 2 703 0
1952 0d70 800000EA b .L255
1953 .LVL232:
1954 .L214:
1955 .LBB8:
708:lib/vsprintf.c **** *i = str - buf;
1956 .loc 2 708 0
1957 0d74 003097E5 ldr r3, [r7, #0]
1958 .LVL233:
1959 0d78 062065E0 rsb r2, r5, r6
1960 0d7c 002083E5 str r2, [r3, #0]
1961 .LBE8:
707:lib/vsprintf.c **** int *i = (int *)va_arg(args,int*);
1962 .loc 2 707 0
1963 0d80 047087E2 add r7, r7, #4
1964 .LVL234:
710:lib/vsprintf.c **** continue;
1965 .loc 2 710 0
1966 0d84 7B0000EA b .L255
1967 .LVL235:
1968 .L274:
670:lib/vsprintf.c **** is_sign = 0;
1969 .loc 2 670 0
1970 0d88 0010A0E3 mov r1, #0
712:lib/vsprintf.c **** base = 8;
1971 .loc 2 712 0
1972 0d8c 0820A0E3 mov r2, #8
713:lib/vsprintf.c **** break;
1973 .loc 2 713 0
1974 0d90 0A0000EA b .L221
1975 .LVL236:
1976 .L275:
670:lib/vsprintf.c **** is_sign = 0;
1977 .loc 2 670 0
1978 0d94 0010A0E3 mov r1, #0
716:lib/vsprintf.c **** base = 16;
1979 .loc 2 716 0
1980 0d98 1020A0E3 mov r2, #16
717:lib/vsprintf.c **** break;
1981 .loc 2 717 0
1982 0d9c 070000EA b .L221
1983 .LVL237:
1984 .L273:
1985 .loc 2 721 0
1986 0da0 0110A0E3 mov r1, #1
719:lib/vsprintf.c **** base = 0;
1987 .loc 2 719 0
1988 0da4 0020A0E3 mov r2, #0
1989 0da8 040000EA b .L221
1990 .LVL238:
1991 .L209:
722:lib/vsprintf.c **** case 'u':
723:lib/vsprintf.c **** break;
724:lib/vsprintf.c **** case '%':
725:lib/vsprintf.c **** /* looking for '%' in str */
726:lib/vsprintf.c **** if (*str++ != '%')
1992 .loc 2 726 0
1993 0dac 0030D6E5 ldrb r3, [r6, #0] @ zero_extendqisi2
1994 .LVL239:
1995 0db0 250053E3 cmp r3, #37
1996 .LVL240:
1997 .L266:
1998 0db4 7600001A bne .L197
1999 0db8 016086E2 add r6, r6, #1
2000 0dbc 6D0000EA b .L255
2001 .LVL241:
2002 .L221:
727:lib/vsprintf.c **** return num;
728:lib/vsprintf.c **** continue;
729:lib/vsprintf.c **** default:
730:lib/vsprintf.c **** /* invalid format; stop here */
731:lib/vsprintf.c **** return num;
732:lib/vsprintf.c **** }
733:lib/vsprintf.c ****
734:lib/vsprintf.c **** /* have some sort of integer conversion.
735:lib/vsprintf.c **** * first, skip white space in buffer.
736:lib/vsprintf.c **** */
737:lib/vsprintf.c **** while (isspace(*str))
2003 .loc 2 737 0 discriminator 1
2004 0dc0 00C0D6E5 ldrb ip, [r6, #0] @ zero_extendqisi2
2005 0dc4 D8819FE5 ldr r8, .L278
2006 0dc8 0C80D8E7 ldrb r8, [r8, ip] @ zero_extendqisi2
2007 0dcc 200018E3 tst r8, #32
726:lib/vsprintf.c **** if (*str++ != '%')
2008 .loc 2 726 0 discriminator 1
2009 0dd0 0600A0E1 mov r0, r6
2010 .LVL242:
2011 .loc 2 737 0 discriminator 1
2012 0dd4 016086E2 add r6, r6, #1
2013 .LVL243:
2014 0dd8 F8FFFF1A bne .L221
2015 .LVL244:
738:lib/vsprintf.c **** str++;
739:lib/vsprintf.c ****
740:lib/vsprintf.c **** digit = *str;
741:lib/vsprintf.c **** if (is_sign && digit == '-')
2016 .loc 2 741 0
2017 0ddc 2D005CE3 cmp ip, #45
2018 0de0 0060A013 movne r6, #0
2019 0de4 01600102 andeq r6, r1, #1
2020 0de8 000056E3 cmp r6, #0
742:lib/vsprintf.c **** digit = *(str + 1);
2021 .loc 2 742 0
2022 0dec 01C0D015 ldrneb ip, [r0, #1] @ zero_extendqisi2
2023 .LVL245:
743:lib/vsprintf.c ****
744:lib/vsprintf.c **** if (!digit
2024 .loc 2 744 0
2025 0df0 00005CE3 cmp ip, #0
2026 0df4 6600000A beq .L197
745:lib/vsprintf.c **** || (base == 16 && !isxdigit(digit))
2027 .loc 2 745 0
2028 0df8 100052E3 cmp r2, #16
2029 0dfc 0300001A bne .L231
2030 .loc 2 745 0 is_stmt 0 discriminator 1
2031 0e00 9C619FE5 ldr r6, .L278
2032 0e04 0CC0D6E7 ldrb ip, [r6, ip] @ zero_extendqisi2
2033 .LVL246:
2034 0e08 44001CE3 tst ip, #68
2035 0e0c 130000EA b .L262
2036 .LVL247:
2037 .L231:
746:lib/vsprintf.c **** || (base == 10 && !isdigit(digit))
2038 .loc 2 746 0 is_stmt 1
2039 0e10 0A0052E3 cmp r2, #10
2040 0e14 0E00000A beq .L261
2041 .L233:
747:lib/vsprintf.c **** || (base == 8 && (!isdigit(digit) || digit > '7'))
2042 .loc 2 747 0
2043 0e18 080052E3 cmp r2, #8
2044 0e1c 0A00001A bne .L234
2045 .loc 2 747 0 is_stmt 0 discriminator 1
2046 0e20 7C619FE5 ldr r6, .L278
2047 0e24 0C60D6E7 ldrb r6, [r6, ip] @ zero_extendqisi2
2048 0e28 040016E3 tst r6, #4
2049 0e2c 0060A013 movne r6, #0
2050 0e30 0160A003 moveq r6, #1
2051 0e34 37005CE3 cmp ip, #55
2052 0e38 06C0A091 movls ip, r6
2053 0e3c 01C08683 orrhi ip, r6, #1
2054 .LVL248:
2055 0e40 00005CE3 cmp ip, #0
2056 0e44 0600000A beq .L232
2057 0e48 510000EA b .L197
2058 .LVL249:
2059 .L234:
748:lib/vsprintf.c **** || (base == 0 && !isdigit(digit)))
2060 .loc 2 748 0 is_stmt 1
2061 0e4c 000052E3 cmp r2, #0
2062 0e50 0300001A bne .L232
2063 .L261:
2064 .loc 2 748 0 is_stmt 0 discriminator 1
2065 0e54 48619FE5 ldr r6, .L278
2066 0e58 0CC0D6E7 ldrb ip, [r6, ip] @ zero_extendqisi2
2067 .LVL250:
2068 0e5c 04001CE3 tst ip, #4
2069 .L262:
2070 0e60 4B00000A beq .L197
2071 .L232:
749:lib/vsprintf.c **** break;
750:lib/vsprintf.c ****
751:lib/vsprintf.c **** switch(qualifier) {
2072 .loc 2 751 0 is_stmt 1
2073 0e64 5A0053E3 cmp r3, #90
2074 0e68 3000000A beq .L238
2075 0e6c 040000CA bgt .L241
2076 0e70 480053E3 cmp r3, #72
2077 0e74 0900000A beq .L236
2078 0e78 4C0053E3 cmp r3, #76
2079 0e7c 2D00001A bne .L235
2080 0e80 1E0000EA b .L276
2081 .L241:
2082 0e84 6C0053E3 cmp r3, #108
2083 0e88 2A00000A beq .L235
2084 0e8c 7A0053E3 cmp r3, #122
2085 0e90 2600000A beq .L238
2086 0e94 680053E3 cmp r3, #104
2087 0e98 2600001A bne .L235
2088 0e9c 0B0000EA b .L277
2089 .L236:
752:lib/vsprintf.c **** case 'H': /* that's 'hh' in format */
753:lib/vsprintf.c **** if (is_sign) {
2090 .loc 2 753 0
2091 0ea0 000051E3 cmp r1, #0
2092 0ea4 046087E2 add r6, r7, #4
2093 0ea8 0300000A beq .L242
2094 .LBB9:
754:lib/vsprintf.c **** signed char *s = (signed char *) va_arg(args,signed char *);
755:lib/vsprintf.c **** *s = (signed char) simple_strtol(str,&next,base);
2095 .loc 2 755 0
2096 0eac 0C108DE2 add r1, sp, #12
2097 .LVL251:
754:lib/vsprintf.c **** signed char *s = (signed char *) va_arg(args,signed char *);
2098 .loc 2 754 0
2099 0eb0 007097E5 ldr r7, [r7, #0]
2100 .LVL252:
2101 .loc 2 755 0
2102 0eb4 FEFFFFEB bl simple_strtol
2103 .LVL253:
2104 0eb8 020000EA b .L267
2105 .LVL254:
2106 .L242:
2107 .LBE9:
2108 .LBB10:
756:lib/vsprintf.c **** } else {
757:lib/vsprintf.c **** unsigned char *s = (unsigned char *) va_arg(args, unsigned char *);
758:lib/vsprintf.c **** *s = (unsigned char) simple_strtoul(str, &next, base);
2109 .loc 2 758 0
2110 0ebc 0C108DE2 add r1, sp, #12
2111 .LVL255:
757:lib/vsprintf.c **** unsigned char *s = (unsigned char *) va_arg(args, unsigned char *);
2112 .loc 2 757 0
2113 0ec0 007097E5 ldr r7, [r7, #0]
2114 .LVL256:
2115 .loc 2 758 0
2116 0ec4 FEFFFFEB bl simple_strtoul
2117 .LVL257:
2118 .L267:
2119 0ec8 0000C7E5 strb r0, [r7, #0]
2120 0ecc 240000EA b .L263
2121 .LVL258:
2122 .L277:
2123 .LBE10:
759:lib/vsprintf.c **** }
760:lib/vsprintf.c **** break;
761:lib/vsprintf.c **** case 'h':
762:lib/vsprintf.c **** if (is_sign) {
2124 .loc 2 762 0
2125 0ed0 000051E3 cmp r1, #0
2126 0ed4 046087E2 add r6, r7, #4
2127 0ed8 0300000A beq .L244
2128 .LBB11:
763:lib/vsprintf.c **** short *s = (short *) va_arg(args,short *);
764:lib/vsprintf.c **** *s = (short) simple_strtol(str,&next,base);
2129 .loc 2 764 0
2130 0edc 0C108DE2 add r1, sp, #12
2131 .LVL259:
763:lib/vsprintf.c **** short *s = (short *) va_arg(args,short *);
2132 .loc 2 763 0
2133 0ee0 007097E5 ldr r7, [r7, #0]
2134 .LVL260:
2135 .loc 2 764 0
2136 0ee4 FEFFFFEB bl simple_strtol
2137 .LVL261:
2138 0ee8 020000EA b .L270
2139 .LVL262:
2140 .L244:
2141 .LBE11:
2142 .LBB12:
765:lib/vsprintf.c **** } else {
766:lib/vsprintf.c **** unsigned short *s = (unsigned short *) va_arg(args, unsigned short *);
767:lib/vsprintf.c **** *s = (unsigned short) simple_strtoul(str, &next, base);
2143 .loc 2 767 0
2144 0eec 0C108DE2 add r1, sp, #12
2145 .LVL263:
766:lib/vsprintf.c **** unsigned short *s = (unsigned short *) va_arg(args, unsigned short *);
2146 .loc 2 766 0
2147 0ef0 007097E5 ldr r7, [r7, #0]
2148 .LVL264:
2149 .loc 2 767 0
2150 0ef4 FEFFFFEB bl simple_strtoul
2151 .LVL265:
2152 .L270:
2153 0ef8 B000C7E1 strh r0, [r7, #0] @ movhi
2154 0efc 180000EA b .L263
2155 .LVL266:
2156 .L276:
2157 .LBE12:
768:lib/vsprintf.c **** }
769:lib/vsprintf.c **** break;
770:lib/vsprintf.c **** case 'l':
771:lib/vsprintf.c **** if (is_sign) {
772:lib/vsprintf.c **** long *l = (long *) va_arg(args,long *);
773:lib/vsprintf.c **** *l = simple_strtol(str,&next,base);
774:lib/vsprintf.c **** } else {
775:lib/vsprintf.c **** unsigned long *l = (unsigned long*) va_arg(args,unsigned long*);
776:lib/vsprintf.c **** *l = simple_strtoul(str,&next,base);
777:lib/vsprintf.c **** }
778:lib/vsprintf.c **** break;
779:lib/vsprintf.c **** case 'L':
780:lib/vsprintf.c **** if (is_sign) {
2158 .loc 2 780 0
2159 0f00 000051E3 cmp r1, #0
2160 0f04 046087E2 add r6, r7, #4
2161 0f08 0300000A beq .L246
2162 .LBB13:
781:lib/vsprintf.c **** long long *l = (long long*) va_arg(args,long long *);
782:lib/vsprintf.c **** *l = simple_strtoll(str,&next,base);
2163 .loc 2 782 0
2164 0f0c 0C108DE2 add r1, sp, #12
2165 .LVL267:
781:lib/vsprintf.c **** long long *l = (long long*) va_arg(args,long long *);
2166 .loc 2 781 0
2167 0f10 007097E5 ldr r7, [r7, #0]
2168 .LVL268:
2169 .loc 2 782 0
2170 0f14 FEFFFFEB bl simple_strtoll
2171 .LVL269:
2172 0f18 020000EA b .L269
2173 .LVL270:
2174 .L246:
2175 .LBE13:
2176 .LBB14:
783:lib/vsprintf.c **** } else {
784:lib/vsprintf.c **** unsigned long long *l = (unsigned long long*) va_arg(args,unsigned long long*);
785:lib/vsprintf.c **** *l = simple_strtoull(str,&next,base);
2177 .loc 2 785 0
2178 0f1c 0C108DE2 add r1, sp, #12
2179 .LVL271:
784:lib/vsprintf.c **** unsigned long long *l = (unsigned long long*) va_arg(args,unsigned long long*);
2180 .loc 2 784 0
2181 0f20 007097E5 ldr r7, [r7, #0]
2182 .LVL272:
2183 .loc 2 785 0
2184 0f24 FEFFFFEB bl simple_strtoull
2185 .LVL273:
2186 .L269:
2187 0f28 030087E8 stmia r7, {r0-r1}
2188 0f2c 0C0000EA b .L263
2189 .LVL274:
2190 .L238:
2191 .LBE14:
2192 .LBB15:
786:lib/vsprintf.c **** }
787:lib/vsprintf.c **** break;
788:lib/vsprintf.c **** case 'Z':
789:lib/vsprintf.c **** case 'z':
790:lib/vsprintf.c **** {
791:lib/vsprintf.c **** size_t *s = (size_t*) va_arg(args,size_t*);
2193 .loc 2 791 0
2194 0f30 046087E2 add r6, r7, #4
2195 0f34 060000EA b .L247
2196 .L235:
2197 .LBE15:
792:lib/vsprintf.c **** *s = (size_t) simple_strtoul(str,&next,base);
793:lib/vsprintf.c **** }
794:lib/vsprintf.c **** break;
795:lib/vsprintf.c **** default:
796:lib/vsprintf.c **** if (is_sign) {
2198 .loc 2 796 0
2199 0f38 000051E3 cmp r1, #0
2200 0f3c 046087E2 add r6, r7, #4
2201 0f40 0300000A beq .L247
2202 .LBB16:
797:lib/vsprintf.c **** int *i = (int *) va_arg(args, int*);
798:lib/vsprintf.c **** *i = (int) simple_strtol(str,&next,base);
2203 .loc 2 798 0
2204 0f44 0C108DE2 add r1, sp, #12
2205 .LVL275:
797:lib/vsprintf.c **** int *i = (int *) va_arg(args, int*);
2206 .loc 2 797 0
2207 0f48 007097E5 ldr r7, [r7, #0]
2208 .LVL276:
2209 .loc 2 798 0
2210 0f4c FEFFFFEB bl simple_strtol
2211 .LVL277:
2212 0f50 020000EA b .L268
2213 .LVL278:
2214 .L247:
2215 .LBE16:
2216 .LBB17:
799:lib/vsprintf.c **** } else {
800:lib/vsprintf.c **** unsigned int *i = (unsigned int*) va_arg(args, unsigned int*);
801:lib/vsprintf.c **** *i = (unsigned int) simple_strtoul(str,&next,base);
2217 .loc 2 801 0
2218 0f54 0C108DE2 add r1, sp, #12
2219 .LVL279:
800:lib/vsprintf.c **** unsigned int *i = (unsigned int*) va_arg(args, unsigned int*);
2220 .loc 2 800 0
2221 0f58 007097E5 ldr r7, [r7, #0]
2222 .LVL280:
2223 .loc 2 801 0
2224 0f5c FEFFFFEB bl simple_strtoul
2225 .LVL281:
2226 .L268:
2227 0f60 000087E5 str r0, [r7, #0]
2228 .L263:
800:lib/vsprintf.c **** unsigned int *i = (unsigned int*) va_arg(args, unsigned int*);
2229 .loc 2 800 0
2230 0f64 0670A0E1 mov r7, r6
2231 .LBE17:
802:lib/vsprintf.c **** }
803:lib/vsprintf.c **** break;
804:lib/vsprintf.c **** }
805:lib/vsprintf.c **** num++;
806:lib/vsprintf.c ****
807:lib/vsprintf.c **** if (!next)
2232 .loc 2 807 0
2233 0f68 0C609DE5 ldr r6, [sp, #12]
2234 0f6c 000056E3 cmp r6, #0
805:lib/vsprintf.c **** num++;
2235 .loc 2 805 0
2236 0f70 014084E2 add r4, r4, #1
2237 .LVL282:
2238 .loc 2 807 0
2239 0f74 0600000A beq .L197
2240 .LVL283:
2241 .L255:
615:lib/vsprintf.c **** while(*fmt && *str) {
2242 .loc 2 615 0 discriminator 1
2243 0f78 04309DE5 ldr r3, [sp, #4]
2244 0f7c 0030D3E5 ldrb r3, [r3, #0] @ zero_extendqisi2
2245 0f80 000053E3 cmp r3, #0
2246 0f84 0200000A beq .L197
615:lib/vsprintf.c **** while(*fmt && *str) {
2247 .loc 2 615 0 is_stmt 0 discriminator 2
2248 0f88 0020D6E5 ldrb r2, [r6, #0] @ zero_extendqisi2
2249 .LVL284:
2250 0f8c 000052E3 cmp r2, #0
2251 0f90 C7FEFF1A bne .L248
2252 .LVL285:
2253 .L197:
808:lib/vsprintf.c **** break;
809:lib/vsprintf.c **** str = next;
810:lib/vsprintf.c **** }
811:lib/vsprintf.c **** return num;
812:lib/vsprintf.c **** }
2254 .loc 2 812 0 is_stmt 1
2255 0f94 0400A0E1 mov r0, r4
2256 0f98 10D08DE2 add sp, sp, #16
2257 0f9c F041BDE8 ldmfd sp!, {r4, r5, r6, r7, r8, lr}
2258 0fa0 1EFF2FE1 bx lr
2259 .L279:
2260 .align 2
2261 .L278:
2262 0fa4 00000000 .word _ctype
2263 .cfi_endproc
2264 .LFE14:
2266 .align 2
2267 .global sscanf
2269 sscanf:
2270 .LFB15:
813:lib/vsprintf.c ****
814:lib/vsprintf.c ****
815:lib/vsprintf.c **** /**
816:lib/vsprintf.c **** * sscanf - Unformat a buffer into a list of arguments
817:lib/vsprintf.c **** * @buf: input buffer
818:lib/vsprintf.c **** * @fmt: formatting of buffer
819:lib/vsprintf.c **** * @...: resulting arguments
820:lib/vsprintf.c **** */
821:lib/vsprintf.c **** int sscanf(const char * buf, const char * fmt, ...)
822:lib/vsprintf.c **** {
2271 .loc 2 822 0
2272 .cfi_startproc
2273 @ Function supports interworking.
2274 @ args = 4, pretend = 12, frame = 8
2275 @ frame_needed = 0, uses_anonymous_args = 1
2276 .LVL286:
2277 0fa8 0E002DE9 stmfd sp!, {r1, r2, r3}
2278 .LCFI16:
2279 .cfi_def_cfa_offset 12
2280 0fac 03402DE9 stmfd sp!, {r0, r1, lr}
2281 .LCFI17:
2282 .cfi_def_cfa_offset 24
823:lib/vsprintf.c **** va_list args;
824:lib/vsprintf.c **** int i;
825:lib/vsprintf.c ****
826:lib/vsprintf.c **** va_start(args,fmt);
827:lib/vsprintf.c **** i = vsscanf(buf,fmt,args);
2283 .loc 2 827 0
2284 0fb0 0C109DE5 ldr r1, [sp, #12]
2285 .cfi_offset 14, -16
2286 .cfi_offset 0, -24
2287 .cfi_offset 3, -4
2288 .cfi_offset 2, -8
2289 .cfi_offset 1, -20
826:lib/vsprintf.c **** va_start(args,fmt);
2290 .loc 2 826 0
2291 0fb4 10208DE2 add r2, sp, #16
2292 0fb8 04208DE5 str r2, [sp, #4]
2293 .loc 2 827 0
2294 0fbc FEFFFFEB bl vsscanf
2295 .LVL287:
828:lib/vsprintf.c **** va_end(args);
829:lib/vsprintf.c **** return i;
830:lib/vsprintf.c **** }
2296 .loc 2 830 0
2297 0fc0 0C40BDE8 ldmfd sp!, {r2, r3, lr}
2298 0fc4 0CD08DE2 add sp, sp, #12
2299 0fc8 1EFF2FE1 bx lr
2300 .cfi_endproc
2301 .LFE15:
2303 .section .rodata
2304 .set .LANCHOR0,. + 0
2307 large_digits.4362:
2308 0000 30313233 .ascii "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\000"
2308 34353637
2308 38394142
2308 43444546
2308 4748494A
2311 small_digits.4361:
2312 0025 30313233 .ascii "0123456789abcdefghijklmnopqrstuvwxyz\000"
2312 34353637
2312 38396162
2312 63646566
2312 6768696A
2313 .text
2314 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 vsprintf.c
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:21 .text:00000000 $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:23 .text:00000000 __toupper
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:47 .text:00000018 $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:51 .text:0000001c $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:53 .text:0000001c skip_atoi
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:92 .text:00000058 $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:96 .text:0000005c $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:98 .text:0000005c number
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:427 .text:000002a4 $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:431 .text:000002a8 $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:434 .text:000002a8 simple_strtoul
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:552 .text:0000037c $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:556 .text:00000380 $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:559 .text:00000380 simple_strtol
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:596 .text:000003ac simple_strtoull
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:731 .text:000004a8 $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:735 .text:000004ac $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:738 .text:000004ac simple_strtoll
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:778 .text:000004e4 vsnprintf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1423 .text:000009e8 $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1427 .text:000009ec $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1430 .text:000009ec vscnprintf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1461 .text:00000a08 snprintf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1498 .text:00000a2c scnprintf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1543 .text:00000a5c vsprintf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1569 .text:00000a70 sprintf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:1609 .text:00000a98 vsscanf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:2262 .text:00000fa4 $d
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:2266 .text:00000fa8 $a
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:2269 .text:00000fa8 sscanf
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:2307 .rodata:00000000 large_digits.4362
C:\Users\netz\AppData\Local\Temp\ccjL0JzD.s:2311 .rodata:00000025 small_digits.4361
.debug_frame:00000010 $d
UNDEFINED SYMBOLS
_ctype
__do_div64
strnlen