mirror of
https://github.com/fluencelabs/musl
synced 2025-06-15 07:51:42 +00:00
restore use of .type in asm, but use modern @function (vs %function)
this seems to be necessary to make the linker accept the functions in a shared library (perhaps to generate PLT entries?) strictly speaking libc-internal asm should not need it. i might clean that up later.
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
.global __syscall
|
.global __syscall
|
||||||
|
.type __syscall,@function
|
||||||
__syscall:
|
__syscall:
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
pushl %esi
|
pushl %esi
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
.global __syscall
|
.global __syscall
|
||||||
|
.type __syscall,@function
|
||||||
__syscall:
|
__syscall:
|
||||||
movq %rdi,%rax
|
movq %rdi,%rax
|
||||||
movq %rsi,%rdi
|
movq %rsi,%rdi
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
.global _longjmp
|
.global _longjmp
|
||||||
.global longjmp
|
.global longjmp
|
||||||
|
.type _longjmp,@function
|
||||||
|
.type longjmp,@function
|
||||||
_longjmp:
|
_longjmp:
|
||||||
longjmp:
|
longjmp:
|
||||||
mov 4(%esp),%edx
|
mov 4(%esp),%edx
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
.global __setjmp
|
.global __setjmp
|
||||||
.global _setjmp
|
.global _setjmp
|
||||||
.global setjmp
|
.global setjmp
|
||||||
|
.type __setjmp,@function
|
||||||
|
.type _setjmp,@function
|
||||||
|
.type setjmp,@function
|
||||||
__setjmp:
|
__setjmp:
|
||||||
_setjmp:
|
_setjmp:
|
||||||
setjmp:
|
setjmp:
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
||||||
.global _longjmp
|
.global _longjmp
|
||||||
.global longjmp
|
.global longjmp
|
||||||
|
.type _longjmp,@function
|
||||||
|
.type longjmp,@function
|
||||||
_longjmp:
|
_longjmp:
|
||||||
longjmp:
|
longjmp:
|
||||||
mov %rsi,%rax /* val will be longjmp return */
|
mov %rsi,%rax /* val will be longjmp return */
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
.global __setjmp
|
.global __setjmp
|
||||||
.global _setjmp
|
.global _setjmp
|
||||||
.global setjmp
|
.global setjmp
|
||||||
|
.type __setjmp,@function
|
||||||
|
.type _setjmp,@function
|
||||||
|
.type setjmp,@function
|
||||||
__setjmp:
|
__setjmp:
|
||||||
_setjmp:
|
_setjmp:
|
||||||
setjmp:
|
setjmp:
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
.global __restore
|
.global __restore
|
||||||
|
.type __restore,@function
|
||||||
__restore:
|
__restore:
|
||||||
popl %eax
|
popl %eax
|
||||||
movl $119, %eax
|
movl $119, %eax
|
||||||
int $0x80
|
int $0x80
|
||||||
|
|
||||||
.global __restore_rt
|
.global __restore_rt
|
||||||
|
.type __restore_rt,@function
|
||||||
__restore_rt:
|
__restore_rt:
|
||||||
movl $173, %eax
|
movl $173, %eax
|
||||||
int $0x80
|
int $0x80
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
.global sigsetjmp
|
.global sigsetjmp
|
||||||
|
.type sigsetjmp,@function
|
||||||
sigsetjmp:
|
sigsetjmp:
|
||||||
mov 4(%esp),%eax
|
mov 4(%esp),%eax
|
||||||
mov 8(%esp),%ecx
|
mov 8(%esp),%ecx
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
.global __restore_rt
|
.global __restore_rt
|
||||||
.global __restore
|
.global __restore
|
||||||
|
.type __restore_rt,@function
|
||||||
|
.type __restore,@function
|
||||||
__restore_rt:
|
__restore_rt:
|
||||||
__restore:
|
__restore:
|
||||||
movl $15, %eax
|
movl $15, %eax
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
||||||
.global sigsetjmp
|
.global sigsetjmp
|
||||||
|
.type sigsetjmp,@function
|
||||||
sigsetjmp:
|
sigsetjmp:
|
||||||
andl %esi,%esi
|
andl %esi,%esi
|
||||||
movq %rsi,64(%rdi)
|
movq %rsi,64(%rdi)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __set_thread_area
|
.global __set_thread_area
|
||||||
|
.type __set_thread_area,@function
|
||||||
__set_thread_area:
|
__set_thread_area:
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
movl 8(%esp),%ecx
|
movl 8(%esp),%ecx
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __unmapself
|
.global __unmapself
|
||||||
|
.type __unmapself,@function
|
||||||
__unmapself:
|
__unmapself:
|
||||||
movl $91,%eax
|
movl $91,%eax
|
||||||
movl 4(%esp),%ebx
|
movl 4(%esp),%ebx
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __pthread_register_cancel
|
.global __pthread_register_cancel
|
||||||
|
.type __pthread_register_cancel,@function
|
||||||
__pthread_register_cancel:
|
__pthread_register_cancel:
|
||||||
pushl %eax
|
pushl %eax
|
||||||
call __pthread_register_cancel_3
|
call __pthread_register_cancel_3
|
||||||
@ -7,6 +8,7 @@ __pthread_register_cancel:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.global __pthread_unregister_cancel
|
.global __pthread_unregister_cancel
|
||||||
|
.type __pthread_unregister_cancel,@function
|
||||||
__pthread_unregister_cancel:
|
__pthread_unregister_cancel:
|
||||||
pushl %eax
|
pushl %eax
|
||||||
call __pthread_unregister_cancel_3
|
call __pthread_unregister_cancel_3
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __pthread_unwind_next
|
.global __pthread_unwind_next
|
||||||
|
.type __pthread_unwind_next,@function
|
||||||
__pthread_unwind_next:
|
__pthread_unwind_next:
|
||||||
pushl %eax
|
pushl %eax
|
||||||
call __pthread_unwind_next_3
|
call __pthread_unwind_next_3
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __uniclone
|
.global __uniclone
|
||||||
|
.type __uniclone,@function
|
||||||
__uniclone:
|
__uniclone:
|
||||||
movl 4(%esp),%ecx
|
movl 4(%esp),%ecx
|
||||||
subl $24,%ecx
|
subl $24,%ecx
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __syscall_cp_asm
|
.global __syscall_cp_asm
|
||||||
|
.type __syscall_cp_asm,@function
|
||||||
__syscall_cp_asm:
|
__syscall_cp_asm:
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
pushl %esi
|
pushl %esi
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
||||||
.text
|
.text
|
||||||
.global __set_thread_area
|
.global __set_thread_area
|
||||||
|
.type __set_thread_area,@function
|
||||||
__set_thread_area:
|
__set_thread_area:
|
||||||
mov %rdi,%rsi /* shift for syscall */
|
mov %rdi,%rsi /* shift for syscall */
|
||||||
movl $0x1002,%edi /* SET_FS register */
|
movl $0x1002,%edi /* SET_FS register */
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
||||||
.text
|
.text
|
||||||
.global __unmapself
|
.global __unmapself
|
||||||
|
.type __unmapself,@function
|
||||||
__unmapself:
|
__unmapself:
|
||||||
movl $11,%eax /* SYS_munmap */
|
movl $11,%eax /* SYS_munmap */
|
||||||
syscall /* munmap(arg2,arg3) */
|
syscall /* munmap(arg2,arg3) */
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
/* Copyright 2011 Nicholas J. Kain, licensed GNU LGPL 2.1 or later */
|
||||||
.text
|
.text
|
||||||
.global __uniclone
|
.global __uniclone
|
||||||
|
.type __uniclone,@function
|
||||||
/* rdi = child_stack, rsi = start, rdx = pthread_struct */
|
/* rdi = child_stack, rsi = start, rdx = pthread_struct */
|
||||||
__uniclone:
|
__uniclone:
|
||||||
subq $8,%rsp /* pad parent stack to prevent branch later */
|
subq $8,%rsp /* pad parent stack to prevent branch later */
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.text
|
.text
|
||||||
.global __syscall_cp_asm
|
.global __syscall_cp_asm
|
||||||
|
.type __syscall_cp_asm,@function
|
||||||
__syscall_cp_asm:
|
__syscall_cp_asm:
|
||||||
lea 1f(%rip),%rax
|
lea 1f(%rip),%rax
|
||||||
mov %rax,8(%rdi)
|
mov %rax,8(%rdi)
|
||||||
|
Reference in New Issue
Block a user