OSDN Git Service

Using local variable 'result' caused problems with lseek64 syscall failing with gcc...
authorKhem Raj <kraj@mvista.com>
Tue, 13 Mar 2007 00:02:10 +0000 (00:02 -0000)
committerKhem Raj <kraj@mvista.com>
Tue, 13 Mar 2007 00:02:10 +0000 (00:02 -0000)
libc/sysdeps/linux/i386/bits/syscalls.h

index eb77ea8..8b2f1b0 100644 (file)
@@ -152,28 +152,27 @@ type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6) \
 { \
 return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \
 }
-#define INLINE_SYSCALL(name, nr, args...) \
+ #define INLINE_SYSCALL(name, nr, args...) \
   ({                                                                          \
-    unsigned int result = INTERNAL_SYSCALL (name, , nr, args);                \
-    if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, ), 0))            \
+    unsigned int _resultvar = INTERNAL_SYSCALL (name, , nr, args);            \
+    if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_resultvar, ), 0))        \
       {                                                                       \
-        __set_errno (INTERNAL_SYSCALL_ERRNO (result, ));                      \
-        result = 0xffffffff;                                                  \
+        __set_errno (INTERNAL_SYSCALL_ERRNO (_resultvar, ));                  \
+        _resultvar = 0xffffffff;                                              \
       }                                                                       \
-    (int) result; })
+    (int) _resultvar; })
 
 #define INTERNAL_SYSCALL(name, err, nr, args...) \
   ({                                                                          \
-    unsigned int resultvar;                                                   \
-    __asm__ __volatile__ (                                                    \
+    register unsigned int resultvar;                                          \
+    asm volatile (                                                            \
     LOADARGS_##nr                                                             \
     "movl %1, %%eax\n\t"                                                      \
     "int $0x80\n\t"                                                           \
     RESTOREARGS_##nr                                                          \
     : "=a" (resultvar)                                                        \
     : "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc");                  \
-    (int) resultvar; })
-
+     (int) resultvar; })
 
 #define LOADARGS_0
 #define LOADARGS_1 \