Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 464450 Details for
Bug 610104
sys-apps/memtest86+-5.01-r2 inline asm fails due to -fPIC
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch to save/load ebx in affected blocks
memtest86+-5.01-fixed-use-of-PIC-ebx-register-in-inline-assembly.patch (text/plain), 6.98 KB, created by
Michael K. Plante
on 2017-02-20 17:29:59 UTC
(
hide
)
Description:
patch to save/load ebx in affected blocks
Filename:
MIME Type:
Creator:
Michael K. Plante
Created:
2017-02-20 17:29:59 UTC
Size:
6.98 KB
patch
obsolete
>From 3d61d48bde6894c34b4e06434f9d684ea3631c99 Mon Sep 17 00:00:00 2001 >From: Michael Plante <michael.plante@gmail.com> >Date: Mon, 20 Feb 2017 11:53:14 -0500 >Subject: [PATCH 1/1] fixed use of PIC (ebx) register in inline assembly > >Signed-off-by: Michael Plante <michael.plante@gmail.com> >--- > test.c | 53 ++++++++++++++++++++++++++++++++++++++++------------- > 1 file changed, 40 insertions(+), 13 deletions(-) > >diff --git a/test.c b/test.c >index e3b6013..a95fff3 100644 >--- a/test.c >+++ b/test.c >@@ -369,6 +369,8 @@ void movinvr(int me) > */ > > asm __volatile__ ( >+ "pushl %%ebx\n\t" >+ "mov %1,%%ebx\n\t" > "jmp L200\n\t" > ".p2align 4,,7\n\t" > "L201:\n\t" >@@ -380,7 +382,8 @@ void movinvr(int me) > "movl %%eax,(%%edi)\n\t" > "cmpl %%ebx,%%edi\n\t" > "jb L201\n\t" >- : : "D" (p), "b" (pe), "c" (me) >+ "popl %%ebx\n\t" >+ : : "D" (p), "r" (pe), "c" (me) > : "eax" > ); > p = pe + 1; >@@ -433,7 +436,8 @@ void movinvr(int me) > xorVal = 0; > } > asm __volatile__ ( >- >+ "pushl %%ebx\n\t" >+ "movl %2,%%ebx\n\t" > "pushl %%ebp\n\t" > > // Skip first increment >@@ -499,7 +503,8 @@ void movinvr(int me) > > "L24:\n\t" > "popl %%ebp\n\t" >- :: "D" (p), "S" (pe), "b" (xorVal), >+ "popl %%ebx\n\t" >+ :: "D" (p), "S" (pe), "r" (xorVal), > "d" (me) > : "eax", "ecx" > ); >@@ -601,6 +606,8 @@ void movinv1 (int iter, ulong p1, ulong p2, int me) > }*/ > > asm __volatile__ ( >+ "pushl %%ebx\n\t" \ >+ "movl %3,%%ebx\n\t" \ > "jmp L2\n\t" \ > ".p2align 4,,7\n\t" \ > "L0:\n\t" \ >@@ -630,7 +637,8 @@ void movinv1 (int iter, ulong p1, ulong p2, int me) > "jmp L5\n" \ > > "L4:\n\t" \ >- :: "a" (p1), "D" (p), "d" (pe), "b" (p2) >+ "popl %%ebx\n\t" \ >+ :: "a" (p1), "D" (p), "d" (pe), "r" (p2) > : "ecx" > ); > p = pe + 1; >@@ -673,6 +681,8 @@ void movinv1 (int iter, ulong p1, ulong p2, int me) > } while (--p >= pe);*/ > > asm __volatile__ ( >+ "pushl %%ebx\n\t" >+ "movl %3,%%ebx\n\t" > "jmp L9\n\t" > ".p2align 4,,7\n\t" > "L11:\n\t" >@@ -702,7 +712,8 @@ void movinv1 (int iter, ulong p1, ulong p2, int me) > "jmp L10\n" > > "L7:\n\t" >- :: "a" (p1), "D" (p), "d" (pe), "b" (p2) >+ "popl %%ebx\n\t" >+ :: "a" (p1), "D" (p), "d" (pe), "r" (p2) > : "ecx" > ); > p = pe - 1; >@@ -760,6 +771,8 @@ void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me) > * } > */ > asm __volatile__ ( >+ "pushl %%ebx\n\t" >+ "movl %4,%%ebx\n\t" > "jmp L20\n\t" > ".p2align 4,,7\n\t" > "L923:\n\t" >@@ -778,8 +791,10 @@ void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me) > "L22:\n\t" > "cmpl %%edx,%%edi\n\t" > "jb L923\n\t" >- : "=b" (k), "=c" (pat) >- : "D" (p),"d" (pe),"b" (k),"c" (pat), >+ "movl %%ebx,%0\n\t" >+ "popl %%ebx\n\t" >+ : "=r" (k), "=c" (pat) >+ : "D" (p),"d" (pe),"r" (k),"c" (pat), > "a" (sval), "S" (lb) > ); > p = pe + 1; >@@ -833,6 +848,8 @@ void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me) > * } > */ > asm __volatile__ ( >+ "pushl %%ebx\n\t" >+ "movl %4,%%ebx\n\t" > "pushl %%ebp\n\t" > "jmp L30\n\t" > ".p2align 4,,7\n\t" >@@ -881,8 +898,10 @@ void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me) > > "L33:\n\t" > "popl %%ebp\n\t" >- : "=b" (k),"=c" (pat) >- : "D" (p),"d" (pe),"b" (k),"c" (pat), >+ "movl %%ebx,%0\n\t" >+ "popl %%ebx\n\t" >+ : "=r" (k),"=c" (pat) >+ : "D" (p),"d" (pe),"r" (k),"c" (pat), > "a" (sval), "S" (lb) > ); > p = pe + 1; >@@ -942,6 +961,8 @@ void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me) > * }; > */ > asm __volatile__ ( >+ "pushl %%ebx\n\t" >+ "movl %4,%%ebx\n\t" > "pushl %%ebp\n\t" > "jmp L40\n\t" > ".p2align 4,,7\n\t" >@@ -990,8 +1011,10 @@ void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me) > > "L43:\n\t" > "popl %%ebp\n\t" >- : "=b" (k), "=c" (pat) >- : "D" (p),"d" (pe),"b" (k),"c" (pat), >+ "movl %%ebx,%0\n\t" >+ "popl %%ebx\n\t" >+ : "=r" (k), "=c" (pat) >+ : "D" (p),"d" (pe),"r" (k),"c" (pat), > "a" (p3), "S" (hb) > ); > p = pe - 1; >@@ -1097,6 +1120,8 @@ void modtst(int offset, int iter, ulong p1, ulong p2, int me) > * } > */ > asm __volatile__ ( >+ "pushl %%ebx\n\t" \ >+ "movl %4,%%ebx\n\t" \ > "jmp L50\n\t" \ > ".p2align 4,,7\n\t" \ > >@@ -1114,9 +1139,11 @@ void modtst(int offset, int iter, ulong p1, ulong p2, int me) > "L53:\n\t" \ > "cmpl %%edx,%%edi\n\t" \ > "jb L54\n\t" \ >- : "=b" (k) >+ "movl %%ebx,%0\n\t" \ >+ "popl %%ebx\n\t" \ >+ : "=r" (k) > : "D" (p), "d" (pe), "a" (p2), >- "b" (k), "c" (offset) >+ "r" (k), "c" (offset) > ); > p = pe + 1; > } while (!done); >-- >2.10.2 >
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 610104
: 464450 |
464452