Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171025211623.GU15263@port70.net>
Date: Wed, 25 Oct 2017 23:16:23 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Subject: Re: How to handle attempts to combine ARM Thumb with frame
 pointers?

* Andre McCurdy <armccurdy@...il.com> [2017-10-09 09:48:29 -0700]:
> On Sat, Oct 7, 2017 at 8:21 PM, Rich Felker <dalias@...c.org> 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

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.