summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2012-10-30 22:38:15 +0100
committerSergei Golubchik <sergii@pisem.net>2012-10-30 22:38:15 +0100
commit937ae82a1ba2515e2e3def6250bb0b13a228a08d (patch)
treea68b9006c678831faebf57ff6b2151d70cd694cf
parent2d7c39e09627f0071ddb4650b2f0b3f2838e4d99 (diff)
downloadmariadb-git-937ae82a1ba2515e2e3def6250bb0b13a228a08d.tar.gz
fix async client code for i386 (assembly)
and when safemalloc is enabled (use ucontext, otherwise backtrace function gets confused and crashes)
-rw-r--r--include/my_context.h2
-rw-r--r--mysys/my_context.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/include/my_context.h b/include/my_context.h
index 0abf49efd43..3438ce4c969 100644
--- a/include/my_context.h
+++ b/include/my_context.h
@@ -29,7 +29,7 @@
#define MY_CONTEXT_USE_WIN32_FIBERS 1
#elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__x86_64__)
#define MY_CONTEXT_USE_X86_64_GCC_ASM
-#elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__i386__)
+#elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__i386__) && !defined(SAFEMALLOC)
#define MY_CONTEXT_USE_I386_GCC_ASM
#else
#define MY_CONTEXT_USE_UCONTEXT
diff --git a/mysys/my_context.c b/mysys/my_context.c
index d2374391a39..1a147437c90 100644
--- a/mysys/my_context.c
+++ b/mysys/my_context.c
@@ -487,9 +487,9 @@ my_context_spawn(struct my_context *c, void (*f)(void *), void *d)
: [stack] "a" (c->stack_top),
/* Need this in callee-save register to preserve across function call. */
[save] "D" (&c->save[0]),
- [f] "m" (f),
- [d] "m" (d)
- : "ecx", "edx", "memory", "cc"
+ [f] "c" (f),
+ [d] "d" (d)
+ : "memory", "cc"
);
DBUG_SWAP_CODE_STATE(&c->dbug_state);