Merge "Switch to using AT_RANDOM for the stack guards."
diff --git a/libc/kernel/common/linux/xattr.h b/libc/kernel/common/linux/xattr.h
index 4e69e8a..adb3232 100644
--- a/libc/kernel/common/linux/xattr.h
+++ b/libc/kernel/common/linux/xattr.h
@@ -33,16 +33,32 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XATTR_USER_PREFIX "user."
 #define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1)
-struct xattr_handler {
- char *prefix;
+#define XATTR_EVM_SUFFIX "evm"
+#define XATTR_NAME_EVM XATTR_SECURITY_PREFIX XATTR_EVM_SUFFIX
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- size_t (*list)(struct inode *inode, char *list, size_t list_size,
- const char *name, size_t name_len);
- int (*get)(struct inode *inode, const char *name, void *buffer,
- size_t size);
+#define XATTR_SELINUX_SUFFIX "selinux"
+#define XATTR_NAME_SELINUX XATTR_SECURITY_PREFIX XATTR_SELINUX_SUFFIX
+#define XATTR_SMACK_SUFFIX "SMACK64"
+#define XATTR_SMACK_IPIN "SMACK64IPIN"
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int (*set)(struct inode *inode, const char *name, const void *buffer,
- size_t size, int flags);
-};
+#define XATTR_SMACK_IPOUT "SMACK64IPOUT"
+#define XATTR_SMACK_EXEC "SMACK64EXEC"
+#define XATTR_SMACK_TRANSMUTE "SMACK64TRANSMUTE"
+#define XATTR_SMACK_MMAP "SMACK64MMAP"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XATTR_NAME_SMACK XATTR_SECURITY_PREFIX XATTR_SMACK_SUFFIX
+#define XATTR_NAME_SMACKIPIN XATTR_SECURITY_PREFIX XATTR_SMACK_IPIN
+#define XATTR_NAME_SMACKIPOUT XATTR_SECURITY_PREFIX XATTR_SMACK_IPOUT
+#define XATTR_NAME_SMACKEXEC XATTR_SECURITY_PREFIX XATTR_SMACK_EXEC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XATTR_NAME_SMACKTRANSMUTE XATTR_SECURITY_PREFIX XATTR_SMACK_TRANSMUTE
+#define XATTR_NAME_SMACKMMAP XATTR_SECURITY_PREFIX XATTR_SMACK_MMAP
+#define XATTR_CAPS_SUFFIX "capability"
+#define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XATTR_POSIX_ACL_ACCESS "posix_acl_access"
+#define XATTR_NAME_POSIX_ACL_ACCESS XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_ACCESS
+#define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
+#define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index a39b63b..5e519de 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -10,12 +10,6 @@
 
 from bionic_utils import *
 
-# set this to 1 if you want to generate thumb stubs
-gen_thumb_stubs = 0
-
-# set this to 1 if you want to generate ARM EABI stubs
-gen_eabi_stubs = 1
-
 # get the root Bionic directory, simply this script's dirname
 #
 bionic_root = find_bionic_root()
@@ -32,7 +26,7 @@
 bionic_temp = "/tmp/bionic_gensyscalls/"
 
 # all architectures, update as you see fit
-all_archs = [ "arm", "x86", "mips" ]
+all_archs = [ "arm", "mips", "x86" ]
 
 def make_dir( path ):
     path = os.path.abspath(path)
@@ -47,6 +41,7 @@
     make_dir(dir)
     return open( bionic_temp + relpath, "w" )
 
+#
 # x86 assembler templates for each syscall stub
 #
 
@@ -75,8 +70,10 @@
 END(%(fname)s)
 """
 
+#
 # ARM assembler templates for each syscall stub
 #
+
 arm_header = """/* autogenerated by gensyscalls.py */
 #include <machine/asm.h>
 #include <sys/linux-syscalls.h>
@@ -84,29 +81,6 @@
 ENTRY(%(fname)s)
 """
 
-arm_footer = """\
-END(%(fname)s)
-"""
-
-arm_call_default = arm_header + """\
-    swi   #%(idname)s
-    movs    r0, r0
-    bxpl    lr
-    b       __set_syscall_errno
-""" + arm_footer
-
-arm_call_long = arm_header + """\
-    .save   {r4, r5, lr}
-    stmfd   sp!, {r4, r5, lr}
-    ldr     r4, [sp, #12]
-    ldr     r5, [sp, #16]
-    swi     # %(idname)s
-    ldmfd   sp!, {r4, r5, lr}
-    movs    r0, r0
-    bxpl    lr
-    b       __set_syscall_errno
-""" + arm_footer
-
 arm_eabi_call_default = arm_header + """\
     mov     ip, r7
     ldr     r7, =%(idname)s
@@ -115,7 +89,8 @@
     movs    r0, r0
     bxpl    lr
     b       __set_syscall_errno
-""" + arm_footer
+END(%(fname)s)
+"""
 
 arm_eabi_call_long = arm_header + """\
     mov     ip, sp
@@ -128,61 +103,13 @@
     movs    r0, r0
     bxpl    lr
     b       __set_syscall_errno
-""" + arm_footer
+END(%(fname)s)
+"""
 
-# ARM thumb assembler templates for each syscall stub
 #
-thumb_header = """/* autogenerated by gensyscalls.py */
-    .text
-    .type %(fname)s, #function
-    .globl %(fname)s
-    .align 4
-    .thumb_func
-    .fnstart
-
-#define  __thumb__
-#include <sys/linux-syscalls.h>
-
-
-%(fname)s:
-"""
-
-thumb_call_default = thumb_header + """\
-    .save   {r7,lr}
-    push    {r7,lr}
-    ldr     r7, =%(idname)s
-    swi     #0
-    tst     r0, r0
-    bmi     1f
-    pop     {r7,pc}
-1:
-    neg     r0, r0
-    ldr     r1, =__set_errno
-    blx     r1
-    pop     {r7,pc}
-    .fnend
-"""
-
-thumb_call_long = thumb_header + """\
-    .save  {r4,r5,r7,lr}
-    push   {r4,r5,r7,lr}
-    ldr    r4, [sp,#16]
-    ldr    r5, [sp,#20]
-    ldr    r7, =%(idname)s
-    swi    #0
-    tst    r0, r0
-    bmi    1f
-    pop    {r4,r5,r7,pc}
-1:
-    neg    r0, r0
-    ldr    r1, =__set_errno
-    blx    r1
-    pop    {r4,r5,r7,pc}
-    .fnend
-"""
-
 # mips assembler templates for each syscall stub
 #
+
 mips_call = """/* autogenerated by gensyscalls.py */
 #include <sys/linux-syscalls.h>
     .text
@@ -229,7 +156,7 @@
 
 def count_arm_param_registers(params):
     """This function is used to count the number of register used
-       to pass parameters when invoking a thumb or ARM system call.
+       to pass parameters when invoking an ARM system call.
        This is because the ARM EABI mandates that 64-bit quantities
        must be passed in an even+odd register pair. So, for example,
        something like:
@@ -326,15 +253,6 @@
         result += x86_return % t
         return result
 
-    def arm_genstub(self,fname, flags, idname):
-        t = { "fname"  : fname,
-              "idname" : idname }
-        if flags:
-            numargs = int(flags)
-            if numargs > 4:
-                return arm_call_long % t
-        return arm_call_default % t
-
 
     def arm_eabi_genstub(self,fname, flags, idname):
         t = { "fname"  : fname,
@@ -346,15 +264,6 @@
         return arm_eabi_call_default % t
 
 
-    def thumb_genstub(self,fname, flags, idname):
-        t = { "fname"  : fname,
-              "idname" : idname }
-        if flags:
-            numargs = int(flags)
-            if numargs > 4:
-                return thumb_call_long % t
-        return thumb_call_default % t
-
     def mips_genstub(self,fname, idname):
         t = { "fname"  : fname,
               "idname" : idname }
@@ -373,13 +282,7 @@
 
             if t["common"] >= 0 or t["armid"] >= 0:
                 num_regs = count_arm_param_registers(syscall_params)
-                if gen_thumb_stubs:
-                    t["asm-thumb"] = self.thumb_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
-                else:
-                    if gen_eabi_stubs:
-                        t["asm-arm"]   = self.arm_eabi_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
-                    else:
-                        t["asm-arm"]   = self.arm_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
+                t["asm-arm"] = self.arm_eabi_genstub(syscall_func,num_regs,"__NR_"+syscall_name)
 
             if t["common"] >= 0 or t["x86id"] >= 0:
                 num_regs = count_generic_param_registers(syscall_params)
@@ -391,6 +294,7 @@
                 E("cid for dispatch syscalls is only supported for x86 in "
                   "'%s'" % syscall_name)
                 return
+
             if t["common"] >= 0 or t["mipsid"] >= 0:
                 t["asm-mips"] = self.mips_genstub(syscall_func,"__NR_"+syscall_name)
 
@@ -464,7 +368,7 @@
         fp.write( "# auto-generated by gensyscalls.py, do not touch\n" )
         fp.write( "syscall_src := \n" )
         arch_test = {
-            "arm": lambda x: x.has_key("asm-arm") or x.has_key("asm-thumb"),
+            "arm": lambda x: x.has_key("asm-arm"),
             "x86": lambda x: x.has_key("asm-x86"),
             "mips": lambda x: x.has_key("asm-mips")
         }
@@ -488,14 +392,6 @@
                 fp.close()
                 self.new_stubs.append( fname )
 
-            if sc.has_key("asm-thumb") and 'arm' in all_archs:
-                fname = "arch-arm/syscalls/%s.S" % sc["func"]
-                D2( ">>> generating "+fname )
-                fp = create_file( fname )
-                fp.write(sc["asm-thumb"])
-                fp.close()
-                self.new_stubs.append( fname )
-
             if sc.has_key("asm-x86") and 'x86' in all_archs:
                 fname = "arch-x86/syscalls/%s.S" % sc["func"]
                 D2( ">>> generating "+fname )
diff --git a/libm/fake_long_double.c b/libm/fake_long_double.c
index 9b934d2..fab32fe 100644
--- a/libm/fake_long_double.c
+++ b/libm/fake_long_double.c
@@ -39,6 +39,7 @@
 long double cbrtl(long double a1) { return cbrt(a1); }
 long double copysignl(long double a1, long double a2) { return copysign(a1, a2); }
 long double coshl(long double a1) { return cosh(a1); }
+long double cosl(long double a1) { return cos(a1); }
 long double erfcl(long double a1) { return erfc(a1); }
 long double erfl(long double a1) { return erf(a1); }
 long double expm1l(long double a1) { return expm1(a1); }
@@ -64,6 +65,8 @@
 long double scalbnl(long double a1, int a2) { return scalbn(a1, a2); }
 long double significandl(long double a1) { return significand(a1); }
 long double sinhl(long double a1) { return sinh(a1); }
+long double sinl(long double a1) { return sin(a1); }
 long double sqrtl(long double a1) { return sqrt(a1); }
 long double tanhl(long double a1) { return tanh(a1); }
+long double tanl(long double a1) { return tan(a1); }
 long double tgammal(long double a1) { return tgamma(a1); }