Merge branch 'master' of /opt/gnu-chroot/home/dtbartle/glibc-opensolaris
authorDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Thu, 28 Aug 2008 01:40:01 +0000 (21:40 -0400)
committerDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Thu, 28 Aug 2008 01:40:01 +0000 (21:40 -0400)
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/configure
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/configure.in
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/getcontext.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/swapcontext.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/syscall.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/i386/vfork.S
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/priv.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86_64/vfork.S

index cf52dcc..9d1cb9f 100755 (executable)
@@ -1,3 +1,4 @@
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/solaris2/kopensolaris-gnu.
 
 use_ldconfig=yes
index 7a73ab8..4705fb5 100755 (executable)
@@ -1,4 +1,4 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/unix/sysv/linux.
+# Local configure fragment for sysdeps/unix/sysv/solaris2/kopensolaris-gnu.
 
 use_ldconfig=yes
index 0f6ea55..2b789ff 100644 (file)
 /* note: make sure that we do not use %edx as a scratch (see swapcontext.S) */
 
 ENTRY(__getcontext)
-    /* load ucp (arg) into %ecx */
-    movl 4(%esp), %ecx
+       /* load ucp (arg) into %ecx */
+       movl 4(%esp), %ecx
 
-    /* load return address into %eax */
-    movl 0(%esp), %eax
+       /* load return address into %eax */
+       movl 0(%esp), %eax
 
-    /* push ucp, subcall number, and return address */
-    pushl %ecx
-    pushl $SYS_SUB_getcontext
-    pushl %eax
+       /* push ucp, subcall number, and return address */
+       pushl %ecx
+       pushl $SYS_SUB_getcontext
+       pushl %eax
+       cfi_adjust_cfa_offset (12);
 
-    /* call context syscall */
-    DO_CALL(context, 2)
-    jnb 1f
+       /* call context syscall */
+       DO_CALL(context, 2)
 
-    /* pop args from stack */
-    addl $12, %esp
+       /* Jump if not error.  */
+       jnb 1f;
 
-    /* jump to error label */
-    jmp SYSCALL_ERROR_LABEL
+       /* pop args from stack */
+       addl $12, %esp
+       cfi_adjust_cfa_offset (-12);
+
+       /* Jump to error label.  */
+       jmp SYSCALL_ERROR_LABEL;
 
 1:
-    /* pop args from stack */
-    addl $12, %esp
+       /* pop args from stack */
+       addl $12, %esp
+       cfi_adjust_cfa_offset (-12);
 
-    /* load ucp (arg) into %ecx */
-    movl 4(%esp), %ecx
+       /* load ucp (arg) into %ecx */
+       movl 4(%esp), %ecx
 
-    /* save %esp */
-    leal 4(%esp), %eax
-    movl %eax, oUESP(%ecx)
+       /* save %esp */
+       leal 4(%esp), %eax
+       movl %eax, oUESP(%ecx)
 
-    /* save %eip */
-    movl 0(%esp), %eax
-    movl %eax, oEIP(%ecx)
+       /* save %eip */
+       movl 0(%esp), %eax
+       movl %eax, oEIP(%ecx)
 
-    /* return 0 on success */
-    xorl %eax, %eax
-    movl %eax, oEAX(%ecx)
+       /* return 0 on success */
+       xorl %eax, %eax
+       movl %eax, oEAX(%ecx)
 L(pseudo_end):
        ret
 PSEUDO_END(__getcontext)
index 9273644..a61be26 100644 (file)
@@ -33,20 +33,25 @@ ENTRY(__swapcontext)
     pushl %ecx
     pushl $SYS_SUB_getcontext
     pushl %eax
+       cfi_adjust_cfa_offset (12);
 
     /* call context syscall */
     DO_CALL(context, 2)
-    jnb 1f
 
-    /* pop args from stack */
-    addl $12, %esp
+       /* Jump if not error.  */
+       jnb 1f;
+
+       /* pop args from stack */
+       addl $12, %esp
+       cfi_adjust_cfa_offset (-12);
 
-    /* jump to error label */
-    jmp SYSCALL_ERROR_LABEL
+       /* Jump to error label.  */
+       jmp SYSCALL_ERROR_LABEL;
 
 1:
     /* pop args from stack */
     addl $12, %esp
+       cfi_adjust_cfa_offset (-12);
 
     /* load ucp (arg) into %ecx */
     movl 4(%esp), %ecx
@@ -68,12 +73,14 @@ ENTRY(__swapcontext)
 
     /* push ucp */
     pushl %edx
+       cfi_adjust_cfa_offset (4);
 
     /* call __setcontext */
     call __setcontext
 
     /* pop ucp */
     addl $4, %esp
+       cfi_adjust_cfa_offset (-4);
 
     /* __setcontext sets the return (%eax) */
 L(pseudo_end):
index 0ac6c9a..efd4038 100644 (file)
@@ -46,7 +46,7 @@ ENTRY (__systemcall)
        movl 4(%esp), %edx      /* Save return address into %edx.  */
        pushl %edx              /* Restore return address on stack.  */
        cfi_adjust_cfa_offset (8)
-       jb 1    /* Jump to error handler if error.  */
+       jb 1f   /* Jump to error handler if error.  */
        movl %eax, 0(%ecx)      /* Set first 4 bytes of sysret_t.  */
        movl %edx, 4(%ecx)      /* Set second 4 bytes of sysret_t.  */
        xorl %eax, %eax         /* Set return to 0.  */
index ae98cf9..4e3b828 100644 (file)
 ENTRY (__vfork)
 
     /* save the return address */
-    popl %ecx
+    popl %ecx; cfi_adjust_cfa_offset (-4);
 
     /* call vforkx(0) */
     pushl $0
     pushl $SYS_SUB_vforkx
     pushl %ecx
+       cfi_adjust_cfa_offset (12);
     DO_CALL (forksys, 1)
     jb 2f
 
     /* pop vforkx args */
-    addl $12, %esp
+    addl $12, %esp; cfi_adjust_cfa_offset (-12);
 
     /* In the parent process, %edx == 0, %eax == child pid.
        In the child process, %edx == 1, %eax == parent pid. */
@@ -44,10 +45,10 @@ ENTRY (__vfork)
 
 2:
     /* pop vforkx args */
-    addl $12, %esp
+    addl $12, %esp; cfi_adjust_cfa_offset (-12);
 
     /* restore the return address and jump to the syscall error label */
-    pushl %ecx
+    pushl %ecx; cfi_adjust_cfa_offset (4);
     jmp SYSCALL_ERROR_LABEL
 
 L(pseudo_end):
index 21c8e38..99fd04a 100644 (file)
@@ -31,7 +31,7 @@ DECLARE_INLINE_SYSCALL (int, privsys, int code, priv_op_t op,
 
 __libc_lock_define (static, privimplinfo_lock);
 
-static priv_impl_info_t *__info; // TODO: need to free on exit
+libc_freeres_ptr (static priv_impl_info_t *__info);
 
 int __getprivimplinfo_cached (priv_impl_info_t **info)
 {
index 1e52a57..f7c47b4 100644 (file)
 ENTRY (__vfork)
 
     /* Save the return address */
-    popl scratch
+    popl scratch; cfi_adjust_cfa_offset (-8);
 
     /* Call vforkx(0) */
     pushl $0
     pushl $SYS_SUB_vforkx
     pushl scratch
+       cfi_adjust_cfa_offset (24);
     DO_CALL (forksys, 1)
     jb 2f
-    addl $24, %rsp
+    addl $24, %rsp; cfi_adjust_cfa_offset (-24);
 
     /* In the parent process, %rdx == 0, %rax == child pid.
        In the child process, %rdx == 1, %rax == parent pid. */
@@ -42,8 +43,8 @@ ENTRY (__vfork)
 
 2:
     /* Restore the return address and jump to the syscall error label */
-    addl $24, %rsp
-    pushl scratch
+    addl $24, %rsp; cfi_adjust_cfa_offset (-24);
+    pushl scratch; cfi_adjust_cfa_offset (8);
     jmp SYSCALL_ERROR_LABEL
 
 L(pseudo_end):