From owner-freebsd-ports@FreeBSD.ORG Wed Jun 26 21:09:09 2013 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 190A98A2 for ; Wed, 26 Jun 2013 21:09:09 +0000 (UTC) (envelope-from freebsd@grem.de) Received: from mail.grem.de (outcast.grem.de [213.239.217.27]) by mx1.freebsd.org (Postfix) with SMTP id 757471D30 for ; Wed, 26 Jun 2013 21:09:08 +0000 (UTC) Received: (qmail 58468 invoked by uid 89); 26 Jun 2013 21:09:07 -0000 Received: from unknown (HELO bsd64.grem.de) (mg@grem.de@93.215.170.226) by mail.grem.de with ESMTPA; 26 Jun 2013 21:09:07 -0000 Date: Wed, 26 Jun 2013 23:09:08 +0200 From: Michael Gmelin To: Konstantin Belousov Subject: Re: Global destructor order problems (was: Re: Are ports supposed to build and run on 10-CURRENT?) Message-ID: <20130626230908.327fabdf@bsd64.grem.de> In-Reply-To: <20130626210534.GY91021@kib.kiev.ua> References: <20130613031535.4087d7f9@bsd64.grem.de> <20130626015508.426ab5b9@bsd64.grem.de> <51CAADB8.7090603@FreeBSD.org> <20130626133149.4835f14a@bsd64.grem.de> <7CD9075C-F8D6-41C1-8D21-8B10DF866ECE@FreeBSD.org> <20130626204521.GU91021@kib.kiev.ua> <6900C006-2A57-4EAF-B19A-629A85CBA001@FreeBSD.org> <20130626210534.GY91021@kib.kiev.ua> X-Mailer: Claws Mail 3.9.1 (GTK+ 2.24.18; amd64-portbld-freebsd9.1) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: David Chisnall , Brooks Davis , Dimitry Andric , Matthias Andree , "freebsd-ports@freebsd.org Ports" X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Jun 2013 21:09:09 -0000 On Thu, 27 Jun 2013 00:05:34 +0300 Konstantin Belousov wrote: > On Wed, Jun 26, 2013 at 10:59:24PM +0200, Dimitry Andric wrote: > > On Jun 26, 2013, at 22:45, Konstantin Belousov > > wrote: > > > On Wed, Jun 26, 2013 at 09:26:09PM +0200, Dimitry Andric wrote: > > >> This revision is not in 9.1-RELEASE, but it is in 9-STABLE, so > > >> the problem can also be reproduced there. > > > ... > > >> This is roughly gcc 4.3.0 and later. For example, gcc 4.8 > > >> generates: > > > I just tested the thing with gcc 4.8 on up to date stable/9 and > > > HEAD. In both cases, major tom did not fail, at least not in the > > > peculiar way. The gcc-generated code passed the PLT address of > > > the corresponding destructor. > > > > That is strange, did you compile the main program with -fPIC? That > > is the problem case. If you don't compile the main program with > > -fPIC, the problem will indeed not occur. > > I just used the Makefile provided by the earlier message, and it > contains the -fPIC flag (which is strange thing to do on its own, > binaries should use -fPIE). > > This is how the registration for the outer dtr looks for me, gcc > 4.8.1/i386: > > 0x08048763 <+42>: call 0x8048520 <_ZN5OuterC1Ev@plt> > 0x08048768 <+47>: lea 0x28(%ebx),%eax > 0x0804876e <+53>: mov %eax,0x8(%esp) > 0x08048772 <+57>: lea 0x34(%ebx),%eax > 0x08048778 <+63>: mov %eax,0x4(%esp) > 0x0804877c <+67>: mov -0x4(%ebx),%eax > 0x08048782 <+73>: mov %eax,(%esp) > 0x08048785 <+76>: call 0x8048500 <__cxa_atexit@plt> > > ebx was set up earlier as the GOT pointer. The link step doesn't require -fPIC, only main.cpp needs to be built with it to trigger the problem (which is not that uncommon after all). All test were done using amd64. -- Michael Gmelin