Change "g" (general regs) into "r" (hardregs) in clone / modify_ldt /
wine_sigaction __PIC__ cases, since "g" will not work with
-fomit-frame-pointer ("g" is referenced using %esp which was
invalidated before). Bug found and (other) fix suggested by
<daniel@mat.utfsm.cl> Daniel Serpell.
diff --git a/loader/signal.c b/loader/signal.c
index 6be2645..8e4d863 100644
--- a/loader/signal.c
+++ b/loader/signal.c
@@ -96,7 +96,7 @@
"popl %%ebx"
: "=a" (sig)
: "0" (SYS_sigaction),
- "g" (sig),
+ "r" (sig),
"c" (new),
"d" (old) );
#else
diff --git a/memory/ldt.c b/memory/ldt.c
index cdbe7f3..e4bd230 100644
--- a/memory/ldt.c
+++ b/memory/ldt.c
@@ -39,7 +39,7 @@
"popl %%ebx"
: "=a" (res)
: "0" (SYS_modify_ldt),
- "g" (func),
+ "r" (func),
"c" (ptr),
"d" (count) );
#else
diff --git a/misc/port.c b/misc/port.c
index 07d2650..668bf1a 100644
--- a/misc/port.c
+++ b/misc/port.c
@@ -88,7 +88,7 @@
"xorl %%eax,%%eax\n\t" /* Just in case it does*/
"0:"
: "=a" (ret)
- : "0" (SYS_clone), "g" (flags), "c" (stack_ptr) );
+ : "0" (SYS_clone), "r" (flags), "c" (stack_ptr) );
assert( ret ); /* If ret is 0, we returned from the child function */
if (ret > 0) return ret;
errno = -ret;