Re: More LTTng patches
Sergei Shtylyov <[email protected]>
| Newsgroups | gmane.linux.kernel.tracing |
|---|---|
| Organization | MontaVista Software Inc. |
| Message-ID | <[email protected]> |
Hello. Mathieu Desnoyers wrote: >>Source: MontaVista Software, Inc. >>MR: 20036 >>Type: Defect Fix >>Disposition: needs submitting to LTTng community >>Signed-off-by: Mark A. Greer <[email protected]> >>Description: >> Apparently, gcc 4.2 has tighter constrainst for the 'i' asm operands >> than previous gcc versions. This patch changes a 'i' to a 'g' which >> is a more relaxed constraint. >>Index: linux-2.6.18/include/asm-powerpc/marker.h >>=================================================================== >>--- linux-2.6.18.orig/include/asm-powerpc/marker.h >>+++ linux-2.6.18/include/asm-powerpc/marker.h >>@@ -40,7 +40,7 @@ struct __mark_marker { >> "0:\n\t" \ >> "li %0,0;\n\t" \ >> : "=r" (condition) \ >>- : "i" (&__mark_c_##name)); \ >>+ : "g" (&__mark_c_##name)); \ >> __mark_check_format(format, ## args); \ >> if (unlikely(condition)) { \ >> preempt_disable(); \ > I will also change it for asm-generic and asm-i386. I hope to find some > consistency in the way asm operands are treated across architectures. It looks like that issue got fixed in gcc 4.2: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27528 The bad part is that when compiled with fixed gcc, the kernel receives SIGSEGV and dies on bootup... "i" works again now. :-/ WBR, Sergei