Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 64718 Details for
Bug 100659
Using _syscall6 from include/asm/unistd.h segfaults with -fPIC
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
reworked patch for unistd.h resolving syscall6 bug
unistd.h-i386-pic-v2.patch (text/plain), 4.52 KB, created by
Kevin F. Quinn (RETIRED)
on 2005-07-30 02:48:27 UTC
(
hide
)
Description:
reworked patch for unistd.h resolving syscall6 bug
Filename:
MIME Type:
Creator:
Kevin F. Quinn (RETIRED)
Created:
2005-07-30 02:48:27 UTC
Size:
4.52 KB
patch
obsolete
>--- ./include/asm-i386/unistd.h.orig 2005-07-30 11:30:46.000000000 +0200 >+++ ./include/asm-i386/unistd.h 2005-07-30 11:33:50.000000000 +0200 >@@ -321,6 +321,21 @@ > __syscall_return(type,__res); \ > } > >+#ifdef __PIC__ >+#define _syscall1(type,name,type1,arg1) \ >+type name(type1 arg1) \ >+{ \ >+long __res; \ >+__asm__ volatile (\ >+ "pushl %%ebx\n\t" \ >+ "movl %2,%%ebx\n\t" \ >+ "int $0x80\n\t" \ >+ "popl %%ebx\n\t" \ >+ : "=a" (__res) \ >+ : "0" (__NR_##name),"r" ((long)(arg1))); \ >+__syscall_return(type,__res); \ >+} >+#else > #define _syscall1(type,name,type1,arg1) \ > type name(type1 arg1) \ > { \ >@@ -330,7 +345,23 @@ > : "0" (__NR_##name),"b" ((long)(arg1))); \ > __syscall_return(type,__res); \ > } >+#endif > >+#ifdef __PIC__ >+#define _syscall2(type,name,type1,arg1,type2,arg2) \ >+type name(type1 arg1,type2 arg2) \ >+{ \ >+long __res; \ >+__asm__ volatile (\ >+ "pushl %%ebx\n\t" \ >+ "movl %2,%%ebx\n\t" \ >+ "int $0x80\n\t" \ >+ "popl %%ebx\n\t" \ >+ : "=a" (__res) \ >+ : "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2))); \ >+__syscall_return(type,__res); \ >+} >+#else > #define _syscall2(type,name,type1,arg1,type2,arg2) \ > type name(type1 arg1,type2 arg2) \ > { \ >@@ -340,7 +371,24 @@ > : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \ > __syscall_return(type,__res); \ > } >+#endif > >+#ifdef __PIC__ >+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ >+type name(type1 arg1,type2 arg2,type3 arg3) \ >+{ \ >+long __res; \ >+__asm__ volatile (\ >+ "pushl %%ebx\n\t" \ >+ "movl %2,%%ebx\n\t" \ >+ "int $0x80\n\t" \ >+ "popl %%ebx\n\t" \ >+ : "=a" (__res) \ >+ : "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2)), \ >+ "d" ((long)(arg3))); \ >+__syscall_return(type,__res); \ >+} >+#else > #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ > type name(type1 arg1,type2 arg2,type3 arg3) \ > { \ >@@ -351,7 +399,24 @@ > "d" ((long)(arg3))); \ > __syscall_return(type,__res); \ > } >+#endif > >+#ifdef __PIC__ >+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ >+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ >+{ \ >+long __res; \ >+__asm__ volatile (\ >+ "pushl %%ebx\n\t" \ >+ "movl %2,%%ebx\n\t" \ >+ "int $0x80\n\t" \ >+ "popl %%ebx\n\t" \ >+ : "=a" (__res) \ >+ : "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2)), \ >+ "d" ((long)(arg3)),"S" ((long)(arg4))); \ >+__syscall_return(type,__res); \ >+} >+#else > #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ > type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ > { \ >@@ -362,7 +427,25 @@ > "d" ((long)(arg3)),"S" ((long)(arg4))); \ > __syscall_return(type,__res); \ > } >+#endif > >+#ifdef __PIC__ >+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ >+ type5,arg5) \ >+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ >+{ \ >+long __res; \ >+__asm__ volatile (\ >+ "pushl %%ebx\n\t" \ >+ "movl %2,%%ebx\n\t" \ >+ "int $0x80\n\t" \ >+ "popl %%ebx\n\t" \ >+ : "=a" (__res) \ >+ : "0" (__NR_##name),"m" ((long)(arg1)),"c" ((long)(arg2)), \ >+ "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \ >+__syscall_return(type,__res); \ >+} >+#else > #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ > type5,arg5) \ > type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ >@@ -374,7 +457,35 @@ > "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \ > __syscall_return(type,__res); \ > } >+#endif > >+/* Note; since %2 is memory, it's likely to be offset from %%ebp, >+ * so the read of %2 must occur before %%ebp is used to save %%eax. >+ * Moving %1 to %%eax is safe since %1 is immediate, and won't be >+ * an offset from %%ebx. >+ */ >+#ifdef __PIC__ >+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ >+ type5,arg5,type6,arg6) \ >+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \ >+{ \ >+long __res; \ >+__asm__ volatile (\ >+ "pushl %%ebp\n\t" \ >+ "pushl %%ebx\n\t" \ >+ "movl %2,%%ebx\n\t" \ >+ "movl %%eax,%%ebp\n\t" \ >+ "movl %1,%%eax\n\t" \ >+ "int $0x80\n\t" \ >+ "popl %%ebx\n\t" \ >+ "popl %%ebp\n\t" \ >+ : "=a" (__res) \ >+ : "i" (__NR_##name),"m" ((long)(arg1)),"c" ((long)(arg2)), \ >+ "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)), \ >+ "0" ((long)(arg6))); \ >+__syscall_return(type,__res); \ >+} >+#else > #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ > type5,arg5,type6,arg6) \ > type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \ >@@ -387,6 +498,7 @@ > "0" ((long)(arg6))); \ > __syscall_return(type,__res); \ > } >+#endif > > #ifdef __KERNEL__ > #define __ARCH_WANT_IPC_PARSE_VERSION
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 100659
:
64586
|
64587
| 64718