diff options
Diffstat (limited to 'libc')
43 files changed, 1062 insertions, 0 deletions
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT index 5c1e36e..fc5f808 100644 --- a/libc/SYSCALLS.TXT +++ b/libc/SYSCALLS.TXT @@ -133,6 +133,10 @@ int mkdirat(int dirfd, const char *pathname, mode_t mode) 323,296 int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags) 325,298 int fchmodat(int dirfd, const char *path, mode_t mode, int flags) 333,306 int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) 329,302 +int fsetxattr(int, const char *, const void *, size_t, int) 228 +ssize_t fgetxattr(int, const char *, void *, size_t) 231 +ssize_t flistxattr(int, char *, size_t) 234 +int fremovexattr(int, const char *) 237 # file system int link (const char*, const char*) 9 @@ -158,7 +162,16 @@ int access(const char *, int) 33 int symlink(const char *, const char *) 83 int fchdir(int) 133 int truncate(const char*, off_t) 92 +int setxattr(const char *, const char *, const void *, size_t, int) 226 +int lsetxattr(const char *, const char *, const void *, size_t, int) 227 +ssize_t getxattr(const char *, const char *, void *, size_t) 229 +ssize_t lgetxattr(const char *, const char *, void *, size_t) 230 +ssize_t listxattr(const char *, char *, size_t) 232 +ssize_t llistxattr(const char *, char *, size_t) 233 +int removexattr(const char *, const char *) 235 +int lremovexattr(const char *, const char *) 236 int __statfs64:statfs64(const char *, size_t, struct statfs *) 266,268 + # time int pause () 29 int gettimeofday(struct timeval*, struct timezone*) 78 diff --git a/libc/arch-arm/syscalls.mk b/libc/arch-arm/syscalls.mk index 1f2a1cd..3fce36d 100644 --- a/libc/arch-arm/syscalls.mk +++ b/libc/arch-arm/syscalls.mk @@ -85,6 +85,10 @@ syscall_src += arch-arm/syscalls/mkdirat.S syscall_src += arch-arm/syscalls/fchownat.S syscall_src += arch-arm/syscalls/fchmodat.S syscall_src += arch-arm/syscalls/renameat.S +syscall_src += arch-arm/syscalls/fsetxattr.S +syscall_src += arch-arm/syscalls/fgetxattr.S +syscall_src += arch-arm/syscalls/flistxattr.S +syscall_src += arch-arm/syscalls/fremovexattr.S syscall_src += arch-arm/syscalls/link.S syscall_src += arch-arm/syscalls/unlink.S syscall_src += arch-arm/syscalls/unlinkat.S @@ -107,6 +111,14 @@ syscall_src += arch-arm/syscalls/access.S syscall_src += arch-arm/syscalls/symlink.S syscall_src += arch-arm/syscalls/fchdir.S syscall_src += arch-arm/syscalls/truncate.S +syscall_src += arch-arm/syscalls/setxattr.S +syscall_src += arch-arm/syscalls/lsetxattr.S +syscall_src += arch-arm/syscalls/getxattr.S +syscall_src += arch-arm/syscalls/lgetxattr.S +syscall_src += arch-arm/syscalls/listxattr.S +syscall_src += arch-arm/syscalls/llistxattr.S +syscall_src += arch-arm/syscalls/removexattr.S +syscall_src += arch-arm/syscalls/lremovexattr.S syscall_src += arch-arm/syscalls/__statfs64.S syscall_src += arch-arm/syscalls/pause.S syscall_src += arch-arm/syscalls/gettimeofday.S diff --git a/libc/arch-arm/syscalls/fgetxattr.S b/libc/arch-arm/syscalls/fgetxattr.S new file mode 100644 index 0000000..32b8ef8 --- /dev/null +++ b/libc/arch-arm/syscalls/fgetxattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(fgetxattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_fgetxattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(fgetxattr) diff --git a/libc/arch-arm/syscalls/flistxattr.S b/libc/arch-arm/syscalls/flistxattr.S new file mode 100644 index 0000000..0785e77 --- /dev/null +++ b/libc/arch-arm/syscalls/flistxattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(flistxattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_flistxattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(flistxattr) diff --git a/libc/arch-arm/syscalls/fremovexattr.S b/libc/arch-arm/syscalls/fremovexattr.S new file mode 100644 index 0000000..ae97d13 --- /dev/null +++ b/libc/arch-arm/syscalls/fremovexattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(fremovexattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_fremovexattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(fremovexattr) diff --git a/libc/arch-arm/syscalls/fsetxattr.S b/libc/arch-arm/syscalls/fsetxattr.S new file mode 100644 index 0000000..176cad9 --- /dev/null +++ b/libc/arch-arm/syscalls/fsetxattr.S @@ -0,0 +1,16 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(fsetxattr) + mov ip, sp + .save {r4, r5, r6, r7} + stmfd sp!, {r4, r5, r6, r7} + ldmfd ip, {r4, r5, r6} + ldr r7, =__NR_fsetxattr + swi #0 + ldmfd sp!, {r4, r5, r6, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(fsetxattr) diff --git a/libc/arch-arm/syscalls/getxattr.S b/libc/arch-arm/syscalls/getxattr.S new file mode 100644 index 0000000..18532ce --- /dev/null +++ b/libc/arch-arm/syscalls/getxattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(getxattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_getxattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(getxattr) diff --git a/libc/arch-arm/syscalls/lgetxattr.S b/libc/arch-arm/syscalls/lgetxattr.S new file mode 100644 index 0000000..61fc098 --- /dev/null +++ b/libc/arch-arm/syscalls/lgetxattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(lgetxattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_lgetxattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(lgetxattr) diff --git a/libc/arch-arm/syscalls/listxattr.S b/libc/arch-arm/syscalls/listxattr.S new file mode 100644 index 0000000..6bbdb6a --- /dev/null +++ b/libc/arch-arm/syscalls/listxattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(listxattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_listxattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(listxattr) diff --git a/libc/arch-arm/syscalls/llistxattr.S b/libc/arch-arm/syscalls/llistxattr.S new file mode 100644 index 0000000..89682df --- /dev/null +++ b/libc/arch-arm/syscalls/llistxattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(llistxattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_llistxattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(llistxattr) diff --git a/libc/arch-arm/syscalls/lremovexattr.S b/libc/arch-arm/syscalls/lremovexattr.S new file mode 100644 index 0000000..62f6722 --- /dev/null +++ b/libc/arch-arm/syscalls/lremovexattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(lremovexattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_lremovexattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(lremovexattr) diff --git a/libc/arch-arm/syscalls/lsetxattr.S b/libc/arch-arm/syscalls/lsetxattr.S new file mode 100644 index 0000000..bde7c24 --- /dev/null +++ b/libc/arch-arm/syscalls/lsetxattr.S @@ -0,0 +1,16 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(lsetxattr) + mov ip, sp + .save {r4, r5, r6, r7} + stmfd sp!, {r4, r5, r6, r7} + ldmfd ip, {r4, r5, r6} + ldr r7, =__NR_lsetxattr + swi #0 + ldmfd sp!, {r4, r5, r6, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(lsetxattr) diff --git a/libc/arch-arm/syscalls/removexattr.S b/libc/arch-arm/syscalls/removexattr.S new file mode 100644 index 0000000..1a44caf --- /dev/null +++ b/libc/arch-arm/syscalls/removexattr.S @@ -0,0 +1,14 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(removexattr) + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_removexattr + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(removexattr) diff --git a/libc/arch-arm/syscalls/setxattr.S b/libc/arch-arm/syscalls/setxattr.S new file mode 100644 index 0000000..e86fe9f --- /dev/null +++ b/libc/arch-arm/syscalls/setxattr.S @@ -0,0 +1,16 @@ +/* autogenerated by gensyscalls.py */ +#include <machine/asm.h> +#include <sys/linux-syscalls.h> + +ENTRY(setxattr) + mov ip, sp + .save {r4, r5, r6, r7} + stmfd sp!, {r4, r5, r6, r7} + ldmfd ip, {r4, r5, r6} + ldr r7, =__NR_setxattr + swi #0 + ldmfd sp!, {r4, r5, r6, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno +END(setxattr) diff --git a/libc/arch-sh/syscalls.mk b/libc/arch-sh/syscalls.mk index 9970fcf..03ce7fd 100644 --- a/libc/arch-sh/syscalls.mk +++ b/libc/arch-sh/syscalls.mk @@ -88,6 +88,10 @@ syscall_src += arch-sh/syscalls/mkdirat.S syscall_src += arch-sh/syscalls/fchownat.S syscall_src += arch-sh/syscalls/fchmodat.S syscall_src += arch-sh/syscalls/renameat.S +syscall_src += arch-sh/syscalls/fsetxattr.S +syscall_src += arch-sh/syscalls/fgetxattr.S +syscall_src += arch-sh/syscalls/flistxattr.S +syscall_src += arch-sh/syscalls/fremovexattr.S syscall_src += arch-sh/syscalls/link.S syscall_src += arch-sh/syscalls/unlink.S syscall_src += arch-sh/syscalls/unlinkat.S @@ -110,6 +114,14 @@ syscall_src += arch-sh/syscalls/access.S syscall_src += arch-sh/syscalls/symlink.S syscall_src += arch-sh/syscalls/fchdir.S syscall_src += arch-sh/syscalls/truncate.S +syscall_src += arch-sh/syscalls/setxattr.S +syscall_src += arch-sh/syscalls/lsetxattr.S +syscall_src += arch-sh/syscalls/getxattr.S +syscall_src += arch-sh/syscalls/lgetxattr.S +syscall_src += arch-sh/syscalls/listxattr.S +syscall_src += arch-sh/syscalls/llistxattr.S +syscall_src += arch-sh/syscalls/removexattr.S +syscall_src += arch-sh/syscalls/lremovexattr.S syscall_src += arch-sh/syscalls/__statfs64.S syscall_src += arch-sh/syscalls/pause.S syscall_src += arch-sh/syscalls/gettimeofday.S diff --git a/libc/arch-sh/syscalls/fgetxattr.S b/libc/arch-sh/syscalls/fgetxattr.S new file mode 100644 index 0000000..49b43de --- /dev/null +++ b/libc/arch-sh/syscalls/fgetxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type fgetxattr, @function + .globl fgetxattr + .align 4 + +fgetxattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(4 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_fgetxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_fgetxattr_end: + rts + nop + + .align 2 +0: .long __NR_fgetxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/flistxattr.S b/libc/arch-sh/syscalls/flistxattr.S new file mode 100644 index 0000000..9b91424 --- /dev/null +++ b/libc/arch-sh/syscalls/flistxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type flistxattr, @function + .globl flistxattr + .align 4 + +flistxattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(3 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_flistxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_flistxattr_end: + rts + nop + + .align 2 +0: .long __NR_flistxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/fremovexattr.S b/libc/arch-sh/syscalls/fremovexattr.S new file mode 100644 index 0000000..b6ebc8e --- /dev/null +++ b/libc/arch-sh/syscalls/fremovexattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type fremovexattr, @function + .globl fremovexattr + .align 4 + +fremovexattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(2 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_fremovexattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_fremovexattr_end: + rts + nop + + .align 2 +0: .long __NR_fremovexattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/fsetxattr.S b/libc/arch-sh/syscalls/fsetxattr.S new file mode 100644 index 0000000..7e0681a --- /dev/null +++ b/libc/arch-sh/syscalls/fsetxattr.S @@ -0,0 +1,35 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type fsetxattr, @function + .globl fsetxattr + .align 4 + +fsetxattr: + + /* get ready for additonal arg */ + mov.l @r15, r0 + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(5 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_fsetxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_fsetxattr_end: + rts + nop + + .align 2 +0: .long __NR_fsetxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/getxattr.S b/libc/arch-sh/syscalls/getxattr.S new file mode 100644 index 0000000..7d16c21 --- /dev/null +++ b/libc/arch-sh/syscalls/getxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type getxattr, @function + .globl getxattr + .align 4 + +getxattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(4 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_getxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_getxattr_end: + rts + nop + + .align 2 +0: .long __NR_getxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/lgetxattr.S b/libc/arch-sh/syscalls/lgetxattr.S new file mode 100644 index 0000000..d0c5014 --- /dev/null +++ b/libc/arch-sh/syscalls/lgetxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type lgetxattr, @function + .globl lgetxattr + .align 4 + +lgetxattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(4 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_lgetxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_lgetxattr_end: + rts + nop + + .align 2 +0: .long __NR_lgetxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/listxattr.S b/libc/arch-sh/syscalls/listxattr.S new file mode 100644 index 0000000..f2817a5 --- /dev/null +++ b/libc/arch-sh/syscalls/listxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type listxattr, @function + .globl listxattr + .align 4 + +listxattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(3 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_listxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_listxattr_end: + rts + nop + + .align 2 +0: .long __NR_listxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/llistxattr.S b/libc/arch-sh/syscalls/llistxattr.S new file mode 100644 index 0000000..877c15e --- /dev/null +++ b/libc/arch-sh/syscalls/llistxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type llistxattr, @function + .globl llistxattr + .align 4 + +llistxattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(3 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_llistxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_llistxattr_end: + rts + nop + + .align 2 +0: .long __NR_llistxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/lremovexattr.S b/libc/arch-sh/syscalls/lremovexattr.S new file mode 100644 index 0000000..d7aa8b9 --- /dev/null +++ b/libc/arch-sh/syscalls/lremovexattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type lremovexattr, @function + .globl lremovexattr + .align 4 + +lremovexattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(2 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_lremovexattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_lremovexattr_end: + rts + nop + + .align 2 +0: .long __NR_lremovexattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/lsetxattr.S b/libc/arch-sh/syscalls/lsetxattr.S new file mode 100644 index 0000000..0cc4c9d --- /dev/null +++ b/libc/arch-sh/syscalls/lsetxattr.S @@ -0,0 +1,35 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type lsetxattr, @function + .globl lsetxattr + .align 4 + +lsetxattr: + + /* get ready for additonal arg */ + mov.l @r15, r0 + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(5 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_lsetxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_lsetxattr_end: + rts + nop + + .align 2 +0: .long __NR_lsetxattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/removexattr.S b/libc/arch-sh/syscalls/removexattr.S new file mode 100644 index 0000000..ea71743 --- /dev/null +++ b/libc/arch-sh/syscalls/removexattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type removexattr, @function + .globl removexattr + .align 4 + +removexattr: + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(2 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_removexattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_removexattr_end: + rts + nop + + .align 2 +0: .long __NR_removexattr +1: .long __set_syscall_errno diff --git a/libc/arch-sh/syscalls/setxattr.S b/libc/arch-sh/syscalls/setxattr.S new file mode 100644 index 0000000..abef6b6 --- /dev/null +++ b/libc/arch-sh/syscalls/setxattr.S @@ -0,0 +1,35 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type setxattr, @function + .globl setxattr + .align 4 + +setxattr: + + /* get ready for additonal arg */ + mov.l @r15, r0 + + /* invoke trap */ + mov.l 0f, r3 /* trap num */ + trapa #(5 + 0x10) + + /* check return value */ + cmp/pz r0 + bt __NR_setxattr_end + + /* keep error number */ + sts.l pr, @-r15 + mov.l 1f, r1 + jsr @r1 + mov r0, r4 + lds.l @r15+, pr + +__NR_setxattr_end: + rts + nop + + .align 2 +0: .long __NR_setxattr +1: .long __set_syscall_errno diff --git a/libc/arch-x86/syscalls.mk b/libc/arch-x86/syscalls.mk index 48d1731..2f8cc49 100644 --- a/libc/arch-x86/syscalls.mk +++ b/libc/arch-x86/syscalls.mk @@ -88,6 +88,10 @@ syscall_src += arch-x86/syscalls/mkdirat.S syscall_src += arch-x86/syscalls/fchownat.S syscall_src += arch-x86/syscalls/fchmodat.S syscall_src += arch-x86/syscalls/renameat.S +syscall_src += arch-x86/syscalls/fsetxattr.S +syscall_src += arch-x86/syscalls/fgetxattr.S +syscall_src += arch-x86/syscalls/flistxattr.S +syscall_src += arch-x86/syscalls/fremovexattr.S syscall_src += arch-x86/syscalls/link.S syscall_src += arch-x86/syscalls/unlink.S syscall_src += arch-x86/syscalls/unlinkat.S @@ -110,6 +114,14 @@ syscall_src += arch-x86/syscalls/access.S syscall_src += arch-x86/syscalls/symlink.S syscall_src += arch-x86/syscalls/fchdir.S syscall_src += arch-x86/syscalls/truncate.S +syscall_src += arch-x86/syscalls/setxattr.S +syscall_src += arch-x86/syscalls/lsetxattr.S +syscall_src += arch-x86/syscalls/getxattr.S +syscall_src += arch-x86/syscalls/lgetxattr.S +syscall_src += arch-x86/syscalls/listxattr.S +syscall_src += arch-x86/syscalls/llistxattr.S +syscall_src += arch-x86/syscalls/removexattr.S +syscall_src += arch-x86/syscalls/lremovexattr.S syscall_src += arch-x86/syscalls/__statfs64.S syscall_src += arch-x86/syscalls/pause.S syscall_src += arch-x86/syscalls/gettimeofday.S diff --git a/libc/arch-x86/syscalls/fgetxattr.S b/libc/arch-x86/syscalls/fgetxattr.S new file mode 100644 index 0000000..d9f582f --- /dev/null +++ b/libc/arch-x86/syscalls/fgetxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type fgetxattr, @function + .globl fgetxattr + .align 4 + +fgetxattr: + pushl %ebx + pushl %ecx + pushl %edx + pushl %esi + mov 20(%esp), %ebx + mov 24(%esp), %ecx + mov 28(%esp), %edx + mov 32(%esp), %esi + movl $__NR_fgetxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %esi + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/flistxattr.S b/libc/arch-x86/syscalls/flistxattr.S new file mode 100644 index 0000000..43ff73d --- /dev/null +++ b/libc/arch-x86/syscalls/flistxattr.S @@ -0,0 +1,29 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type flistxattr, @function + .globl flistxattr + .align 4 + +flistxattr: + pushl %ebx + pushl %ecx + pushl %edx + mov 16(%esp), %ebx + mov 20(%esp), %ecx + mov 24(%esp), %edx + movl $__NR_flistxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/fremovexattr.S b/libc/arch-x86/syscalls/fremovexattr.S new file mode 100644 index 0000000..eeed57f --- /dev/null +++ b/libc/arch-x86/syscalls/fremovexattr.S @@ -0,0 +1,26 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type fremovexattr, @function + .globl fremovexattr + .align 4 + +fremovexattr: + pushl %ebx + pushl %ecx + mov 12(%esp), %ebx + mov 16(%esp), %ecx + movl $__NR_fremovexattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/fsetxattr.S b/libc/arch-x86/syscalls/fsetxattr.S new file mode 100644 index 0000000..a70ca4f --- /dev/null +++ b/libc/arch-x86/syscalls/fsetxattr.S @@ -0,0 +1,35 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type fsetxattr, @function + .globl fsetxattr + .align 4 + +fsetxattr: + pushl %ebx + pushl %ecx + pushl %edx + pushl %esi + pushl %edi + mov 24(%esp), %ebx + mov 28(%esp), %ecx + mov 32(%esp), %edx + mov 36(%esp), %esi + mov 40(%esp), %edi + movl $__NR_fsetxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %edi + popl %esi + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/getxattr.S b/libc/arch-x86/syscalls/getxattr.S new file mode 100644 index 0000000..80d2fc4 --- /dev/null +++ b/libc/arch-x86/syscalls/getxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type getxattr, @function + .globl getxattr + .align 4 + +getxattr: + pushl %ebx + pushl %ecx + pushl %edx + pushl %esi + mov 20(%esp), %ebx + mov 24(%esp), %ecx + mov 28(%esp), %edx + mov 32(%esp), %esi + movl $__NR_getxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %esi + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/lgetxattr.S b/libc/arch-x86/syscalls/lgetxattr.S new file mode 100644 index 0000000..3f5b63e --- /dev/null +++ b/libc/arch-x86/syscalls/lgetxattr.S @@ -0,0 +1,32 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type lgetxattr, @function + .globl lgetxattr + .align 4 + +lgetxattr: + pushl %ebx + pushl %ecx + pushl %edx + pushl %esi + mov 20(%esp), %ebx + mov 24(%esp), %ecx + mov 28(%esp), %edx + mov 32(%esp), %esi + movl $__NR_lgetxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %esi + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/listxattr.S b/libc/arch-x86/syscalls/listxattr.S new file mode 100644 index 0000000..88109bb --- /dev/null +++ b/libc/arch-x86/syscalls/listxattr.S @@ -0,0 +1,29 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type listxattr, @function + .globl listxattr + .align 4 + +listxattr: + pushl %ebx + pushl %ecx + pushl %edx + mov 16(%esp), %ebx + mov 20(%esp), %ecx + mov 24(%esp), %edx + movl $__NR_listxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/llistxattr.S b/libc/arch-x86/syscalls/llistxattr.S new file mode 100644 index 0000000..fa8505c --- /dev/null +++ b/libc/arch-x86/syscalls/llistxattr.S @@ -0,0 +1,29 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type llistxattr, @function + .globl llistxattr + .align 4 + +llistxattr: + pushl %ebx + pushl %ecx + pushl %edx + mov 16(%esp), %ebx + mov 20(%esp), %ecx + mov 24(%esp), %edx + movl $__NR_llistxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/lremovexattr.S b/libc/arch-x86/syscalls/lremovexattr.S new file mode 100644 index 0000000..f6c7afe --- /dev/null +++ b/libc/arch-x86/syscalls/lremovexattr.S @@ -0,0 +1,26 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type lremovexattr, @function + .globl lremovexattr + .align 4 + +lremovexattr: + pushl %ebx + pushl %ecx + mov 12(%esp), %ebx + mov 16(%esp), %ecx + movl $__NR_lremovexattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/lsetxattr.S b/libc/arch-x86/syscalls/lsetxattr.S new file mode 100644 index 0000000..56c8cf8 --- /dev/null +++ b/libc/arch-x86/syscalls/lsetxattr.S @@ -0,0 +1,35 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type lsetxattr, @function + .globl lsetxattr + .align 4 + +lsetxattr: + pushl %ebx + pushl %ecx + pushl %edx + pushl %esi + pushl %edi + mov 24(%esp), %ebx + mov 28(%esp), %ecx + mov 32(%esp), %edx + mov 36(%esp), %esi + mov 40(%esp), %edi + movl $__NR_lsetxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %edi + popl %esi + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/removexattr.S b/libc/arch-x86/syscalls/removexattr.S new file mode 100644 index 0000000..2350865 --- /dev/null +++ b/libc/arch-x86/syscalls/removexattr.S @@ -0,0 +1,26 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type removexattr, @function + .globl removexattr + .align 4 + +removexattr: + pushl %ebx + pushl %ecx + mov 12(%esp), %ebx + mov 16(%esp), %ecx + movl $__NR_removexattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %ecx + popl %ebx + ret diff --git a/libc/arch-x86/syscalls/setxattr.S b/libc/arch-x86/syscalls/setxattr.S new file mode 100644 index 0000000..38be736 --- /dev/null +++ b/libc/arch-x86/syscalls/setxattr.S @@ -0,0 +1,35 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type setxattr, @function + .globl setxattr + .align 4 + +setxattr: + pushl %ebx + pushl %ecx + pushl %edx + pushl %esi + pushl %edi + mov 24(%esp), %ebx + mov 28(%esp), %ecx + mov 32(%esp), %edx + mov 36(%esp), %esi + mov 40(%esp), %edi + movl $__NR_setxattr, %eax + int $0x80 + cmpl $-129, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %edi + popl %esi + popl %edx + popl %ecx + popl %ebx + ret diff --git a/libc/include/sys/linux-syscalls.h b/libc/include/sys/linux-syscalls.h index 2fa5d3a..54f86f8 100644 --- a/libc/include/sys/linux-syscalls.h +++ b/libc/include/sys/linux-syscalls.h @@ -79,6 +79,10 @@ #define __NR_sync (__NR_SYSCALL_BASE + 36) #define __NR_fcntl64 (__NR_SYSCALL_BASE + 221) #define __NR_sendfile (__NR_SYSCALL_BASE + 187) +#define __NR_fsetxattr (__NR_SYSCALL_BASE + 228) +#define __NR_fgetxattr (__NR_SYSCALL_BASE + 231) +#define __NR_flistxattr (__NR_SYSCALL_BASE + 234) +#define __NR_fremovexattr (__NR_SYSCALL_BASE + 237) #define __NR_link (__NR_SYSCALL_BASE + 9) #define __NR_unlink (__NR_SYSCALL_BASE + 10) #define __NR_chdir (__NR_SYSCALL_BASE + 12) @@ -100,6 +104,14 @@ #define __NR_symlink (__NR_SYSCALL_BASE + 83) #define __NR_fchdir (__NR_SYSCALL_BASE + 133) #define __NR_truncate (__NR_SYSCALL_BASE + 92) +#define __NR_setxattr (__NR_SYSCALL_BASE + 226) +#define __NR_lsetxattr (__NR_SYSCALL_BASE + 227) +#define __NR_getxattr (__NR_SYSCALL_BASE + 229) +#define __NR_lgetxattr (__NR_SYSCALL_BASE + 230) +#define __NR_listxattr (__NR_SYSCALL_BASE + 232) +#define __NR_llistxattr (__NR_SYSCALL_BASE + 233) +#define __NR_removexattr (__NR_SYSCALL_BASE + 235) +#define __NR_lremovexattr (__NR_SYSCALL_BASE + 236) #define __NR_pause (__NR_SYSCALL_BASE + 29) #define __NR_gettimeofday (__NR_SYSCALL_BASE + 78) #define __NR_settimeofday (__NR_SYSCALL_BASE + 79) diff --git a/libc/include/sys/linux-unistd.h b/libc/include/sys/linux-unistd.h index f060374..693302d 100644 --- a/libc/include/sys/linux-unistd.h +++ b/libc/include/sys/linux-unistd.h @@ -98,6 +98,10 @@ int mkdirat (int dirfd, const char *pathname, mode_t mode); int fchownat (int dirfd, const char *path, uid_t owner, gid_t group, int flags); int fchmodat (int dirfd, const char *path, mode_t mode, int flags); int renameat (int olddirfd, const char *oldpath, int newdirfd, const char *newpath); +int fsetxattr (int, const char *, const void *, size_t, int); +ssize_t fgetxattr (int, const char *, void *, size_t); +ssize_t flistxattr (int, char *, size_t); +int fremovexattr (int, const char *); int link (const char*, const char*); int unlink (const char*); int unlinkat (int, const char *, int); @@ -121,6 +125,14 @@ int access (const char *, int); int symlink (const char *, const char *); int fchdir (int); int truncate (const char*, off_t); +int setxattr (const char *, const char *, const void *, size_t, int); +int lsetxattr (const char *, const char *, const void *, size_t, int); +ssize_t getxattr (const char *, const char *, void *, size_t); +ssize_t lgetxattr (const char *, const char *, void *, size_t); +ssize_t listxattr (const char *, char *, size_t); +ssize_t llistxattr (const char *, char *, size_t); +int removexattr (const char *, const char *); +int lremovexattr (const char *, const char *); int __statfs64 (const char *, size_t, struct statfs *); int pause (void); int gettimeofday (struct timeval*, struct timezone*); diff --git a/libc/include/sys/xattr.h b/libc/include/sys/xattr.h new file mode 100644 index 0000000..39b25b1 --- /dev/null +++ b/libc/include/sys/xattr.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2012 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. + */ +#ifndef _SYS_XATTR_H_ +#define _SYS_XATTR_H_ + +#include <sys/types.h> + +__BEGIN_DECLS + +#define XATTR_CREATE 1 +#define XATTR_REPLACE 2 + +extern int fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); +extern int setxattr(const char *path, const char *name, const void *value, size_t size, int flags); +extern int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); + +extern ssize_t fgetxattr(int fd, const char *name, void *value, size_t size); +extern ssize_t getxattr(const char *path, const char *name, void *value, size_t size); +extern ssize_t lgetxattr(const char *path, const char *name, void *value, size_t size); + +extern ssize_t listxattr(const char *path, char *list, size_t size); +extern ssize_t llistxattr(const char *path, char *list, size_t size); +extern ssize_t flistxattr(int fd, char *list, size_t size); + +extern int removexattr(const char *path, const char *name); +extern int lremovexattr(const char *path, const char *name); +extern int fremovexattr(int fd, const char *name); + +__END_DECLS + +#endif /* _SYS_XATTR_H_ */ |