Hello, Yes, your suggestion to define MY_CONTEXT_USE_UCONTEXT when compiling a release build with gcc 4.7.1 worked. Interestingly, this patch was not required with gcc 4.7.1 debug build. BTW, there are a LOT of compiler warnings, one of which is: sql/log.h:480:3: warning: access declarations are deprecated in favour of using-declarations; suggestion: add the ‘using’ keyword [-Wdeprecated] On Fri, Aug 3, 2012 at 2:08 PM, Michael Widenius <monty@askmonty.org> wrote:
Hi!
"Rich" == Rich Prohaska <prohaska@tokutek.com> writes:
Rich> hello, Rich> we have been using gcc 4.4 to build mysql and mariadb successfully. Rich> however, when we tried to use gcc 4.7.1 to build mariadb-5.5.25, we Rich> hit this problem:
Rich> /home/tokubuild/build-tokudb-46462/mariadb-5.5.25-tokudb-46462-linux-x86_64-build/mariadb-5.5.25-tokudb-46462-src/mysys/my_context.c: Rich> Assembler messages: Rich> /home/tokubuild/build-tokudb-46462/mariadb-5.5.25-tokudb-46462-linux-x86_64-build/mariadb-5.5.25-tokudb-46462-src/mysys/my_context.c:207: Rich> Error: CFI instruction used without previous .cfi_startproc
Rich> what compiler do you use to build mariadb?
We are using a lot of different compilers on a lot of different systems and compilers and on all tested ones, MariaDB compiles nicely.
Don't know if we have gcc 4.7.1 on any system. I am using latest Open-SuSE myself and that comes with gcc 4.6.2
It looks like issue is that the new gcc has a different asm syntax than the old one :(
Fix:
Ensure that MY_CONTEXT_USE_UCONTEXT is defined when you compile MariaDB. You should be able to do that by slight modify the first ifdef in include/my_context.h to define MY_CONTEXT_USE_UCONTEXT if gcc 4.7 is used:
Currenct code: ----------- #ifdef __WIN__ #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__) #define MY_CONTEXT_USE_I386_GCC_ASM #else #define MY_CONTEXT_USE_UCONTEXT #endif ------------
Regards, Monty