diff options
| -rw-r--r-- | ldso/ldso/aarch64/elfinterp.c | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/aarch64/clone.S | 3 | ||||
| -rw-r--r-- | libc/sysdeps/linux/aarch64/vfork.S | 8 | 
3 files changed, 8 insertions, 5 deletions
| diff --git a/ldso/ldso/aarch64/elfinterp.c b/ldso/ldso/aarch64/elfinterp.c index 2b5e185d8..adabafaad 100644 --- a/ldso/ldso/aarch64/elfinterp.c +++ b/ldso/ldso/aarch64/elfinterp.c @@ -233,7 +233,7 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct r_scope_elem *scope,  					else  #endif  					{ -					        td->arg = symbol_addr + tls_tpnt->l_tls_offset; +					        td->arg = (void*)(symbol_addr + tls_tpnt->l_tls_offset);  					        td->entry = _dl_tlsdesc_return;  					}  				} diff --git a/libc/sysdeps/linux/aarch64/clone.S b/libc/sysdeps/linux/aarch64/clone.S index 74984aabb..e3311d184 100644 --- a/libc/sysdeps/linux/aarch64/clone.S +++ b/libc/sysdeps/linux/aarch64/clone.S @@ -69,7 +69,8 @@ thread_start:  	blr	x10  	/* We are done, pass the return value through x0.  */ -	b	HIDDEN_JUMPTARGET(_exit) +	mov	x8, #SYS_ify(exit) +	svc	0x0  	cfi_endproc  	.size thread_start, .-thread_start diff --git a/libc/sysdeps/linux/aarch64/vfork.S b/libc/sysdeps/linux/aarch64/vfork.S index 9a8fd469a..7a4ff2b53 100644 --- a/libc/sysdeps/linux/aarch64/vfork.S +++ b/libc/sysdeps/linux/aarch64/vfork.S @@ -23,7 +23,7 @@     replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,     and the process ID of the new process to the old process.  */ -ENTRY (vfork) +ENTRY (__vfork)  	mov	x0, #0x4111	/* CLONE_VM | CLONE_VFORK | SIGCHLD */  	mov	x1, sp @@ -33,5 +33,7 @@ ENTRY (vfork)  	b.cs    .Lsyscall_error  	RET -PSEUDO_END (vfork) -libc_hidden_def (vfork) +PSEUDO_END (__vfork) +libc_hidden_def(vfork) + +weak_alias (__vfork, vfork) | 
