From: Jakub Jelinek <firstname.lastname@example.org> To: Linus Torvalds <email@example.com> Cc: Steven Noonan <firstname.lastname@example.org>, Ingo Molnar <email@example.com>, Linux Kernel mailing List <firstname.lastname@example.org>, Peter Zijlstra <email@example.com>, Oleg Nesterov <firstname.lastname@example.org>, Fengguang Wu <email@example.com>, Richard Henderson <firstname.lastname@example.org>, Thomas Gleixner <email@example.com>, Andrew Morton <firstname.lastname@example.org> Subject: Re: [GIT PULL] compiler/gcc4: Add quirk for 'asm goto' miscompilation bug Date: Thu, 13 Feb 2014 08:48:17 +0100 [thread overview] Message-ID: <20140213074817.GT20378@tucnak.redhat.com> (raw) In-Reply-To: <CA+55aFys_VK+q3LMRzEM-AKU-=fM_tgiDdLm2AO=jVfH7OvrHQ@mail.gmail.com> On Wed, Feb 12, 2014 at 08:11:49PM -0800, Linus Torvalds wrote: > Jakub, any suggestions to how Steven might be able to pinpoint where > the code generation problem lies? For a suspected wrong-code where you have no idea where the problem is from debugging or oops etc., usually the best way is to bisect first at the *.o level between (ABI compatible) objects built in a way that it works (in this case supposedly the asm goto workaround you have in the kernel, but generally it can be -O0 compilation, a different version of the compiler, some other compiler flags that make the issue go away) and objects built in a way that fails, once you narrow it down to (hopefully a single) object where everything built the "bad" way but that single object works in the end and everything built the "good" way but that single object fails, the next step is to narrow it down to a single routine (unless there is e.g. just a single asm goto left in the TU). For that one can try e.g. optimize attribute on selected functions, or in this case supposedly preprocessing the file and bisecting between portions of the preprocessed file from "good" preprocessed file (with the asm goto workarounds applied) and "bad" preprocessed file (without them) - count the number of asm gotos there and bisect to find which asm goto matters. Or it is also possible to bisect at the *.s level (easiest is to build with -fno-asynchronous-unwind-tables -fno-exceptions -g0 if possible to decrease number of labels, build twice ("good" and "bad"), then rename the .LNNN labels in one or both files such that they don't clash (say to .LXNNN in one file, .LYNNN in another one) and then bisect at the function level - start with taking approximately first half of functions from one file and second half from another file, etc.). When you narrow it down to function level, eyeball the assembly and try to find out where it is wrong, or try to create a self-contained executable testcase out of the preprocessed source (cut out everything unneeded from the preprocessed file, keep there just the problematic routine and everything that is inlined into it and all symbols they need, supply from another file? a new main that calls the routine with the parameters that cause the problem and stub all the functions it calls with something that still reproduces it), or even just file a http://gcc.gnu.org/bugzilla/ bug with the preprocessed source, compiler options and hopefully detailed description what to look at. Jakub
next prev parent reply other threads:[~2014-02-13 7:48 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-10-12 17:10 Ingo Molnar 2014-02-13 3:09 ` Steven Noonan 2014-02-13 4:11 ` Linus Torvalds 2014-02-13 4:53 ` [PATCH] compiler/gcc4: make quirk for asm_volatile_goto unconditional Steven Noonan 2014-02-13 6:48 ` Mike Galbraith 2014-02-13 7:01 ` [PATCH v2] " Steven Noonan 2014-02-13 11:37 ` [tip:x86/urgent] compiler/gcc4: Make quirk for asm_volatile_goto( ) unconditional tip-bot for Steven Noonan 2014-02-13 11:55 ` Jakub Jelinek 2014-02-13 13:44 ` Steven Noonan 2014-07-10 15:00 ` Vlastimil Babka 2014-02-13 7:48 ` Jakub Jelinek [this message] 2014-02-13 9:43 ` [GIT PULL] compiler/gcc4: Add quirk for 'asm goto' miscompilation bug Ingo Molnar
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20140213074817.GT20378@tucnak.redhat.com \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [GIT PULL] compiler/gcc4: Add quirk for '\''asm goto'\'' miscompilation bug' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.