From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/12032 Path: news.gmane.org!.POSTED!not-for-mail From: Szabolcs Nagy Newsgroups: gmane.linux.lib.musl.general Subject: Re: How to handle attempts to combine ARM Thumb with frame pointers? Date: Wed, 25 Oct 2017 23:16:23 +0200 Message-ID: <20171025211623.GU15263@port70.net> References: <20171008032153.GH1627@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: blaine.gmane.org 1508966214 20917 195.159.176.226 (25 Oct 2017 21:16:54 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 25 Oct 2017 21:16:54 +0000 (UTC) User-Agent: Mutt/1.6.0 (2016-04-01) To: musl@lists.openwall.com Original-X-From: musl-return-12045-gllmg-musl=m.gmane.org@lists.openwall.com Wed Oct 25 23:16:49 2017 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1e7T2N-00032c-H5 for gllmg-musl@m.gmane.org; Wed, 25 Oct 2017 23:16:31 +0200 Original-Received: (qmail 5432 invoked by uid 550); 25 Oct 2017 21:16:36 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 5414 invoked from network); 25 Oct 2017 21:16:35 -0000 Mail-Followup-To: musl@lists.openwall.com Content-Disposition: inline In-Reply-To: Xref: news.gmane.org gmane.linux.lib.musl.general:12032 Archived-At: * Andre McCurdy [2017-10-09 09:48:29 -0700]: > On Sat, Oct 7, 2017 at 8:21 PM, Rich Felker wrote: > > On Fri, Oct 06, 2017 at 05:53:38PM -0700, Andre McCurdy wrote: > > If you do want to test for broken configurations, rather than > > hard-coding an assumption that some configuration is broken, you > > should test for it. This would look something like, if ARCH is arm, > > try compiling a trivial function with inline asm using r7 and see if > > it fails. > > Yes, I came to the same conclusion after seeing the clang bug, which > seems to suggest that clang uses a frame pointer even with > optimisation enabled. > > > If so, exit with an error or perhaps try adding > > -fomit-frame-pointer and retrying. > > If we over-ride the user supplied CFLAGS then there's probably no need > to test the behaviour of the compiler - we can just force > -fomit-frame-pointer unconditionally when compiling for Thumb/Thumb2. > > There's a slight complication though that if -fno-omit-frame-pointer > is present in the user supplied CFLAGS then adding > -fomit-frame-pointer to CFLAGS_AUTO won't over-ride it (since CFLAGS > appears on the final compiler command line after CFLAGS_AUTO). > > Would it be OK for the configure script to append to CFLAGS? Or should > the configure script perhaps setup a new variable (CFLAGS_FORCE?) > which the Makefile would then add to CFLAGS_ALL after CFLAGS? > glibc works this around in thumb mode by extern syscall asm (of course it cannot guarantee that r7 is a frame pointer at all times, an interrupt can observe r7 with syscall num in it, i'm not sure if that's acceptable for users who compile with frame-pointers, in musl there is some asm code which wont have fp setup anyway). http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/arm/sysdep.h;h=6a64351cdd87c2041d639a17efc9f681262d5e3f;hb=HEAD#l335