clarify the purpose of this project
[nyanglibc.git] / elf / dl-open.s
blob62eae5b6317f51f2ea976ddf118c7c8244ced93e
1 .text
2 .section .rodata.str1.1,"aMS",@progbits,1
3 .LC0:
4 .string "dl-open.c"
5 .section .rodata.str1.8,"aMS",@progbits,1
6 .align 8
7 .LC1:
8 .string "new_nlist < ns->_ns_global_scope_alloc"
9 .align 8
10 .LC2:
11 .string "\nadd %s [%lu] to global scope\n"
12 .align 8
13 .LC3:
14 .string "added <= ns->_ns_global_scope_pending_adds"
15 .text
16 .p2align 4,,15
17 .type add_to_global_update, @function
18 add_to_global_update:
19 pushq %r15
20 pushq %r14
21 pushq %r13
22 pushq %r12
23 leaq _dl_ns(%rip), %r13
24 pushq %rbp
25 pushq %rbx
26 subq $8, %rsp
27 movq 48(%rdi), %r15
28 leaq (%r15,%r15,8), %rax
29 leaq (%r15,%rax,2), %r14
30 leaq 0(%r13,%r14,8), %rax
31 movq 16(%rax), %rdx
32 movl 8(%rdx), %r12d
33 movl 712(%rdi), %edx
34 testl %edx, %edx
35 je .L2
36 movq %rdi, %rbp
37 xorl %ebx, %ebx
38 .p2align 4,,10
39 .p2align 3
40 .L5:
41 movq 704(%rbp), %rdx
42 movl %ebx, %eax
43 movq (%rdx,%rax,8), %rcx
44 movzbl 796(%rcx), %eax
45 testb $16, %al
46 jne .L3
47 orl $16, %eax
48 movb %al, 796(%rcx)
49 leaq 0(%r13,%r14,8), %rax
50 cmpl %r12d, 24(%rax)
51 jbe .L13
52 movq 16(%rax), %rax
53 movl %r12d, %edx
54 addl $1, %r12d
55 testb $2, 1+_dl_debug_mask(%rip)
56 movq (%rax), %rax
57 movq %rcx, (%rax,%rdx,8)
58 jne .L14
59 .L3:
60 addl $1, %ebx
61 cmpl %ebx, 712(%rbp)
62 ja .L5
63 leaq (%r15,%r15,8), %rax
64 movl %r12d, %esi
65 leaq (%r15,%rax,2), %rax
66 leaq 0(%r13,%rax,8), %rax
67 movq 16(%rax), %rdx
68 movl 28(%rax), %eax
69 subl 8(%rdx), %esi
70 cmpl %esi, %eax
71 movl %esi, %edx
72 jb .L15
73 .L6:
74 leaq (%r15,%r15,8), %rcx
75 subl %edx, %eax
76 leaq (%r15,%rcx,2), %rcx
77 leaq 0(%r13,%rcx,8), %rcx
78 movl %eax, 28(%rcx)
79 movq 16(%rcx), %rax
80 movl %r12d, 8(%rax)
81 addq $8, %rsp
82 popq %rbx
83 popq %rbp
84 popq %r12
85 popq %r13
86 popq %r14
87 popq %r15
88 ret
89 .p2align 4,,10
90 .p2align 3
91 .L14:
92 movq 48(%rcx), %rdx
93 movq 8(%rcx), %rsi
94 leaq .LC2(%rip), %rdi
95 xorl %eax, %eax
96 call _dl_debug_printf
97 jmp .L3
98 .L2:
99 movl 28(%rax), %eax
100 jmp .L6
101 .L13:
102 leaq __PRETTY_FUNCTION__.11125(%rip), %rcx
103 leaq .LC0(%rip), %rsi
104 leaq .LC1(%rip), %rdi
105 movl $183, %edx
106 call __assert_fail
107 .L15:
108 leaq __PRETTY_FUNCTION__.11125(%rip), %rcx
109 leaq .LC0(%rip), %rsi
110 leaq .LC3(%rip), %rdi
111 movl $197, %edx
112 call __assert_fail
113 .size add_to_global_update, .-add_to_global_update
114 .p2align 4,,15
115 .type call_dl_init, @function
116 call_dl_init:
117 movq 24(%rdi), %rcx
118 movq 16(%rdi), %rdx
119 movl 8(%rdi), %esi
120 movq (%rdi), %rdi
121 jmp _dl_init
122 .size call_dl_init, .-call_dl_init
123 .section .rodata.str1.1
124 .LC4:
125 .string "cannot extend global scope"
126 .section .text.unlikely,"ax",@progbits
127 .type add_to_global_resize_failure.isra.2, @function
128 add_to_global_resize_failure.isra.2:
129 subq $8, %rsp
130 movq (%rdi), %rsi
131 leaq .LC4(%rip), %rcx
132 xorl %edx, %edx
133 movl $12, %edi
134 call _dl_signal_error
135 .size add_to_global_resize_failure.isra.2, .-add_to_global_resize_failure.isra.2
136 .text
137 .p2align 4,,15
138 .type add_to_global_resize, @function
139 add_to_global_resize:
140 pushq %r15
141 pushq %r14
142 pushq %r13
143 pushq %r12
144 pushq %rbp
145 pushq %rbx
146 movq %rdi, %rbp
147 subq $24, %rsp
148 movl 712(%rdi), %eax
149 movq 48(%rdi), %rbx
150 testl %eax, %eax
151 je .L20
152 movq 704(%rdi), %rdx
153 subl $1, %eax
154 leaq 8(%rdx), %rcx
155 leaq (%rcx,%rax,8), %rsi
156 xorl %eax, %eax
157 jmp .L22
158 .p2align 4,,10
159 .p2align 3
160 .L46:
161 addq $8, %rcx
162 .L22:
163 movq (%rdx), %rdx
164 movzbl 796(%rdx), %edx
165 andl $16, %edx
166 cmpb $1, %dl
167 movq %rcx, %rdx
168 adcl $0, %eax
169 cmpq %rsi, %rcx
170 jne .L46
171 .L20:
172 leaq (%rbx,%rbx,8), %rdx
173 leaq _dl_ns(%rip), %r12
174 leaq (%rbx,%rdx,2), %rcx
175 xorl %edx, %edx
176 addl 28(%r12,%rcx,8), %eax
177 leaq (%rbx,%rbx,8), %rcx
178 leaq (%rbx,%rcx,2), %rcx
179 setc %dl
180 leaq (%r12,%rcx,8), %rcx
181 testl %edx, %edx
182 movl %eax, 28(%rcx)
183 jne .L45
184 movq 16(%rcx), %r13
185 movl 24(%rcx), %ecx
186 movl %eax, %eax
187 movl 8(%r13), %r14d
188 addq %r14, %rax
189 testl %ecx, %ecx
190 jne .L26
191 addq $8, %rax
192 movl %eax, %edx
193 movl %eax, %r15d
194 cmpq %rdx, %rax
195 jne .L45
196 testl %r15d, %r15d
197 movq $0, 8(%rsp)
198 jne .L47
199 .L19:
200 addq $24, %rsp
201 popq %rbx
202 popq %rbp
203 popq %r12
204 popq %r13
205 popq %r14
206 popq %r15
208 .p2align 4,,10
209 .p2align 3
210 .L26:
211 cmpq %rcx, %rax
212 jbe .L19
213 addq %rax, %rax
214 movl %eax, %edx
215 movl %eax, %r15d
216 cmpq %rdx, %rax
217 jne .L45
218 movq 0(%r13), %rax
219 testl %r15d, %r15d
220 movq %rax, 8(%rsp)
221 je .L19
222 .L47:
223 movl %r15d, %edi
224 salq $3, %rdi
225 call malloc@PLT
226 testq %rax, %rax
227 je .L45
228 movq 0(%r13), %rsi
229 leaq 0(,%r14,8), %rdx
230 movq %rax, %rdi
231 call memcpy@PLT
232 movq %rax, %r8
233 leaq (%rbx,%rbx,8), %rax
234 leaq (%rbx,%rax,2), %rax
235 movl %r15d, 24(%r12,%rax,8)
236 movq %r8, 0(%r13)
237 #APP
238 # 158 "dl-open.c" 1
239 movl %fs:24,%eax
240 # 0 "" 2
241 #NO_APP
242 testl %eax, %eax
243 jne .L48
244 .L33:
245 movq 8(%rsp), %rdi
246 addq $24, %rsp
247 popq %rbx
248 popq %rbp
249 popq %r12
250 popq %r13
251 popq %r14
252 popq %r15
253 jmp free@PLT
254 .L48:
255 call __thread_gscope_wait
256 jmp .L33
257 .L45:
258 movq 56(%rbp), %rdi
259 call add_to_global_resize_failure.isra.2
260 .size add_to_global_resize, .-add_to_global_resize
261 .section .rodata.str1.1
262 .LC5:
263 .string "ns == l->l_ns"
264 .text
265 .p2align 4,,15
266 .globl _dl_find_dso_for_object
267 .type _dl_find_dso_for_object, @function
268 _dl_find_dso_for_object:
269 pushq %rbp
270 pushq %rbx
271 subq $8, %rsp
272 cmpq $0, _dl_nns(%rip)
273 je .L50
274 movq _dl_ns(%rip), %rbx
275 movq %rdi, %rbp
276 testq %rbx, %rbx
277 je .L50
278 .p2align 4,,10
279 .p2align 3
280 .L57:
281 cmpq %rbp, 856(%rbx)
282 ja .L52
283 cmpq %rbp, 864(%rbx)
284 jbe .L52
285 testb $64, 797(%rbx)
286 jne .L56
287 movq %rbp, %rsi
288 movq %rbx, %rdi
289 call _dl_addr_inside_object
290 testl %eax, %eax
291 jne .L56
292 .L52:
293 movq 24(%rbx), %rbx
294 testq %rbx, %rbx
295 jne .L57
296 .L50:
297 xorl %ebx, %ebx
298 addq $8, %rsp
299 movq %rbx, %rax
300 popq %rbx
301 popq %rbp
303 .p2align 4,,10
304 .p2align 3
305 .L56:
306 cmpq $0, 48(%rbx)
307 jne .L64
308 addq $8, %rsp
309 movq %rbx, %rax
310 popq %rbx
311 popq %rbp
313 .L64:
314 leaq __PRETTY_FUNCTION__.11135(%rip), %rcx
315 leaq .LC0(%rip), %rsi
316 leaq .LC5(%rip), %rdi
317 movl $219, %edx
318 call __assert_fail
319 .size _dl_find_dso_for_object, .-_dl_find_dso_for_object
320 .section .rodata.str1.1
321 .LC6:
322 .string "invalid mode for dlopen()"
323 .section .rodata.str1.8
324 .align 8
325 .LC7:
326 .string "no more namespaces available for dlmopen()"
327 .align 8
328 .LC8:
329 .string "invalid target namespace in dlmopen()"
330 .align 8
331 .LC9:
332 .string "_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT"
333 .text
334 .p2align 4,,15
335 .globl _dl_open
336 .hidden _dl_open
337 .type _dl_open, @function
338 _dl_open:
339 pushq %r15
340 pushq %r14
341 pushq %r13
342 pushq %r12
343 movq %rdi, %r12
344 pushq %rbp
345 pushq %rbx
346 subq $120, %rsp
347 testb $3, %sil
348 je .L96
349 cmpq $0, __pthread_mutex_lock@GOTPCREL(%rip)
350 movl %esi, %ebp
351 movq %rdx, %r15
352 movq %rcx, %rbx
353 movl %r8d, %r14d
354 movq %r9, %r13
355 je .L67
356 leaq _dl_load_lock(%rip), %rdi
357 call __pthread_mutex_lock@PLT
358 .L67:
359 cmpq $-1, %rbx
360 je .L97
361 leaq 2(%rbx), %rax
362 testq $-3, %rax
363 jne .L98
364 movq 176(%rsp), %rax
365 leaq dl_open_worker(%rip), %rsi
366 movq %r12, 32(%rsp)
367 leaq 32(%rsp), %rdx
368 movq %rsp, %r12
369 movq %r13, 88(%rsp)
370 movq %r12, %rdi
371 movl %ebp, 40(%rsp)
372 movq %r15, 48(%rsp)
373 movq $0, 56(%rsp)
374 movq %rbx, 64(%rsp)
375 movl %r14d, 80(%rsp)
376 movq %rax, 96(%rsp)
377 call _dl_catch_exception
378 movl %eax, %r13d
379 call _dl_unload_cache
380 movq 64(%rsp), %rsi
381 testq %rsi, %rsi
382 js .L71
383 leaq (%rsi,%rsi,8), %rax
384 movl 72(%rsp), %ecx
385 leaq (%rsi,%rax,2), %rdx
386 leaq _dl_ns(%rip), %rax
387 movl %ecx, 28(%rax,%rdx,8)
388 .L71:
389 cmpq $0, 8(%rsp)
390 jne .L99
391 xorl %edi, %edi
392 call _dl_debug_initialize
393 movl 24(%rax), %eax
394 testl %eax, %eax
395 jne .L100
396 cmpq $0, __pthread_mutex_unlock@GOTPCREL(%rip)
397 je .L79
398 leaq _dl_load_lock(%rip), %rdi
399 call __pthread_mutex_unlock@PLT
400 .L79:
401 movq 56(%rsp), %rax
402 addq $120, %rsp
403 popq %rbx
404 popq %rbp
405 popq %r12
406 popq %r13
407 popq %r14
408 popq %r15
410 .p2align 4,,10
411 .p2align 3
412 .L97:
413 cmpq $0, __pthread_mutex_unlock@GOTPCREL(%rip)
414 je .L69
415 leaq _dl_load_lock(%rip), %rdi
416 call __pthread_mutex_unlock@PLT
417 .L69:
418 leaq .LC7(%rip), %rcx
419 xorl %edx, %edx
420 movq %r12, %rsi
421 movl $22, %edi
422 call _dl_signal_error
423 .p2align 4,,10
424 .p2align 3
425 .L98:
426 leaq .LC8(%rip), %rcx
427 xorl %edx, %edx
428 movq %r12, %rsi
429 movl $22, %edi
430 call _dl_signal_error
431 .p2align 4,,10
432 .p2align 3
433 .L99:
434 cmpb $0, 76(%rsp)
435 je .L101
436 .L73:
437 movq 56(%rsp), %rdi
438 testq %rdi, %rdi
439 je .L74
440 andl $134217728, %ebp
441 je .L102
442 .L75:
443 movl $1, %esi
444 call _dl_close_worker
445 movq 64(%rsp), %rsi
446 .L74:
447 xorl %edi, %edi
448 call _dl_debug_initialize
449 movl 24(%rax), %edx
450 testl %edx, %edx
451 jne .L103
452 cmpq $0, __pthread_mutex_unlock@GOTPCREL(%rip)
453 je .L77
454 leaq _dl_load_lock(%rip), %rdi
455 call __pthread_mutex_unlock@PLT
456 .L77:
457 xorl %edx, %edx
458 movq %r12, %rsi
459 movl %r13d, %edi
460 call _dl_signal_exception
461 .p2align 4,,10
462 .p2align 3
463 .L101:
464 leaq (%rbx,%rbx,8), %rax
465 leaq (%rbx,%rax,2), %rdx
466 leaq _dl_ns(%rip), %rax
467 movq $0, 32(%rax,%rdx,8)
468 jmp .L73
469 .p2align 4,,10
470 .p2align 3
471 .L102:
472 movb $1, _dl_tls_dtv_gaps(%rip)
473 jmp .L75
474 .p2align 4,,10
475 .p2align 3
476 .L103:
477 leaq __PRETTY_FUNCTION__.11275(%rip), %rcx
478 leaq .LC0(%rip), %rsi
479 leaq .LC9(%rip), %rdi
480 movl $907, %edx
481 call __assert_fail
482 .L96:
483 leaq .LC6(%rip), %rcx
484 movq %rdi, %rsi
485 xorl %edx, %edx
486 movl $22, %edi
487 call _dl_signal_error
488 .L100:
489 leaq __PRETTY_FUNCTION__.11275(%rip), %rcx
490 leaq .LC0(%rip), %rsi
491 leaq .LC9(%rip), %rdi
492 movl $916, %edx
493 call __assert_fail
494 .size _dl_open, .-_dl_open
495 .section .rodata.str1.1
496 .LC10:
497 .string "<main program>"
498 .LC11:
499 .string "<program name unknown>"
500 .LC12:
501 .string "object=%s [%lu]\n"
502 .LC13:
503 .string " scope %u:"
504 .LC14:
505 .string " %s"
506 .LC15:
507 .string "\n"
508 .LC16:
509 .string " no scope\n"
510 .text
511 .p2align 4,,15
512 .globl _dl_show_scope
513 .hidden _dl_show_scope
514 .type _dl_show_scope, @function
515 _dl_show_scope:
516 pushq %r14
517 pushq %r13
518 movl %esi, %r13d
519 pushq %r12
520 pushq %rbp
521 movq %rdi, %r14
522 pushq %rbx
523 movq 8(%rdi), %rsi
524 movq 48(%rdi), %rdx
525 cmpb $0, (%rsi)
526 jne .L105
527 movq _dl_argv(%rip), %rax
528 movq (%rax), %rsi
529 leaq .LC10(%rip), %rax
530 testq %rsi, %rsi
531 cmove %rax, %rsi
532 .L105:
533 leaq .LC12(%rip), %rdi
534 xorl %eax, %eax
535 call _dl_debug_printf
536 movq 920(%r14), %rax
537 testq %rax, %rax
538 je .L106
539 movslq %r13d, %rdx
540 leaq .LC11(%rip), %r12
541 cmpq $0, (%rax,%rdx,8)
542 leaq 0(,%rdx,8), %rbp
543 je .L108
544 .p2align 4,,10
545 .p2align 3
546 .L107:
547 leaq .LC13(%rip), %rdi
548 xorl %eax, %eax
549 movl %r13d, %esi
550 call _dl_debug_printf
551 movq 920(%r14), %rax
552 movq (%rax,%rbp), %rdx
553 movl 8(%rdx), %eax
554 testl %eax, %eax
555 je .L109
556 xorl %ebx, %ebx
557 .p2align 4,,10
558 .p2align 3
559 .L113:
560 movq (%rdx), %rdx
561 movl %ebx, %eax
562 movq (%rdx,%rax,8), %rax
563 movq 8(%rax), %rsi
564 cmpb $0, (%rsi)
565 jne .L119
566 movq _dl_argv(%rip), %rax
567 movq (%rax), %rsi
568 testq %rsi, %rsi
569 cmove %r12, %rsi
570 .L119:
571 leaq .LC14(%rip), %rdi
572 xorl %eax, %eax
573 addl $1, %ebx
574 call _dl_debug_printf_c
575 movq 920(%r14), %rax
576 movq (%rax,%rbp), %rdx
577 cmpl %ebx, 8(%rdx)
578 ja .L113
579 .L109:
580 leaq .LC15(%rip), %rdi
581 xorl %eax, %eax
582 addq $8, %rbp
583 addl $1, %r13d
584 call _dl_debug_printf_c
585 movq 920(%r14), %rax
586 cmpq $0, (%rax,%rbp)
587 jne .L107
588 .L108:
589 popq %rbx
590 popq %rbp
591 popq %r12
592 popq %r13
593 popq %r14
594 leaq .LC15(%rip), %rdi
595 xorl %eax, %eax
596 jmp _dl_debug_printf
597 .L106:
598 leaq .LC16(%rip), %rdi
599 xorl %eax, %eax
600 call _dl_debug_printf
601 jmp .L108
602 .size _dl_show_scope, .-_dl_show_scope
603 .section .rodata.str1.1
604 .LC17:
605 .string "mode & RTLD_NOLOAD"
606 .section .rodata.str1.8
607 .align 8
608 .LC18:
609 .string "opening file=%s [%lu]; direct_opencount=%u\n\n"
610 .section .rodata.str1.1
611 .LC19:
612 .string "marking %s [%lu] as NODELETE\n"
613 .section .rodata.str1.8
614 .align 8
615 .LC20:
616 .string "_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT"
617 .align 8
618 .LC21:
619 .string "CPU ISA level is lower than required"
620 .section .rodata.str1.1
621 .LC22:
622 .string "dlopen"
623 .LC23:
624 .string "cannot create scope list"
625 .section .rodata.str1.8
626 .align 8
627 .LC24:
628 .string "activating NODELETE for %s [%lu]\n"
629 .section .rodata.str1.1
630 .LC25:
631 .string "cnt + 1 < imap->l_scope_max"
632 .section .rodata.str1.8
633 .align 8
634 .LC26:
635 .string "TLS generation counter wrapped! Please report this."
636 .section .rodata.str1.1
637 .LC27:
638 .string "imap->l_need_tls_init == 0"
639 .text
640 .p2align 4,,15
641 .type dl_open_worker, @function
642 dl_open_worker:
643 pushq %r15
644 pushq %r14
645 movl $36, %esi
646 pushq %r13
647 pushq %r12
648 movq %rdi, %r12
649 pushq %rbp
650 pushq %rbx
651 subq $72, %rsp
652 movq (%rdi), %r15
653 movl 8(%rdi), %r13d
654 movq %r15, %rdi
655 call strchr
656 testq %rax, %rax
657 je .L265
658 .L121:
659 movq 16(%r12), %rdi
660 movq _dl_ns(%rip), %rbx
661 call _dl_find_dso_for_object
662 testq %rax, %rax
663 movq %rax, %rbp
664 cmove %rbx, %rbp
665 movq 32(%r12), %rbx
666 cmpq $-2, %rbx
667 jne .L122
668 movq 48(%rbp), %rbx
669 movq %rbx, 32(%r12)
670 .L122:
671 leaq (%rbx,%rbx,8), %rax
672 leaq _dl_ns(%rip), %r14
673 movq %rbx, %rsi
674 leaq (%rbx,%rax,2), %rax
675 leaq (%r14,%rax,8), %rax
676 cmpq $0, 32(%rax)
677 movl 28(%rax), %eax
678 movl %eax, 40(%r12)
679 setne 44(%r12)
680 xorl %edi, %edi
681 call _dl_debug_initialize
682 movq 32(%r12), %r9
683 movl %r13d, %r8d
684 xorl %ecx, %ecx
685 orl $268435456, %r8d
686 movl $2, %edx
687 movq %r15, %rsi
688 movq %rbp, %rdi
689 call _dl_map_object
690 testq %rax, %rax
691 movq %rax, %rbx
692 movq %rax, 24(%r12)
693 je .L266
694 testl $1073741824, %r13d
695 jne .L120
696 movl 792(%rax), %eax
697 movl %r13d, %ebp
698 andl $4096, %ebp
699 cmpq $0, 704(%rbx)
700 leal 1(%rax), %ecx
701 movl %ecx, 792(%rbx)
702 jne .L267
703 testl %ebp, %ebp
704 jne .L268
705 .L138:
706 movl %r13d, %r8d
707 xorl %ecx, %ecx
708 xorl %edx, %edx
709 andl $-2013265912, %r8d
710 xorl %esi, %esi
711 movq %rbx, %rdi
712 call _dl_map_object_deps
713 movl 712(%rbx), %edi
714 testl %edi, %edi
715 je .L139
716 xorl %ebp, %ebp
717 jmp .L141
718 .p2align 4,,10
719 .p2align 3
720 .L140:
721 addl $1, %ebp
722 cmpl %ebp, 712(%rbx)
723 jbe .L139
724 .L141:
725 movq 704(%rbx), %rdx
726 movl %ebp, %eax
727 movq (%rdx,%rax,8), %rax
728 movq 40(%rax), %rdi
729 cmpq $0, 744(%rdi)
730 jne .L140
731 xorl %edx, %edx
732 xorl %esi, %esi
733 addl $1, %ebp
734 call _dl_check_map_versions
735 cmpl %ebp, 712(%rbx)
736 ja .L141
737 .p2align 4,,10
738 .p2align 3
739 .L139:
740 movq 32(%r12), %rsi
741 xorl %edi, %edi
742 call _dl_debug_initialize
743 movl $0, 24(%rax)
744 call _dl_debug_state@PLT
745 movl 712(%rbx), %eax
746 movl 280+_dl_x86_cpu_features(%rip), %esi
747 leal -1(%rax), %ebp
748 jmp .L142
749 .p2align 4,,10
750 .p2align 3
751 .L144:
752 movq 976(%rbx), %rdx
753 movl %ebp, %eax
754 movq (%rdx,%rax,8), %rax
755 testb $8, 796(%rax)
756 jne .L143
757 movl 808(%rax), %edx
758 movl %edx, %ecx
759 andl %esi, %ecx
760 cmpl %ecx, %edx
761 jne .L269
762 .L143:
763 subl $1, %ebp
764 .L142:
765 cmpl $-1, %ebp
766 jne .L144
767 testb $2, 1+_dl_debug_mask(%rip)
768 jne .L270
769 .L145:
770 movl _dl_lazy(%rip), %esi
771 movl %r13d, %eax
772 andl $134217729, %eax
773 movl %eax, (%rsp)
774 testl %esi, %esi
775 je .L271
776 .L147:
777 movq 976(%rbx), %rdi
778 xorl %esi, %esi
779 xorl %edx, %edx
780 movq (%rdi), %rcx
781 .p2align 4,,10
782 .p2align 3
783 .L150:
784 movq 40(%rcx), %rcx
785 leal 1(%rsi), %eax
786 testb $4, 796(%rcx)
787 jne .L148
788 cmpl $-1, %ebp
789 movl %eax, %edx
790 cmove %esi, %ebp
791 .L148:
792 movl %eax, %ecx
793 movl %eax, %esi
794 movq (%rdi,%rcx,8), %rcx
795 testq %rcx, %rcx
796 jne .L150
797 cmpl %edx, %ebp
798 leal -1(%rdx), %r15d
799 jnb .L272
800 .p2align 4,,10
801 .p2align 3
802 .L153:
803 movq 976(%rbx), %rdx
804 movl %r15d, %eax
805 movq (%rdx,%rax,8), %rdi
806 movq 40(%rdi), %rax
807 testb $4, 796(%rax)
808 jne .L152
809 movq 920(%rdi), %rsi
810 movl (%rsp), %edx
811 xorl %ecx, %ecx
812 call _dl_relocate_object
813 .L152:
814 movl %r15d, %edx
815 cmpl %edx, %ebp
816 leal -1(%rdx), %r15d
817 jb .L153
818 .L272:
819 movl 712(%rbx), %ecx
820 testl %ecx, %ecx
821 je .L199
822 xorl %r15d, %r15d
823 jmp .L163
824 .p2align 4,,10
825 .p2align 3
826 .L155:
827 movl 712(%rbx), %eax
828 addl $1, %r15d
829 cmpl %eax, %r15d
830 jnb .L273
831 .L163:
832 movq 704(%rbx), %rdx
833 movl %r15d, %eax
834 movq (%rdx,%rax,8), %rbp
835 movzbl 796(%rbp), %eax
836 andl $11, %eax
837 cmpb $10, %al
838 jne .L155
839 movq 920(%rbp), %rsi
840 movq (%rsi), %rax
841 testq %rax, %rax
842 je .L200
843 leaq 704(%rbx), %rdi
844 cmpq %rdi, %rax
845 je .L155
846 leaq 8(%rsi), %rax
847 jmp .L157
848 .p2align 4,,10
849 .p2align 3
850 .L158:
851 addq $8, %rax
852 cmpq %rdi, %rdx
853 je .L155
854 .L157:
855 movq (%rax), %rdx
856 testq %rdx, %rdx
857 jne .L158
858 leaq 1(%rdx), %rax
859 cmpq $0, (%rsi,%rax,8)
860 je .L274
861 .p2align 4,,10
862 .p2align 3
863 .L201:
864 movq %rax, %rdx
865 leaq 1(%rdx), %rax
866 cmpq $0, (%rsi,%rax,8)
867 jne .L201
868 .L274:
869 addq $2, %rdx
870 .L156:
871 movq 912(%rbp), %rdi
872 cmpq %rdx, %rdi
873 ja .L155
874 leaq 880(%rbp), %rax
875 cmpq $3, %rdi
876 movq %rax, 8(%rsp)
877 ja .L208
878 cmpq %rax, %rsi
879 movq %rax, %r9
880 movq $4, (%rsp)
881 je .L208
882 .L160:
883 salq $3, %rdx
884 movq %r9, %rdi
885 call memcpy@PLT
886 movq 920(%rbp), %rdi
887 cmpq %rdi, 8(%rsp)
888 movq %rax, 920(%rbp)
889 je .L162
890 call _dl_scope_free
891 .L162:
892 movq (%rsp), %rax
893 movq %rax, 912(%rbp)
894 jmp .L155
895 .p2align 4,,10
896 .p2align 3
897 .L171:
898 testb %r15b, %r15b
899 jne .L275
900 .L181:
901 cmpb $0, 44(%r12)
902 je .L276
903 .L191:
904 movl 48(%r12), %eax
905 leaq 32(%rsp), %rdx
906 leaq call_dl_init(%rip), %rsi
907 xorl %edi, %edi
908 movq %rbx, 32(%rsp)
909 movl %eax, 40(%rsp)
910 movq 56(%r12), %rax
911 movq %rax, 48(%rsp)
912 movq 64(%r12), %rax
913 movq %rax, 56(%rsp)
914 call _dl_catch_exception
915 movl (%rsp), %eax
916 testl %eax, %eax
917 jne .L277
918 .L192:
919 testb $64, _dl_debug_mask(%rip)
920 je .L120
921 movl 792(%rbx), %ecx
922 movq 48(%rbx), %rdx
923 leaq .LC18(%rip), %rdi
924 movq 8(%rbx), %rsi
925 xorl %eax, %eax
926 call _dl_debug_printf
927 .L120:
928 addq $72, %rsp
929 popq %rbx
930 popq %rbp
931 popq %r12
932 popq %r13
933 popq %r14
934 popq %r15
936 .p2align 4,,10
937 .p2align 3
938 .L265:
939 movq 32(%r12), %rbx
940 cmpq $-2, %rbx
941 je .L121
942 movl $47, %esi
943 movq %r15, %rdi
944 xorl %ebp, %ebp
945 call strchr
946 testq %rax, %rax
947 jne .L122
948 jmp .L121
949 .p2align 4,,10
950 .p2align 3
951 .L273:
952 xorl %r15d, %r15d
953 testl %eax, %eax
954 je .L154
955 xorl %ebp, %ebp
956 jmp .L165
957 .p2align 4,,10
958 .p2align 3
959 .L164:
960 addl $1, %ebp
961 cmpl 712(%rbx), %ebp
962 jnb .L154
963 .L165:
964 movq 704(%rbx), %rdx
965 movl %ebp, %eax
966 movq (%rdx,%rax,8), %rdi
967 testb $8, 796(%rdi)
968 jne .L164
969 cmpq $0, 1088(%rdi)
970 je .L164
971 xorl %esi, %esi
972 addl $1, %ebp
973 movl $1, %r15d
974 call _dl_add_to_slotinfo
975 cmpl 712(%rbx), %ebp
976 jb .L165
977 .p2align 4,,10
978 .p2align 3
979 .L154:
980 andl $256, %r13d
981 movl %r13d, (%rsp)
982 jne .L278
983 .L166:
984 movq 48(%rbx), %rax
985 leaq (%rax,%rax,8), %rdx
986 leaq (%rax,%rdx,2), %rax
987 movq (%r14,%rax,8), %rbp
988 testq %rbp, %rbp
989 je .L167
990 leaq .LC24(%rip), %r13
991 .p2align 4,,10
992 .p2align 3
993 .L170:
994 cmpb $0, 800(%rbp)
995 je .L168
996 testb $64, _dl_debug_mask(%rip)
997 jne .L279
998 .L169:
999 movb $1, 799(%rbp)
1000 movb $0, 800(%rbp)
1001 .L168:
1002 movq 24(%rbp), %rbp
1003 testq %rbp, %rbp
1004 jne .L170
1005 .L167:
1006 movl 712(%rbx), %ecx
1007 testl %ecx, %ecx
1008 movl %ecx, %r13d
1009 je .L171
1010 xorl %ebp, %ebp
1011 jmp .L180
1012 .p2align 4,,10
1013 .p2align 3
1014 .L172:
1015 testb $2, 1+_dl_debug_mask(%rip)
1016 jne .L259
1017 .L263:
1018 movl 712(%rbx), %ecx
1019 .L176:
1020 addl $1, %ebp
1021 movl %ecx, %r13d
1022 cmpl %ecx, %ebp
1023 jnb .L171
1024 .L180:
1025 movq 704(%rbx), %rdx
1026 movl %ebp, %eax
1027 xorl %esi, %esi
1028 movq (%rdx,%rax,8), %rdi
1029 movzbl 796(%rdi), %eax
1030 andl $11, %eax
1031 cmpb $10, %al
1032 jne .L172
1033 movq 920(%rdi), %r8
1034 movq (%r8), %rax
1035 testq %rax, %rax
1036 je .L205
1037 leaq 704(%rbx), %rsi
1038 cmpq %rsi, %rax
1039 je .L176
1040 leaq 8(%r8), %rax
1041 jmp .L175
1042 .p2align 4,,10
1043 .p2align 3
1044 .L177:
1045 addq $8, %rax
1046 cmpq %rdx, %rsi
1047 je .L176
1048 .L175:
1049 movq (%rax), %rdx
1050 testq %rdx, %rdx
1051 jne .L177
1052 xorl %eax, %eax
1053 jmp .L178
1054 .p2align 4,,10
1055 .p2align 3
1056 .L206:
1057 movq %rsi, %rax
1058 .L178:
1059 leaq 1(%rax), %rsi
1060 cmpq $0, (%r8,%rsi,8)
1061 leaq 0(,%rsi,8), %rdx
1062 jne .L206
1063 addq $2, %rax
1064 .L173:
1065 cmpq %rax, 912(%rdi)
1066 jbe .L280
1067 movq $0, (%r8,%rax,8)
1068 testb $2, 1+_dl_debug_mask(%rip)
1069 movq 920(%rdi), %rax
1070 leaq 704(%rbx), %rcx
1071 movq %rcx, (%rax,%rdx)
1072 je .L263
1073 .p2align 4,,10
1074 .p2align 3
1075 .L259:
1076 call _dl_show_scope
1077 jmp .L263
1078 .p2align 4,,10
1079 .p2align 3
1080 .L266:
1081 andl $4, %r13d
1082 jne .L120
1083 leaq __PRETTY_FUNCTION__.11235(%rip), %rcx
1084 leaq .LC0(%rip), %rsi
1085 leaq .LC17(%rip), %rdi
1086 movl $533, %edx
1087 call __assert_fail
1088 .p2align 4,,10
1089 .p2align 3
1090 .L269:
1091 movq 8(%rax), %rsi
1092 leaq .LC21(%rip), %rcx
1093 leaq .LC22(%rip), %rdx
1094 xorl %edi, %edi
1095 call _dl_signal_error
1096 .p2align 4,,10
1097 .p2align 3
1098 .L271:
1099 movl %r13d, %eax
1100 andl $134217728, %eax
1101 movl %eax, (%rsp)
1102 jmp .L147
1103 .p2align 4,,10
1104 .p2align 3
1105 .L278:
1106 movq %rbx, %rdi
1107 call add_to_global_resize
1108 jmp .L166
1109 .p2align 4,,10
1110 .p2align 3
1111 .L275:
1112 movl 712(%rbx), %edx
1113 testl %edx, %edx
1114 je .L182
1115 xorl %ebp, %ebp
1116 jmp .L187
1117 .p2align 4,,10
1118 .p2align 3
1119 .L264:
1120 movl 712(%rbx), %edx
1121 .L184:
1122 addl $1, %ebp
1123 cmpl %edx, %ebp
1124 jnb .L182
1125 .L187:
1126 movq 704(%rbx), %rcx
1127 movl %ebp, %edx
1128 movq (%rcx,%rdx,8), %r15
1129 testb $8, 796(%r15)
1130 jne .L264
1131 cmpq $0, 1088(%r15)
1132 je .L264
1133 movl $1, %esi
1134 movq %r15, %rdi
1135 call _dl_add_to_slotinfo
1136 testb $4, 797(%r15)
1137 movl 712(%rbx), %edx
1138 je .L184
1139 cmpl %r13d, %edx
1140 cmove %ebp, %r13d
1141 jmp .L184
1142 .p2align 4,,10
1143 .p2align 3
1144 .L182:
1145 addq $1, _dl_tls_generation(%rip)
1146 je .L188
1147 cmpl %r13d, 712(%rbx)
1148 ja .L189
1149 jmp .L181
1150 .p2align 4,,10
1151 .p2align 3
1152 .L190:
1153 addl $1, %r13d
1154 cmpl 712(%rbx), %r13d
1155 jnb .L181
1156 .L189:
1157 movq 704(%rbx), %rcx
1158 movl %r13d, %edx
1159 movq (%rcx,%rdx,8), %rbp
1160 movzwl 796(%rbp), %edx
1161 andw $1032, %dx
1162 cmpw $1024, %dx
1163 jne .L190
1164 cmpq $0, 1088(%rbp)
1165 je .L190
1166 andb $-5, 797(%rbp)
1167 movq %rbp, %rdi
1168 call *_dl_init_static_tls(%rip)
1169 testb $4, 797(%rbp)
1170 je .L190
1171 leaq __PRETTY_FUNCTION__.11204(%rip), %rcx
1172 leaq .LC0(%rip), %rsi
1173 leaq .LC27(%rip), %rdi
1174 movl $430, %edx
1175 call __assert_fail
1176 .p2align 4,,10
1177 .p2align 3
1178 .L277:
1179 movq %rbx, %rdi
1180 call add_to_global_update
1181 jmp .L192
1182 .p2align 4,,10
1183 .p2align 3
1184 .L276:
1185 movq 32(%r12), %rax
1186 xorl %esi, %esi
1187 leaq (%rax,%rax,8), %rdx
1188 leaq (%rax,%rdx,2), %rax
1189 movq 32(%r14,%rax,8), %rdi
1190 call _dl_call_libc_early_init
1191 jmp .L191
1192 .p2align 4,,10
1193 .p2align 3
1194 .L279:
1195 movq 48(%rbp), %rdx
1196 movq 8(%rbp), %rsi
1197 movq %r13, %rdi
1198 xorl %eax, %eax
1199 call _dl_debug_printf
1200 jmp .L169
1201 .p2align 4,,10
1202 .p2align 3
1203 .L205:
1204 movl $1, %eax
1205 xorl %edx, %edx
1206 xorl %esi, %esi
1207 jmp .L173
1208 .p2align 4,,10
1209 .p2align 3
1210 .L200:
1211 movl $1, %edx
1212 jmp .L156
1213 .p2align 4,,10
1214 .p2align 3
1215 .L267:
1216 testb $64, _dl_debug_mask(%rip)
1217 jne .L281
1218 .L129:
1219 andl $256, %r13d
1220 je .L130
1221 testb $16, 796(%rbx)
1222 je .L282
1223 testl %ebp, %ebp
1224 je .L137
1225 .L132:
1226 testb $64, _dl_debug_mask(%rip)
1227 jne .L194
1228 movb $1, 799(%rbx)
1229 .L136:
1230 movzbl 796(%rbx), %eax
1231 andl $16, %eax
1232 testb %al, %al
1233 jne .L137
1234 movq %rbx, %rdi
1235 call add_to_global_update
1236 jmp .L137
1237 .p2align 4,,10
1238 .p2align 3
1239 .L268:
1240 movb $1, 800(%rbx)
1241 jmp .L138
1242 .L130:
1243 testl %ebp, %ebp
1244 jne .L283
1245 .L137:
1246 movq 32(%r12), %rsi
1247 xorl %edi, %edi
1248 call _dl_debug_initialize
1249 movl 24(%rax), %r8d
1250 testl %r8d, %r8d
1251 je .L120
1252 leaq __PRETTY_FUNCTION__.11235(%rip), %rcx
1253 leaq .LC0(%rip), %rsi
1254 leaq .LC20(%rip), %rdi
1255 movl $573, %edx
1256 call __assert_fail
1257 .p2align 4,,10
1258 .p2align 3
1259 .L270:
1260 xorl %esi, %esi
1261 movq %rbx, %rdi
1262 call _dl_show_scope
1263 jmp .L145
1264 .L208:
1265 leaq (%rdi,%rdi), %rax
1266 salq $4, %rdi
1267 movq %rdx, 24(%rsp)
1268 movq %rsi, 16(%rsp)
1269 movq %rax, (%rsp)
1270 call malloc@PLT
1271 testq %rax, %rax
1272 movq %rax, %r9
1273 movq 16(%rsp), %rsi
1274 movq 24(%rsp), %rdx
1275 jne .L160
1276 leaq .LC23(%rip), %rcx
1277 leaq .LC22(%rip), %rsi
1278 xorl %edx, %edx
1279 movl $12, %edi
1280 call _dl_signal_error
1281 .p2align 4,,10
1282 .p2align 3
1283 .L199:
1284 xorl %r15d, %r15d
1285 jmp .L154
1286 .L188:
1287 leaq .LC26(%rip), %rdi
1288 xorl %eax, %eax
1289 call _dl_fatal_printf@PLT
1290 .L282:
1291 movq %rbx, %rdi
1292 call add_to_global_resize
1293 testl %ebp, %ebp
1294 je .L136
1295 jmp .L132
1296 .p2align 4,,10
1297 .p2align 3
1298 .L281:
1299 movq 48(%rbx), %rdx
1300 movq 8(%rbx), %rsi
1301 leaq .LC18(%rip), %rdi
1302 xorl %eax, %eax
1303 call _dl_debug_printf
1304 jmp .L129
1305 .L283:
1306 testb $64, _dl_debug_mask(%rip)
1307 jne .L194
1308 movb $1, 799(%rbx)
1309 jmp .L137
1310 .L194:
1311 cmpb $0, 799(%rbx)
1312 je .L284
1313 .L135:
1314 testl %r13d, %r13d
1315 movb $1, 799(%rbx)
1316 je .L137
1317 jmp .L136
1318 .L284:
1319 movq 48(%rbx), %rdx
1320 movq 8(%rbx), %rsi
1321 leaq .LC19(%rip), %rdi
1322 xorl %eax, %eax
1323 call _dl_debug_printf
1324 jmp .L135
1325 .L280:
1326 leaq __PRETTY_FUNCTION__.11180(%rip), %rcx
1327 leaq .LC0(%rip), %rsi
1328 leaq .LC25(%rip), %rdi
1329 movl $334, %edx
1330 call __assert_fail
1331 .size dl_open_worker, .-dl_open_worker
1332 .section .rodata.str1.16,"aMS",@progbits,1
1333 .align 16
1334 .type __PRETTY_FUNCTION__.11125, @object
1335 .size __PRETTY_FUNCTION__.11125, 21
1336 __PRETTY_FUNCTION__.11125:
1337 .string "add_to_global_update"
1338 .align 16
1339 .type __PRETTY_FUNCTION__.11204, @object
1340 .size __PRETTY_FUNCTION__.11204, 20
1341 __PRETTY_FUNCTION__.11204:
1342 .string "update_tls_slotinfo"
1343 .section .rodata.str1.8
1344 .align 8
1345 .type __PRETTY_FUNCTION__.11180, @object
1346 .size __PRETTY_FUNCTION__.11180, 14
1347 __PRETTY_FUNCTION__.11180:
1348 .string "update_scopes"
1349 .align 8
1350 .type __PRETTY_FUNCTION__.11235, @object
1351 .size __PRETTY_FUNCTION__.11235, 15
1352 __PRETTY_FUNCTION__.11235:
1353 .string "dl_open_worker"
1354 .align 8
1355 .type __PRETTY_FUNCTION__.11275, @object
1356 .size __PRETTY_FUNCTION__.11275, 9
1357 __PRETTY_FUNCTION__.11275:
1358 .string "_dl_open"
1359 .section .rodata.str1.16
1360 .align 16
1361 .type __PRETTY_FUNCTION__.11135, @object
1362 .size __PRETTY_FUNCTION__.11135, 24
1363 __PRETTY_FUNCTION__.11135:
1364 .string "_dl_find_dso_for_object"
1365 .weak __pthread_mutex_unlock
1366 .weak __pthread_mutex_lock
1367 .hidden _dl_call_libc_early_init
1368 .hidden _dl_add_to_slotinfo
1369 .hidden _dl_scope_free
1370 .hidden _dl_relocate_object
1371 .hidden _dl_check_map_versions
1372 .hidden _dl_map_object_deps
1373 .hidden _dl_map_object
1374 .hidden strchr
1375 .hidden _dl_debug_printf_c
1376 .hidden _dl_signal_exception
1377 .hidden _dl_close_worker
1378 .hidden _dl_debug_initialize
1379 .hidden _dl_unload_cache
1380 .hidden _dl_catch_exception
1381 .hidden _dl_addr_inside_object
1382 .hidden __thread_gscope_wait
1383 .hidden _dl_signal_error
1384 .hidden _dl_init
1385 .hidden __assert_fail
1386 .hidden _dl_debug_printf