From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/5109 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: Broken GCC versions: 4.8.2 and 4.9.0 Date: Sun, 11 May 2014 12:19:43 -0400 Message-ID: <20140511161943.GR26358@brightrain.aerifal.cx> References: <20140511010503.GA6502@brightrain.aerifal.cx> <20140511181020.0a8b66f1@free-electrons.com> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1399825205 8147 80.91.229.3 (11 May 2014 16:20:05 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 11 May 2014 16:20:05 +0000 (UTC) Cc: musl@lists.openwall.com To: Thomas Petazzoni Original-X-From: musl-return-5114-gllmg-musl=m.gmane.org@lists.openwall.com Sun May 11 18:20:00 2014 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1WjWTn-0007NB-Ge for gllmg-musl@plane.gmane.org; Sun, 11 May 2014 18:19:59 +0200 Original-Received: (qmail 16094 invoked by uid 550); 11 May 2014 16:19:58 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 16086 invoked from network); 11 May 2014 16:19:58 -0000 Content-Disposition: inline In-Reply-To: <20140511181020.0a8b66f1@free-electrons.com> User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:5109 Archived-At: On Sun, May 11, 2014 at 06:10:20PM +0200, Thomas Petazzoni wrote: > Dear Rich Felker, > > On Sat, 10 May 2014 21:05:03 -0400, Rich Felker wrote: > > > It's come to my attention that GCC versions 4.8.2 and 4.9.0 are > > performing invalid optimizations that result in a broken musl > > libc.a/libc.so. It's not clear yet whether there's a good workaround, > > or whether we should attempt to work around the problem, so for now, > > please just be aware that these versions of GCC cannot be used to > > compile musl. Using them to compile programs against musl should not > > be a problem. I'll post more details later. The short version is that > > it's making incorrect assumptions about the reachability of global > > variables that have a local weak definition and an external strong > > one. > > Hum, interesting. I've recently tested gcc 4.8.2 + musl on ARM, and gcc > 4.9.0 + musl on i386, and I could boot a minimal musl+Busybox system > under Qemu perfectly fine. Maybe the problem you refer to only affects > certain parts of libc.a/libc.so? I've filed the bug report which you can see here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144 Something like the following command should confirm whether your build is affected: nm src/stdio/fflush.o | grep stdout For broken gcc versions, there is no output. For non-broken ones, you should see something like: 00000000 V __stdout_used Note that fflush(0) is just one place where the behavior may be affected by the invalid optimization. There are at least several others, though at a glance the others are more likely to be affected only with heavy inlining (but in principle, they "should" be affected even without inlining as long as inter-procedural optimizations are performed). Rich