clarify the purpose of this project
[nyanglibc.git] / stdio-common / perror.shared.s
blobc78b4b529cc4e812e93c9edad5249a3a714c5c48
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 .section .rodata.str1.1,"aMS",@progbits,1
7 .LC0:
8 .string ""
9 .LC1:
10 .string ": "
11 .LC2:
12 .string "%s%s%s\n"
13 #NO_APP
14 .text
15 .p2align 4,,15
16 .type perror_internal, @function
17 perror_internal:
18 pushq %r12
19 pushq %rbp
20 movq %rdi, %r12
21 pushq %rbx
22 movl %edx, %edi
23 subq $1024, %rsp
24 testq %rsi, %rsi
25 je .L4
26 cmpb $0, (%rsi)
27 movq %rsi, %rbx
28 leaq .LC1(%rip), %rbp
29 je .L4
30 .L2:
31 movq %rsp, %rsi
32 movl $1024, %edx
33 call __GI___strerror_r
34 leaq .LC2(%rip), %rsi
35 movq %rax, %r8
36 movq %rbp, %rcx
37 movq %rbx, %rdx
38 movq %r12, %rdi
39 xorl %eax, %eax
40 call __fxprintf
41 addq $1024, %rsp
42 popq %rbx
43 popq %rbp
44 popq %r12
45 ret
46 .p2align 4,,10
47 .p2align 3
48 .L4:
49 leaq .LC0(%rip), %rbp
50 movq %rbp, %rbx
51 jmp .L2
52 .size perror_internal, .-perror_internal
53 .section .rodata.str1.1
54 .LC3:
55 .string "w+"
56 .text
57 .p2align 4,,15
58 .globl __GI_perror
59 .hidden __GI_perror
60 .type __GI_perror, @function
61 __GI_perror:
62 pushq %r13
63 pushq %r12
64 pushq %rbp
65 pushq %rbx
66 movq %rdi, %rbp
67 subq $24, %rsp
68 movq stderr@GOTPCREL(%rip), %rbx
69 movq __libc_errno@gottpoff(%rip), %rax
70 movq (%rbx), %rdi
71 movl %fs:(%rax), %edx
72 movl 192(%rdi), %eax
73 testl %eax, %eax
74 je .L20
75 .L8:
76 addq $24, %rsp
77 movq %rbp, %rsi
78 popq %rbx
79 popq %rbp
80 popq %r12
81 popq %r13
82 jmp perror_internal
83 .p2align 4,,10
84 .p2align 3
85 .L20:
86 movl %edx, 12(%rsp)
87 call __GI___fileno
88 cmpl $-1, %eax
89 movl 12(%rsp), %edx
90 jne .L9
91 .L19:
92 movq (%rbx), %rdi
93 jmp .L8
94 .p2align 4,,10
95 .p2align 3
96 .L9:
97 movl %eax, %edi
98 movl %edx, 12(%rsp)
99 call __GI___dup
100 cmpl $-1, %eax
101 movl %eax, %r12d
102 movl 12(%rsp), %edx
103 je .L19
104 leaq .LC3(%rip), %rsi
105 movl %eax, %edi
106 movl %edx, 12(%rsp)
107 call _IO_new_fdopen@PLT
108 testq %rax, %rax
109 movq %rax, %r13
110 movl 12(%rsp), %edx
111 je .L21
112 movq %rbp, %rsi
113 movq %rax, %rdi
114 call perror_internal
115 testb $32, 0(%r13)
116 je .L13
117 movq (%rbx), %rax
118 orl $32, (%rax)
119 .L13:
120 addq $24, %rsp
121 movq %r13, %rdi
122 popq %rbx
123 popq %rbp
124 popq %r12
125 popq %r13
126 jmp _IO_new_fclose@PLT
127 .p2align 4,,10
128 .p2align 3
129 .L21:
130 movl %r12d, %edi
131 movl %edx, 12(%rsp)
132 call __GI___close
133 movq (%rbx), %rdi
134 movl 12(%rsp), %edx
135 jmp .L8
136 .size __GI_perror, .-__GI_perror
137 .globl perror
138 .set perror,__GI_perror
139 .hidden __fxprintf