Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753300AbYKRPAv (ORCPT ); Tue, 18 Nov 2008 10:00:51 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752010AbYKRPAn (ORCPT ); Tue, 18 Nov 2008 10:00:43 -0500 Received: from mx2.mail.elte.hu ([157.181.151.9]:33260 "EHLO mx2.mail.elte.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751076AbYKRPAm (ORCPT ); Tue, 18 Nov 2008 10:00:42 -0500 Date: Tue, 18 Nov 2008 16:00:24 +0100 From: Ingo Molnar To: Jan Beulich Cc: heukelum@fastmail.fm, Andi Kleen , Thomas Gleixner , Alexander van Heukelum , Glauber Costa , LKML , Nick Piggin , "H. Peter Anvin" , Roland McGrath Subject: Re: [RFC,v2] x86_64: save_args out of line Message-ID: <20081118150024.GD30358@elte.hu> References: <1226845741-12470-2-git-send-email-heukelum@fastmail.fm> <20081117175232.GA13766@mailshack.com> <49228648.76E4.0078.0@novell.com> <20081118111633.GA21036@mailshack.com> <4922C863.76E4.0078.0@novell.com> <20081118140349.GC23479@elte.hu> <4922E4D4.76E4.0078.0@novell.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4922E4D4.76E4.0078.0@novell.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-ELTE-VirusStatus: clean X-ELTE-SpamScore: -1.5 X-ELTE-SpamLevel: X-ELTE-SpamCheck: no X-ELTE-SpamVersion: ELTE 2.0 X-ELTE-SpamCheck-Details: score=-1.5 required=5.9 tests=BAYES_00,DNS_FROM_SECURITYSAGE autolearn=no SpamAssassin version=3.2.3 -1.5 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000] 0.0 DNS_FROM_SECURITYSAGE RBL: Envelope sender in blackholes.securitysage.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2543 Lines: 62 * Jan Beulich wrote: > >>> Ingo Molnar 18.11.08 15:03 >>> > >* Jan Beulich wrote: > >> No tool, if you mean that. Extensive changes I verify by looking at > >> the dump, problems are usually found only when back traces don't > >> come out right. > > > >that's a fundamental weakness of all the CFI annotations. > > > >It is outright wrong to waste humans on this mechanic task: as it is > > This part I agree to. > > >abundantly clear to GAS where we change a stack pointer and by how > >much - it could emit magic annotations automatically just as much. > > > >So if you care about it, please fix this in the tools space. The > >entry_64.S impact of finegrained annotations is just too ugly for > >things like this. > > > >One limited exception is for basic stack frames where we do syscalls > >or call into other C code. (i.e. the patch proposed here would have to > >do that limited annotation) > > > >But the per instruction annotations currently in that code are madness > >and must either be cleaned up significantly via the use of GAS macros > >(so that all stack pointer manipulations go via a single macro > >invocation), or be completely auto-generated by GAS. > > Making gas auto-generate this is not really possible (much like ia64 > requires the annotations to be inserted manually), mainly because > gas can't know whether e.g. a push of a register is in order to > preserve its value, or for some other purpose. but that's the exception. Most of the annotations could be auto-generated. > I do have a set of macros for this in nlkd, maybe (as you're asking > for it) I should get them out of there (and convert them to AT&T > syntax). i'd definitely like to have a look ... if you can make this clean enough, most of the resistence to CFI annotations will go away. The requirements is extreme cleanliness: single line in the source that gets us _both_ the instruction and the annotation. Also always insert the proper frame pointer as well, when we call into C. Make it as hard as possible to mess up the annotations - we could even run a build-time grep on the .S files that matter to see whether there's any (common) "naked" stack-manipulating instructions that shouldnt be used. Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/