From owner-freebsd-ports@FreeBSD.ORG Tue Oct 23 19:26:41 2007 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 62B6316A46C; Tue, 23 Oct 2007 19:26:41 +0000 (UTC) (envelope-from david@wood2.org.uk) Received: from lon-mail-4.gradwell.net (lon-mail-4.gradwell.net [193.111.201.130]) by mx1.freebsd.org (Postfix) with ESMTP id AC5B313C48A; Tue, 23 Oct 2007 19:26:40 +0000 (UTC) (envelope-from david@wood2.org.uk) Received: from argon.wood2.org.uk ([82.71.104.124] country=GB ident=postmaster&pop3$wood2*org*uk) by lon-mail-4.gradwell.net with esmtpa (Gradwell gwh-smtpd 1.259) id 471e402f.ed87.1e6; Tue, 23 Oct 2007 19:40:47 +0100 (envelope-sender ) Message-ID: Date: Tue, 23 Oct 2007 19:39:39 +0100 To: FreeBSD Ports mailing list From: David Wood MIME-Version: 1.0 Content-Type: text/plain;charset=us-ascii;format=flowed User-Agent: Turnpike/6.06-M (<+nhRuLNS5oZIqwOH7WWZxwfp$O>) Cc: ade@FreeBSD.org Subject: Apparent devel/libtool problems with gcc 4.2, as seen with net/freeradius X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Oct 2007 19:26:41 -0000 (ade@ cc'd as maintainer of devel/libtool) Dear all, The upcoming ports freeze has focussed my mind on this problem. I was hoping to wait until ports/117160 was committed which tidies up various issues with the net/freeradius port I maintain first. However, the ports freeze is getting close, the problems mentioned below show just as well in the version of the port in the tree, and this may affect other ports, which is why I wanted to mention it now. PROBLEM 1: failure to link radiusd on 7.0 amd64 Various people (stas@ and pav@ particularly) have been in correspondence with me about the build problem with net/freeradius on 7.0 amd64. The problem isn't a lack of -fPIC; the port already deals with that correctly. The port seemed to stop building on amd64 when 7-CURRENT (as it was then) was switched to gcc 4.2. It's now been marked BROKEN on 7.0 amd64, but the problem on the portsmon runs was in the libtool --mode=link -o radiusd step for the main radiusd binary: /usr/bin/ld: /usr/lib/crt1.o: relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/lib/crt1.o: could not read symbols: Bad value In the discussion that we had then by private mail, one of the committers agreed with my suggestion that this may be a toolchain problem. PROBLEM 2: unexecutable radiusd on 6.2 i386 when built with gcc 4.2 Subsequently, I tried building the net/freeradius port with make USE_GCC=4.2 install on my 6.2-RELEASE-p8 i386 box (at this time, I'm one version of lang/gcc42 out of date - my box is still on gcc-4.2.3_20071011). The net/freeradius port installs and builds OK, but radiusd doesn't work: /usr/local/sbin/radiusd: cannot execute binary file If you go into the src/main directory in the work directory, radiusd there is a script. It won't execute if you built the port with gcc 4.2 - instead you'll get an error along the lines of: /var/ports/usr/ports/net/freeradius/work/freeradius-1.1.7/src/main/.libs/ radiusd: 1: Syntax error: "(" unexpected The real radiusd binary is 'hiding' in .libs; if you try to run .libs/radiusd you get the previous "cannot execute binary file" error. At this point, if you look at the typescript from when you built the port, and repeat the libtool --mode=link step for radiusd with gcc (3.4.6) rather than gcc42, the radiusd binary works correctly! This is exactly the same step that was playing up on 7.0 amd64, though it's broken here in a vastly different way. For testing purposes, running radiusd with -X so that it doesn't daemonise is probably the easiest. If it makes any difference (which I doubt), I typically build the port with LDAP and MYSQL enabled (default versions in both cases) for my environment. This problem with gcc 4.2 on FreeBSD 6.2-RELEASE i386 is repeatable with FreeRADIUS 2.0.0-pre2 (for this port, see ports/117160 and ports/117161 - you need to apply both patches to net/freeradius from the ports tree). I'm pretty sure I tried building using the libtool included with FreeRADIUS rather than the devel/libtool port, and I got the same results - though, unfortunately, I didn't make any notes to remind me exactly what I did. OVERALL I have tried looking at what libtool is doing, but it's far too complicated for me to sort out easily, as a relative novice to all things libtool. What I can say is that libtool seems to carry out a *very* different set of steps between the two gcc versions. I live in hope that there may just be one problem here with two different sets of symptoms - but it could just as easily be two separate problems. Help would be *greatly* appreciated. If this does turn out to be a libtool problem, there may be more problems are lurking with libtool and gcc 4.2. I believe that this is not to do with anything in the ports of the FreeRADIUS source, though if someone can prove me wrong and explain why, I'll be just as happy. linimon@ is, I believe, aware that I think there may be a problem with libtool. At the very least, I'd urge maintainers to check that any software that uses libtool not only builds with gcc 4.2, but works when built with gcc 4.2 as well. Best wishes, David (net/freeradius maintainer) PS: I'm aware of ports/117262 thanks to edwin's script - I am working on a major upgrade to the rc.d script with just one problem now left to fix. I will hopefully have a patch ready to submit shortly. -- David Wood david@wood2.org.uk