clarify the purpose of this project
[nyanglibc.git] / stdlib / canonicalize.shared.s
blob3dab7bfb93a05df66fa8608bdc9c5091f3982fae
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 .symver __realpath,realpath@@GLIBC_2.3
7 .symver __old_realpath,realpath@GLIBC_2.2.5
8 #NO_APP
9 .p2align 4,,15
10 .globl __GI___realpath
11 .hidden __GI___realpath
12 .type __GI___realpath, @function
13 __GI___realpath:
14 pushq %r15
15 pushq %r14
16 pushq %r13
17 pushq %r12
18 pushq %rbp
19 pushq %rbx
20 subq $3192, %rsp
21 testq %rdi, %rdi
22 movq %rsi, (%rsp)
23 je .L127
24 movzbl (%rdi), %eax
25 movq %rdi, %rbp
26 testb %al, %al
27 je .L128
28 leaq 1104(%rsp), %rcx
29 leaq 1120(%rsp), %rdx
30 leaq 64(%rsp), %r15
31 cmpb $47, %al
32 movq $1024, 1112(%rsp)
33 movq $1024, 2152(%rsp)
34 movq %rcx, 16(%rsp)
35 movq %rdx, 1104(%rsp)
36 leaq 2144(%rsp), %rcx
37 leaq 2160(%rsp), %rdx
38 leaq 16(%r15), %rbx
39 movq $1024, 72(%rsp)
40 movq %rcx, 8(%rsp)
41 movl $1024, %esi
42 movq %rdx, 2144(%rsp)
43 movq %rbx, 64(%rsp)
44 jne .L5
45 jmp .L129
46 .p2align 4,,10
47 .p2align 3
48 .L131:
49 movq 64(%rsp), %rbx
50 movq 72(%rsp), %rsi
51 .L5:
52 movq %rbx, %rdi
53 call __GI___getcwd
54 testq %rax, %rax
55 jne .L130
56 movq __libc_errno@gottpoff(%rip), %rax
57 cmpl $34, %fs:(%rax)
58 jne .L50
59 movq %r15, %rdi
60 call __GI___libc_scratch_buffer_grow
61 testb %al, %al
62 jne .L131
63 .L57:
64 movl $1, %r12d
65 movl $1, %ebp
66 .L8:
67 movq 16(%rsp), %rax
68 movq 1104(%rsp), %rdi
69 addq $16, %rax
70 cmpq %rax, %rdi
71 je .L44
72 call free@PLT
73 .L44:
74 movq 8(%rsp), %rax
75 movq 2144(%rsp), %rdi
76 addq $16, %rax
77 cmpq %rax, %rdi
78 je .L45
79 call free@PLT
80 .L45:
81 testb %r12b, %r12b
82 je .L46
83 movq 64(%rsp), %rdi
84 leaq 16(%r15), %rax
85 cmpq %rax, %rdi
86 je .L47
87 call free@PLT
88 .L47:
89 testb %bpl, %bpl
90 movl $0, %eax
91 cmove (%rsp), %rax
92 movq %rax, (%rsp)
93 .L82:
94 movq (%rsp), %rax
95 addq $3192, %rsp
96 popq %rbx
97 popq %rbp
98 popq %r12
99 popq %r13
100 popq %r14
101 popq %r15
103 .p2align 4,,10
104 .p2align 3
105 .L129:
106 leaq 17(%r15), %r13
107 movb $47, 80(%rsp)
108 .L10:
109 movb $0, 43(%rsp)
110 movl $0, 44(%rsp)
111 .L40:
112 testb %al, %al
113 je .L12
114 cmpb $47, %al
115 jne .L41
116 .p2align 4,,10
117 .p2align 3
118 .L11:
119 addq $1, %rbp
120 movzbl 0(%rbp), %eax
121 cmpb $47, %al
122 je .L11
123 testb %al, %al
124 je .L12
125 .L41:
126 movq %rbp, %r12
127 jmp .L13
128 .p2align 4,,10
129 .p2align 3
130 .L132:
131 cmpb $47, %dl
132 je .L67
133 .L13:
134 addq $1, %r12
135 movzbl (%r12), %edx
136 testb %dl, %dl
137 jne .L132
138 .L67:
139 movq %r12, %rcx
140 subq %rbp, %rcx
141 movq %rcx, 24(%rsp)
142 je .L12
143 cmpq $1, %rcx
144 je .L133
145 cmpb $46, %al
146 jne .L17
147 cmpq $2, 24(%rsp)
148 jne .L17
149 cmpb $46, 1(%rbp)
150 jne .L17
151 leaq 1(%rbx), %rax
152 cmpq %rax, %r13
153 ja .L134
154 .L16:
155 movzbl (%r12), %eax
156 movq %r12, %rbp
157 jmp .L40
158 .p2align 4,,10
159 .p2align 3
160 .L133:
161 cmpb $46, %al
162 je .L16
163 .L17:
164 cmpb $47, -1(%r13)
165 je .L19
166 movb $47, 0(%r13)
167 addq $1, %r13
168 .L19:
169 movq 24(%rsp), %rax
170 leaq 2(%rax), %rsi
171 movq 72(%rsp), %rax
172 movq %rsi, %rcx
173 addq %rbx, %rax
174 subq %r13, %rax
175 cmpq %rax, %rsi
176 jbe .L21
177 movq %rcx, %r14
178 movq %rbp, 32(%rsp)
179 jmp .L20
180 .p2align 4,,10
181 .p2align 3
182 .L136:
183 movq 72(%rsp), %rax
184 movq 64(%rsp), %rbx
185 subq %rbp, %rax
186 leaq (%rbx,%rbp), %r13
187 cmpq %r14, %rax
188 jnb .L135
189 .L20:
190 movq %r13, %rbp
191 movq %r15, %rdi
192 subq %rbx, %rbp
193 call __GI___libc_scratch_buffer_grow_preserve
194 testb %al, %al
195 jne .L136
196 jmp .L57
197 .p2align 4,,10
198 .p2align 3
199 .L46:
200 movq %r13, %rsi
201 movq %r15, %rdi
202 subq %rbx, %rsi
203 call __GI___libc_scratch_buffer_dupfree
204 movq %rax, (%rsp)
205 jmp .L82
206 .p2align 4,,10
207 .p2align 3
208 .L135:
209 movq 32(%rsp), %rbp
210 .L21:
211 movq 24(%rsp), %rdx
212 movq %r13, %rdi
213 movq %rbp, %rsi
214 call __GI_mempcpy@PLT
215 movq 8(%rsp), %r14
216 movq %rax, %r13
217 movb $0, (%rax)
218 movq %r12, 24(%rsp)
219 .p2align 4,,10
220 .p2align 3
221 .L23:
222 movq 2152(%rsp), %rax
223 movq 2144(%rsp), %rbp
224 movq %rbx, %rdi
225 leaq -1(%rax), %r12
226 movq %rbp, %rsi
227 movq %r12, %rdx
228 call __readlink
229 cmpq %rax, %r12
230 jg .L22
231 movq %r14, %rdi
232 call __GI___libc_scratch_buffer_grow
233 testb %al, %al
234 jne .L23
235 jmp .L57
236 .p2align 4,,10
237 .p2align 3
238 .L130:
239 xorl %esi, %esi
240 movq %rbx, %rdi
241 call __GI___rawmemchr
242 movq %rax, %r13
243 movzbl 0(%rbp), %eax
244 jmp .L10
245 .p2align 4,,10
246 .p2align 3
247 .L50:
248 movq %rbx, %rsi
249 movl $1, %ebp
250 .L7:
251 cmpq $0, (%rsp)
252 leaq 1(%rbx), %r13
253 movb $0, (%rbx)
254 je .L137
255 movq %r13, %rax
256 subq %rsi, %rax
257 cmpq $4096, %rax
258 jle .L43
259 cmpq %rsi, (%rsp)
260 movq %rsi, %rbx
261 sete %r12b
262 orl %ebp, %r12d
263 jmp .L8
264 .p2align 4,,10
265 .p2align 3
266 .L22:
267 testq %rax, %rax
268 movq 24(%rsp), %r12
269 movq %rax, %rcx
270 jns .L24
271 movzbl (%r12), %edx
272 movq %r12, %rax
273 .L25:
274 cmpb $47, %dl
275 je .L35
276 jmp .L36
277 .p2align 4,,10
278 .p2align 3
279 .L62:
280 movq %rcx, %rax
281 .L35:
282 movzbl 1(%rax), %edx
283 leaq 1(%rax), %rcx
284 cmpb $47, %dl
285 je .L62
286 addq $2, %rax
287 testb %dl, %dl
288 je .L37
289 cmpb $46, %dl
290 jne .L36
291 movzbl 1(%rcx), %edx
292 testb %dl, %dl
293 je .L37
294 cmpb $46, %dl
295 jne .L25
296 movzbl 2(%rcx), %eax
297 testb %al, %al
298 je .L37
299 cmpb $47, %al
300 je .L37
301 .L36:
302 movq __libc_errno@gottpoff(%rip), %rax
303 cmpl $22, %fs:(%rax)
304 setne %bpl
305 .L39:
306 testb %bpl, %bpl
307 je .L16
308 movq %rbx, %rsi
309 movq %r13, %rbx
310 jmp .L7
311 .p2align 4,,10
312 .p2align 3
313 .L128:
314 movq __libc_errno@gottpoff(%rip), %rax
315 movq $0, (%rsp)
316 movl $2, %fs:(%rax)
317 jmp .L82
318 .p2align 4,,10
319 .p2align 3
320 .L137:
321 testq %rsi, %rsi
322 movq %rsi, %rbx
323 sete %r12b
324 orl %ebp, %r12d
325 jmp .L8
326 .L37:
327 movl $47, %eax
328 xorl %edx, %edx
329 movl $512, %ecx
330 movw %ax, 0(%r13)
331 movq %rbx, %rsi
332 movl $-100, %edi
333 call __faccessat@PLT
334 testl %eax, %eax
335 setne %bpl
336 jmp .L39
337 .L134:
338 leaq -1(%r13), %rax
339 cmpq %rax, %rbx
340 jnb .L60
341 cmpb $47, -2(%r13)
342 je .L60
343 .L18:
344 subq $1, %rax
345 cmpq %rax, %rbx
346 je .L54
347 cmpb $47, -1(%rax)
348 jne .L18
349 .L60:
350 movq %rax, %r13
351 jmp .L16
352 .p2align 4,,10
353 .p2align 3
354 .L24:
355 movq sysconf_symloop_max.5738(%rip), %rax
356 addl $1, 44(%rsp)
357 testq %rax, %rax
358 je .L138
359 .L26:
360 testq %rax, %rax
361 movl $40, %edx
362 jle .L27
363 cmpl $40, %eax
364 cmovnb %eax, %edx
365 .L27:
366 cmpl %edx, 44(%rsp)
367 ja .L139
368 cmpb $0, 43(%rsp)
369 movb $0, 0(%rbp,%rcx)
370 movq 1104(%rsp), %rax
371 movq %rcx, 48(%rsp)
372 movq %rax, 24(%rsp)
373 je .L29
374 movq %r12, %rcx
375 movq %r12, %rdi
376 subq %rax, %rcx
377 movq %rcx, 56(%rsp)
378 call __GI_strlen
379 movq 48(%rsp), %rcx
380 movq %rax, 32(%rsp)
381 leaq (%rcx,%rax), %r14
382 cmpq 1112(%rsp), %r14
383 jb .L30
384 movq %rbp, 24(%rsp)
385 movq 16(%rsp), %rbp
386 jmp .L31
387 .p2align 4,,10
388 .p2align 3
389 .L141:
390 cmpq 1112(%rsp), %r14
391 jb .L140
392 .L31:
393 movq %rbp, %rdi
394 call __GI___libc_scratch_buffer_grow_preserve
395 testb %al, %al
396 jne .L141
397 jmp .L57
398 .p2align 4,,10
399 .p2align 3
400 .L43:
401 movq (%rsp), %r14
402 movq %r14, %rdi
403 movq %r14, %rbx
404 call __GI_strcpy
405 cmpq %r14, %r14
406 sete %r12b
407 orl %ebp, %r12d
408 jmp .L8
409 .p2align 4,,10
410 .p2align 3
411 .L127:
412 movq __libc_errno@gottpoff(%rip), %rax
413 movq $0, (%rsp)
414 movl $22, %fs:(%rax)
415 jmp .L82
416 .p2align 4,,10
417 .p2align 3
418 .L12:
419 leaq 1(%rbx), %rax
420 movq %rbx, %rsi
421 cmpq %rax, %r13
422 jbe .L65
423 cmpb $47, -1(%r13)
424 je .L142
425 .L65:
426 movq %r13, %rbx
427 xorl %ebp, %ebp
428 jmp .L7
429 .L29:
430 movq %r12, %rdi
431 call __GI_strlen
432 movq 48(%rsp), %rcx
433 movq %rax, 32(%rsp)
434 movq $0, 56(%rsp)
435 leaq (%rax,%rcx), %r14
436 cmpq %r14, 1112(%rsp)
437 ja .L32
438 movq %rbp, 24(%rsp)
439 movq %rcx, 48(%rsp)
440 movq 16(%rsp), %rbp
441 jmp .L31
442 .L140:
443 cmpb $0, 43(%rsp)
444 movq 1104(%rsp), %rax
445 movq 24(%rsp), %rbp
446 movq 48(%rsp), %rcx
447 movq %rax, 24(%rsp)
448 je .L32
449 .L30:
450 movq 56(%rsp), %r12
451 addq 24(%rsp), %r12
452 .L32:
453 movq 24(%rsp), %r14
454 movq 32(%rsp), %rdx
455 movq %r12, %rsi
456 movq %rcx, 24(%rsp)
457 leaq (%r14,%rcx), %rdi
458 addq $1, %rdx
459 movq %r14, %r12
460 call __GI_memmove
461 movq 24(%rsp), %rcx
462 movq %rbp, %rsi
463 movq %r14, %rdi
464 movq %rcx, %rdx
465 call __GI_memcpy@PLT
466 cmpb $47, 0(%rbp)
467 leaq 1(%rbx), %rax
468 je .L143
469 cmpq %rax, %r13
470 movb $1, 43(%rsp)
471 jbe .L16
472 leaq -1(%r13), %rax
473 cmpq %rbx, %rax
474 jbe .L60
475 cmpb $47, -2(%r13)
476 je .L60
477 .L34:
478 subq $1, %rax
479 cmpq %rbx, %rax
480 je .L61
481 cmpb $47, -1(%rax)
482 jne .L34
483 movq %rax, %r13
484 movb $1, 43(%rsp)
485 jmp .L16
486 .L138:
487 movl $173, %edi
488 movq %rcx, 24(%rsp)
489 call __GI___sysconf
490 movq 24(%rsp), %rcx
491 movq %rax, sysconf_symloop_max.5738(%rip)
492 jmp .L26
493 .L143:
494 movb $47, (%rbx)
495 movq %rax, %r13
496 movb $1, 43(%rsp)
497 jmp .L16
498 .L142:
499 leaq -1(%r13), %rbx
500 xorl %ebp, %ebp
501 jmp .L7
502 .L54:
503 movq %rbx, %r13
504 jmp .L16
505 .L139:
506 movq __libc_errno@gottpoff(%rip), %rax
507 movq %rbx, %rsi
508 movl $1, %ebp
509 movq %r13, %rbx
510 movl $40, %fs:(%rax)
511 jmp .L7
512 .L61:
513 movq %rbx, %r13
514 movb $1, 43(%rsp)
515 jmp .L16
516 .size __GI___realpath, .-__GI___realpath
517 .globl __realpath
518 .set __realpath,__GI___realpath
519 .section .text.compat,"ax",@progbits
520 .p2align 4,,15
521 .globl __old_realpath
522 .type __old_realpath, @function
523 __old_realpath:
524 testq %rsi, %rsi
525 je .L148
526 jmp __GI___realpath
527 .p2align 4,,10
528 .p2align 3
529 .L148:
530 movq __libc_errno@gottpoff(%rip), %rax
531 movl $22, %fs:(%rax)
532 xorl %eax, %eax
534 .size __old_realpath, .-__old_realpath
535 .text
536 .p2align 4,,15
537 .globl __canonicalize_file_name
538 .type __canonicalize_file_name, @function
539 __canonicalize_file_name:
540 xorl %esi, %esi
541 jmp __GI___realpath
542 .size __canonicalize_file_name, .-__canonicalize_file_name
543 .weak canonicalize_file_name
544 .set canonicalize_file_name,__canonicalize_file_name
545 .local sysconf_symloop_max.5738
546 .comm sysconf_symloop_max.5738,8,8
547 .hidden __readlink