Add cfi directives to all arm assembly.
Since the ENTRY/END macros now have .cfi_startproc/.cfi_endproc, most of the custom arm assembly has no unwind information. Adding the proper cfi directives for these and removing the arm directives. Update the gensyscalls.py script to add these cfi directives for the generated assembly. Also fix the references to non-uapi headers to the proper uapi header. In addition, remove the kill.S, tkill.S, tgkill.S for arm since they are not needed at all. The unwinder (libunwind) is able to properly unwind using the normal abort. After this change, I can unwind through the system calls again. Bug: 11559337 Bug: 11825869 Bug: 11321283 Change-Id: I18b48089ef2d000a67913ce6febc6544bbe934a3
This commit is contained in:
parent
ab0b0cdf1b
commit
ed45970ac5
@ -57,10 +57,9 @@ int setresuid:setresuid(uid_t, uid_t, uid_t) aarch64,mips,x86_64
|
|||||||
int setresgid:setresgid32(gid_t, gid_t, gid_t) arm,x86
|
int setresgid:setresgid32(gid_t, gid_t, gid_t) arm,x86
|
||||||
int setresgid:setresgid(gid_t, gid_t, gid_t) aarch64,mips,x86_64
|
int setresgid:setresgid(gid_t, gid_t, gid_t) aarch64,mips,x86_64
|
||||||
void* __brk:brk(void*) all
|
void* __brk:brk(void*) all
|
||||||
# See comments in kill.S to understand why we don't generate ARM stubs for kill/tkill/tgkill.
|
int kill(pid_t, int) all
|
||||||
int kill(pid_t, int) aarch64,mips,x86,x86_64
|
int tkill(pid_t tid, int sig) all
|
||||||
int tkill(pid_t tid, int sig) aarch64,mips,x86,x86_64
|
int tgkill(pid_t tgid, pid_t tid, int sig) all
|
||||||
int tgkill(pid_t tgid, pid_t tid, int sig) aarch64,mips,x86,x86_64
|
|
||||||
int __ptrace:ptrace(int request, int pid, void* addr, void* data) all
|
int __ptrace:ptrace(int request, int pid, void* addr, void* data) all
|
||||||
int __set_thread_area:set_thread_area(void* user_desc) mips,x86
|
int __set_thread_area:set_thread_area(void* user_desc) mips,x86
|
||||||
int __getpriority:getpriority(int, int) all
|
int __getpriority:getpriority(int, int) all
|
||||||
|
@ -6,7 +6,6 @@ _LIBC_ARCH_COMMON_SRC_FILES := \
|
|||||||
arch-arm/bionic/_exit_with_stack_teardown.S \
|
arch-arm/bionic/_exit_with_stack_teardown.S \
|
||||||
arch-arm/bionic/futex_arm.S \
|
arch-arm/bionic/futex_arm.S \
|
||||||
arch-arm/bionic/__get_sp.S \
|
arch-arm/bionic/__get_sp.S \
|
||||||
arch-arm/bionic/kill.S \
|
|
||||||
arch-arm/bionic/libgcc_compat.c \
|
arch-arm/bionic/libgcc_compat.c \
|
||||||
arch-arm/bionic/memcmp16.S \
|
arch-arm/bionic/memcmp16.S \
|
||||||
arch-arm/bionic/memcmp.S \
|
arch-arm/bionic/memcmp.S \
|
||||||
@ -14,8 +13,6 @@ _LIBC_ARCH_COMMON_SRC_FILES := \
|
|||||||
arch-arm/bionic/setjmp.S \
|
arch-arm/bionic/setjmp.S \
|
||||||
arch-arm/bionic/sigsetjmp.S \
|
arch-arm/bionic/sigsetjmp.S \
|
||||||
arch-arm/bionic/syscall.S \
|
arch-arm/bionic/syscall.S \
|
||||||
arch-arm/bionic/tgkill.S \
|
|
||||||
arch-arm/bionic/tkill.S \
|
|
||||||
|
|
||||||
# These are used by the static and dynamic versions of the libc
|
# These are used by the static and dynamic versions of the libc
|
||||||
# respectively.
|
# respectively.
|
||||||
|
@ -31,10 +31,13 @@
|
|||||||
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
|
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
|
||||||
ENTRY(__bionic_clone)
|
ENTRY(__bionic_clone)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
|
|
||||||
# save registers to parent stack
|
# save registers to parent stack
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
|
|
||||||
# load extra parameters
|
# load extra parameters
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
@ -51,12 +54,19 @@ ENTRY(__bionic_clone)
|
|||||||
|
|
||||||
# In the parent, reload saved registers then either return or set errno.
|
# In the parent, reload saved registers then either return or set errno.
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
b __set_errno
|
b __set_errno
|
||||||
|
|
||||||
1: # The child.
|
1: # The child.
|
||||||
|
# Re-add the unwind directives that were reset from above.
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldr r0, [sp, #-4]
|
ldr r0, [sp, #-4]
|
||||||
ldr r1, [sp, #-8]
|
ldr r1, [sp, #-8]
|
||||||
b __bionic_clone_entry
|
b __bionic_clone_entry
|
||||||
|
@ -36,7 +36,9 @@
|
|||||||
* sequence when the crash happens.
|
* sequence when the crash happens.
|
||||||
*/
|
*/
|
||||||
ENTRY(abort)
|
ENTRY(abort)
|
||||||
.save {r3, r14}
|
|
||||||
stmfd sp!, {r3, r14}
|
stmfd sp!, {r3, r14}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r3, 0
|
||||||
|
.cfi_rel_offset r14, 4
|
||||||
bl PIC_SYM(_C_LABEL(__libc_android_abort), PLT)
|
bl PIC_SYM(_C_LABEL(__libc_android_abort), PLT)
|
||||||
END(abort)
|
END(abort)
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 The Android Open Source Project
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
||||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <private/bionic_asm.h>
|
|
||||||
|
|
||||||
/* unlike our auto-generated syscall stubs, this code saves lr
|
|
||||||
on the stack, as well as a few other registers. this makes
|
|
||||||
our stack unwinder happy, when we generate debug stack
|
|
||||||
traces after the C library or other parts of the system
|
|
||||||
abort due to a fatal runtime error (e.g. detection
|
|
||||||
of a corrupted malloc heap).
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(kill)
|
|
||||||
stmfd sp!, {r4-r7, ip, lr}
|
|
||||||
ldr r7, =__NR_kill
|
|
||||||
swi #0
|
|
||||||
ldmfd sp!, {r4-r7, ip, lr}
|
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
|
||||||
bxls lr
|
|
||||||
neg r0, r0
|
|
||||||
b __set_errno
|
|
||||||
END(kill)
|
|
@ -107,9 +107,11 @@ ENTRY(memcmp)
|
|||||||
bmi 10f
|
bmi 10f
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.save {r4, lr}
|
|
||||||
/* save registers */
|
/* save registers */
|
||||||
stmfd sp!, {r4, lr}
|
stmfd sp!, {r4, lr}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset lr, 4
|
||||||
|
|
||||||
/* since r0 hold the result, move the first source
|
/* since r0 hold the result, move the first source
|
||||||
* pointer somewhere else
|
* pointer somewhere else
|
||||||
|
@ -74,9 +74,11 @@ ENTRY(__memcmp16)
|
|||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
.save {r4, lr}
|
|
||||||
/* save registers */
|
/* save registers */
|
||||||
0: stmfd sp!, {r4, lr}
|
0: stmfd sp!, {r4, lr}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset lr, 4
|
||||||
|
|
||||||
/* align first pointer to word boundary */
|
/* align first pointer to word boundary */
|
||||||
tst r3, #2
|
tst r3, #2
|
||||||
|
@ -51,12 +51,16 @@
|
|||||||
ENTRY(setjmp)
|
ENTRY(setjmp)
|
||||||
/* Block all signals and retrieve the old signal mask */
|
/* Block all signals and retrieve the old signal mask */
|
||||||
stmfd sp!, {r0, r14}
|
stmfd sp!, {r0, r14}
|
||||||
|
.cfi_def_cfa_offset 8
|
||||||
|
.cfi_rel_offset r0, 0
|
||||||
|
.cfi_rel_offset r14, 4
|
||||||
mov r0, #0x00000000
|
mov r0, #0x00000000
|
||||||
|
|
||||||
bl PIC_SYM(_C_LABEL(sigblock), PLT)
|
bl PIC_SYM(_C_LABEL(sigblock), PLT)
|
||||||
mov r1, r0
|
mov r1, r0
|
||||||
|
|
||||||
ldmfd sp!, {r0, r14}
|
ldmfd sp!, {r0, r14}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
|
|
||||||
/* Store signal mask */
|
/* Store signal mask */
|
||||||
str r1, [r0, #(_JB_SIGMASK * 4)]
|
str r1, [r0, #(_JB_SIGMASK * 4)]
|
||||||
@ -96,13 +100,20 @@ ENTRY(longjmp)
|
|||||||
|
|
||||||
/* Set signal mask */
|
/* Set signal mask */
|
||||||
stmfd sp!, {r0, r1, r14}
|
stmfd sp!, {r0, r1, r14}
|
||||||
|
.cfi_def_cfa_offset 12
|
||||||
|
.cfi_rel_offset r0, 0
|
||||||
|
.cfi_rel_offset r1, 4
|
||||||
|
.cfi_rel_offset r14, 8
|
||||||
sub sp, sp, #4 /* align the stack */
|
sub sp, sp, #4 /* align the stack */
|
||||||
|
.cfi_adjust_cfa_offset 4
|
||||||
|
|
||||||
mov r0, r2
|
mov r0, r2
|
||||||
bl PIC_SYM(_C_LABEL(sigsetmask), PLT)
|
bl PIC_SYM(_C_LABEL(sigsetmask), PLT)
|
||||||
|
|
||||||
add sp, sp, #4 /* unalign the stack */
|
add sp, sp, #4 /* unalign the stack */
|
||||||
|
.cfi_adjust_cfa_offset -4
|
||||||
ldmfd sp!, {r0, r1, r14}
|
ldmfd sp!, {r0, r1, r14}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
|
|
||||||
#ifdef __ARM_HAVE_VFP
|
#ifdef __ARM_HAVE_VFP
|
||||||
/* Restore floating-point registers */
|
/* Restore floating-point registers */
|
||||||
|
@ -31,6 +31,11 @@
|
|||||||
ENTRY(syscall)
|
ENTRY(syscall)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
mov r7, r0
|
mov r7, r0
|
||||||
mov r0, r1
|
mov r0, r1
|
||||||
mov r1, r2
|
mov r1, r2
|
||||||
@ -38,6 +43,7 @@ ENTRY(syscall)
|
|||||||
ldmfd ip, {r3, r4, r5, r6}
|
ldmfd ip, {r3, r4, r5, r6}
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 The Android Open Source Project
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
||||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <private/bionic_asm.h>
|
|
||||||
|
|
||||||
/* unlike our auto-generated syscall stubs, this code saves lr
|
|
||||||
on the stack, as well as a few other registers. this makes
|
|
||||||
our stack unwinder happy, when we generate debug stack
|
|
||||||
traces after the C library or other parts of the system
|
|
||||||
abort due to a fatal runtime error (e.g. detection
|
|
||||||
of a corrupted malloc heap).
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(tgkill)
|
|
||||||
.save {r4-r7, ip, lr}
|
|
||||||
stmfd sp!, {r4-r7, ip, lr}
|
|
||||||
ldr r7, =__NR_tgkill
|
|
||||||
swi #0
|
|
||||||
ldmfd sp!, {r4-r7, ip, lr}
|
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
|
||||||
bxls lr
|
|
||||||
neg r0, r0
|
|
||||||
b __set_errno
|
|
||||||
END(tgkill)
|
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 The Android Open Source Project
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
||||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <private/bionic_asm.h>
|
|
||||||
|
|
||||||
/* unlike our auto-generated syscall stubs, this code saves lr
|
|
||||||
on the stack, as well as a few other registers. this makes
|
|
||||||
our stack unwinder happy, when we generate debug stack
|
|
||||||
traces after the C library or other parts of the system
|
|
||||||
abort due to a fatal runtime error (e.g. detection
|
|
||||||
of a corrupted malloc heap).
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(tkill)
|
|
||||||
stmfd sp!, {r4-r7, ip, lr}
|
|
||||||
ldr r7, =__NR_tkill
|
|
||||||
swi #0
|
|
||||||
ldmfd sp!, {r4-r7, ip, lr}
|
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
|
||||||
bxls lr
|
|
||||||
neg r0, r0
|
|
||||||
b __set_errno
|
|
||||||
END(tkill)
|
|
@ -100,6 +100,7 @@ syscall_src += arch-arm/syscalls/inotify_init1.S
|
|||||||
syscall_src += arch-arm/syscalls/inotify_rm_watch.S
|
syscall_src += arch-arm/syscalls/inotify_rm_watch.S
|
||||||
syscall_src += arch-arm/syscalls/ioprio_get.S
|
syscall_src += arch-arm/syscalls/ioprio_get.S
|
||||||
syscall_src += arch-arm/syscalls/ioprio_set.S
|
syscall_src += arch-arm/syscalls/ioprio_set.S
|
||||||
|
syscall_src += arch-arm/syscalls/kill.S
|
||||||
syscall_src += arch-arm/syscalls/klogctl.S
|
syscall_src += arch-arm/syscalls/klogctl.S
|
||||||
syscall_src += arch-arm/syscalls/lgetxattr.S
|
syscall_src += arch-arm/syscalls/lgetxattr.S
|
||||||
syscall_src += arch-arm/syscalls/linkat.S
|
syscall_src += arch-arm/syscalls/linkat.S
|
||||||
@ -175,10 +176,12 @@ syscall_src += arch-arm/syscalls/swapon.S
|
|||||||
syscall_src += arch-arm/syscalls/symlinkat.S
|
syscall_src += arch-arm/syscalls/symlinkat.S
|
||||||
syscall_src += arch-arm/syscalls/sync.S
|
syscall_src += arch-arm/syscalls/sync.S
|
||||||
syscall_src += arch-arm/syscalls/sysinfo.S
|
syscall_src += arch-arm/syscalls/sysinfo.S
|
||||||
|
syscall_src += arch-arm/syscalls/tgkill.S
|
||||||
syscall_src += arch-arm/syscalls/timerfd_create.S
|
syscall_src += arch-arm/syscalls/timerfd_create.S
|
||||||
syscall_src += arch-arm/syscalls/timerfd_gettime.S
|
syscall_src += arch-arm/syscalls/timerfd_gettime.S
|
||||||
syscall_src += arch-arm/syscalls/timerfd_settime.S
|
syscall_src += arch-arm/syscalls/timerfd_settime.S
|
||||||
syscall_src += arch-arm/syscalls/times.S
|
syscall_src += arch-arm/syscalls/times.S
|
||||||
|
syscall_src += arch-arm/syscalls/tkill.S
|
||||||
syscall_src += arch-arm/syscalls/truncate.S
|
syscall_src += arch-arm/syscalls/truncate.S
|
||||||
syscall_src += arch-arm/syscalls/truncate64.S
|
syscall_src += arch-arm/syscalls/truncate64.S
|
||||||
syscall_src += arch-arm/syscalls/umask.S
|
syscall_src += arch-arm/syscalls/umask.S
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__epoll_pwait)
|
ENTRY(__epoll_pwait)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_epoll_pwait
|
ldr r7, =__NR_epoll_pwait
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__llseek)
|
ENTRY(__llseek)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR__llseek
|
ldr r7, =__NR__llseek
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__mmap2)
|
ENTRY(__mmap2)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_mmap2
|
ldr r7, =__NR_mmap2
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__ppoll)
|
ENTRY(__ppoll)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_ppoll
|
ldr r7, =__NR_ppoll
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__pselect6)
|
ENTRY(__pselect6)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_pselect6
|
ldr r7, =__NR_pselect6
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(__waitid)
|
ENTRY(__waitid)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_waitid
|
ldr r7, =__NR_waitid
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(fchownat)
|
ENTRY(fchownat)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_fchownat
|
ldr r7, =__NR_fchownat
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(fsetxattr)
|
ENTRY(fsetxattr)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_fsetxattr
|
ldr r7, =__NR_fsetxattr
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(futex)
|
ENTRY(futex)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_futex
|
ldr r7, =__NR_futex
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(getsockopt)
|
ENTRY(getsockopt)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_getsockopt
|
ldr r7, =__NR_getsockopt
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
14
libc/arch-arm/syscalls/kill.S
Normal file
14
libc/arch-arm/syscalls/kill.S
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Generated by gensyscalls.py. Do not edit. */
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(kill)
|
||||||
|
mov ip, r7
|
||||||
|
ldr r7, =__NR_kill
|
||||||
|
swi #0
|
||||||
|
mov r7, ip
|
||||||
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
|
bxls lr
|
||||||
|
neg r0, r0
|
||||||
|
b __set_errno
|
||||||
|
END(kill)
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(linkat)
|
ENTRY(linkat)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_linkat
|
ldr r7, =__NR_linkat
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(lsetxattr)
|
ENTRY(lsetxattr)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_lsetxattr
|
ldr r7, =__NR_lsetxattr
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(mount)
|
ENTRY(mount)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_mount
|
ldr r7, =__NR_mount
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(perf_event_open)
|
ENTRY(perf_event_open)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_perf_event_open
|
ldr r7, =__NR_perf_event_open
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(prctl)
|
ENTRY(prctl)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_prctl
|
ldr r7, =__NR_prctl
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(pread64)
|
ENTRY(pread64)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_pread64
|
ldr r7, =__NR_pread64
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(pwrite64)
|
ENTRY(pwrite64)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_pwrite64
|
ldr r7, =__NR_pwrite64
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(readahead)
|
ENTRY(readahead)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_readahead
|
ldr r7, =__NR_readahead
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(recvfrom)
|
ENTRY(recvfrom)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_recvfrom
|
ldr r7, =__NR_recvfrom
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(sendto)
|
ENTRY(sendto)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_sendto
|
ldr r7, =__NR_sendto
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(setsockopt)
|
ENTRY(setsockopt)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_setsockopt
|
ldr r7, =__NR_setsockopt
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
@ -4,12 +4,17 @@
|
|||||||
|
|
||||||
ENTRY(setxattr)
|
ENTRY(setxattr)
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =__NR_setxattr
|
ldr r7, =__NR_setxattr
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
|
14
libc/arch-arm/syscalls/tgkill.S
Normal file
14
libc/arch-arm/syscalls/tgkill.S
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Generated by gensyscalls.py. Do not edit. */
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(tgkill)
|
||||||
|
mov ip, r7
|
||||||
|
ldr r7, =__NR_tgkill
|
||||||
|
swi #0
|
||||||
|
mov r7, ip
|
||||||
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
|
bxls lr
|
||||||
|
neg r0, r0
|
||||||
|
b __set_errno
|
||||||
|
END(tgkill)
|
14
libc/arch-arm/syscalls/tkill.S
Normal file
14
libc/arch-arm/syscalls/tkill.S
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Generated by gensyscalls.py. Do not edit. */
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(tkill)
|
||||||
|
mov ip, r7
|
||||||
|
ldr r7, =__NR_tkill
|
||||||
|
swi #0
|
||||||
|
mov r7, ip
|
||||||
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
|
bxls lr
|
||||||
|
neg r0, r0
|
||||||
|
b __set_errno
|
||||||
|
END(tkill)
|
@ -721,6 +721,7 @@
|
|||||||
#define SYS_fcntl64 __NR_fcntl64
|
#define SYS_fcntl64 __NR_fcntl64
|
||||||
#define SYS_fdatasync __NR_fdatasync
|
#define SYS_fdatasync __NR_fdatasync
|
||||||
#define SYS_fgetxattr __NR_fgetxattr
|
#define SYS_fgetxattr __NR_fgetxattr
|
||||||
|
#define SYS_finit_module __NR_finit_module
|
||||||
#define SYS_flistxattr __NR_flistxattr
|
#define SYS_flistxattr __NR_flistxattr
|
||||||
#define SYS_flock __NR_flock
|
#define SYS_flock __NR_flock
|
||||||
#define SYS_fork __NR_fork
|
#define SYS_fork __NR_fork
|
||||||
@ -785,6 +786,7 @@
|
|||||||
#define SYS_ioprio_get __NR_ioprio_get
|
#define SYS_ioprio_get __NR_ioprio_get
|
||||||
#define SYS_ioprio_set __NR_ioprio_set
|
#define SYS_ioprio_set __NR_ioprio_set
|
||||||
#define SYS_ipc __NR_ipc
|
#define SYS_ipc __NR_ipc
|
||||||
|
#define SYS_kcmp __NR_kcmp
|
||||||
#define SYS_kexec_load __NR_kexec_load
|
#define SYS_kexec_load __NR_kexec_load
|
||||||
#define SYS_keyctl __NR_keyctl
|
#define SYS_keyctl __NR_keyctl
|
||||||
#define SYS_kill __NR_kill
|
#define SYS_kill __NR_kill
|
||||||
@ -1077,6 +1079,7 @@
|
|||||||
#define SYS_fcntl64 __NR_fcntl64
|
#define SYS_fcntl64 __NR_fcntl64
|
||||||
#define SYS_fdatasync __NR_fdatasync
|
#define SYS_fdatasync __NR_fdatasync
|
||||||
#define SYS_fgetxattr __NR_fgetxattr
|
#define SYS_fgetxattr __NR_fgetxattr
|
||||||
|
#define SYS_finit_module __NR_finit_module
|
||||||
#define SYS_flistxattr __NR_flistxattr
|
#define SYS_flistxattr __NR_flistxattr
|
||||||
#define SYS_flock __NR_flock
|
#define SYS_flock __NR_flock
|
||||||
#define SYS_fork __NR_fork
|
#define SYS_fork __NR_fork
|
||||||
@ -1146,6 +1149,7 @@
|
|||||||
#define SYS_ioprio_get __NR_ioprio_get
|
#define SYS_ioprio_get __NR_ioprio_get
|
||||||
#define SYS_ioprio_set __NR_ioprio_set
|
#define SYS_ioprio_set __NR_ioprio_set
|
||||||
#define SYS_ipc __NR_ipc
|
#define SYS_ipc __NR_ipc
|
||||||
|
#define SYS_kcmp __NR_kcmp
|
||||||
#define SYS_kexec_load __NR_kexec_load
|
#define SYS_kexec_load __NR_kexec_load
|
||||||
#define SYS_keyctl __NR_keyctl
|
#define SYS_keyctl __NR_keyctl
|
||||||
#define SYS_kill __NR_kill
|
#define SYS_kill __NR_kill
|
||||||
@ -1164,7 +1168,6 @@
|
|||||||
#define SYS_lstat __NR_lstat
|
#define SYS_lstat __NR_lstat
|
||||||
#define SYS_lstat64 __NR_lstat64
|
#define SYS_lstat64 __NR_lstat64
|
||||||
#define SYS_madvise __NR_madvise
|
#define SYS_madvise __NR_madvise
|
||||||
#define SYS_madvise1 __NR_madvise1
|
|
||||||
#define SYS_mbind __NR_mbind
|
#define SYS_mbind __NR_mbind
|
||||||
#define SYS_migrate_pages __NR_migrate_pages
|
#define SYS_migrate_pages __NR_migrate_pages
|
||||||
#define SYS_mincore __NR_mincore
|
#define SYS_mincore __NR_mincore
|
||||||
@ -1216,6 +1219,8 @@
|
|||||||
#define SYS_pread64 __NR_pread64
|
#define SYS_pread64 __NR_pread64
|
||||||
#define SYS_preadv __NR_preadv
|
#define SYS_preadv __NR_preadv
|
||||||
#define SYS_prlimit64 __NR_prlimit64
|
#define SYS_prlimit64 __NR_prlimit64
|
||||||
|
#define SYS_process_vm_readv __NR_process_vm_readv
|
||||||
|
#define SYS_process_vm_writev __NR_process_vm_writev
|
||||||
#define SYS_prof __NR_prof
|
#define SYS_prof __NR_prof
|
||||||
#define SYS_profil __NR_profil
|
#define SYS_profil __NR_profil
|
||||||
#define SYS_pselect6 __NR_pselect6
|
#define SYS_pselect6 __NR_pselect6
|
||||||
@ -1420,6 +1425,7 @@
|
|||||||
#define SYS_fcntl __NR_fcntl
|
#define SYS_fcntl __NR_fcntl
|
||||||
#define SYS_fdatasync __NR_fdatasync
|
#define SYS_fdatasync __NR_fdatasync
|
||||||
#define SYS_fgetxattr __NR_fgetxattr
|
#define SYS_fgetxattr __NR_fgetxattr
|
||||||
|
#define SYS_finit_module __NR_finit_module
|
||||||
#define SYS_flistxattr __NR_flistxattr
|
#define SYS_flistxattr __NR_flistxattr
|
||||||
#define SYS_flock __NR_flock
|
#define SYS_flock __NR_flock
|
||||||
#define SYS_fork __NR_fork
|
#define SYS_fork __NR_fork
|
||||||
@ -1477,6 +1483,7 @@
|
|||||||
#define SYS_iopl __NR_iopl
|
#define SYS_iopl __NR_iopl
|
||||||
#define SYS_ioprio_get __NR_ioprio_get
|
#define SYS_ioprio_get __NR_ioprio_get
|
||||||
#define SYS_ioprio_set __NR_ioprio_set
|
#define SYS_ioprio_set __NR_ioprio_set
|
||||||
|
#define SYS_kcmp __NR_kcmp
|
||||||
#define SYS_kexec_load __NR_kexec_load
|
#define SYS_kexec_load __NR_kexec_load
|
||||||
#define SYS_keyctl __NR_keyctl
|
#define SYS_keyctl __NR_keyctl
|
||||||
#define SYS_kill __NR_kill
|
#define SYS_kill __NR_kill
|
||||||
|
@ -94,12 +94,17 @@ END(%(func)s)
|
|||||||
|
|
||||||
arm_eabi_call_long = syscall_stub_header + """\
|
arm_eabi_call_long = syscall_stub_header + """\
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
.save {r4, r5, r6, r7}
|
|
||||||
stmfd sp!, {r4, r5, r6, r7}
|
stmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_rel_offset r4, 0
|
||||||
|
.cfi_rel_offset r5, 4
|
||||||
|
.cfi_rel_offset r6, 8
|
||||||
|
.cfi_rel_offset r7, 12
|
||||||
ldmfd ip, {r4, r5, r6}
|
ldmfd ip, {r4, r5, r6}
|
||||||
ldr r7, =%(__NR_name)s
|
ldr r7, =%(__NR_name)s
|
||||||
swi #0
|
swi #0
|
||||||
ldmfd sp!, {r4, r5, r6, r7}
|
ldmfd sp!, {r4, r5, r6, r7}
|
||||||
|
.cfi_def_cfa_offset 0
|
||||||
cmn r0, #(MAX_ERRNO + 1)
|
cmn r0, #(MAX_ERRNO + 1)
|
||||||
bxls lr
|
bxls lr
|
||||||
neg r0, r0
|
neg r0, r0
|
||||||
@ -413,11 +418,11 @@ class State:
|
|||||||
glibc_fp.write("#elif defined(__arm__)\n")
|
glibc_fp.write("#elif defined(__arm__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-arm/asm/unistd.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-arm/asm/unistd.h")
|
||||||
glibc_fp.write("#elif defined(__mips__)\n")
|
glibc_fp.write("#elif defined(__mips__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-mips/asm/unistd.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-mips/asm/unistd.h")
|
||||||
glibc_fp.write("#elif defined(__i386__)\n")
|
glibc_fp.write("#elif defined(__i386__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-x86/asm/unistd_32.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-x86/asm/unistd_32.h")
|
||||||
glibc_fp.write("#elif defined(__x86_64__)\n")
|
glibc_fp.write("#elif defined(__x86_64__)\n")
|
||||||
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/arch-x86/asm/unistd_64.h")
|
self.scan_linux_unistd_h(glibc_fp, bionic_libc_root + "/kernel/uapi/asm-x86/asm/unistd_64.h")
|
||||||
glibc_fp.write("#endif\n")
|
glibc_fp.write("#endif\n")
|
||||||
|
|
||||||
glibc_fp.write("#endif /* _BIONIC_GLIBC_SYSCALLS_H_ */\n")
|
glibc_fp.write("#endif /* _BIONIC_GLIBC_SYSCALLS_H_ */\n")
|
||||||
|
Loading…
Reference in New Issue
Block a user