From owner-freebsd-questions@FreeBSD.ORG Sat Sep 11 12:26:13 2010 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B4ED106564A for ; Sat, 11 Sep 2010 12:26:13 +0000 (UTC) (envelope-from m.e.sanliturk@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 3E20E8FC15 for ; Sat, 11 Sep 2010 12:26:12 +0000 (UTC) Received: by vws7 with SMTP id 7so3869103vws.13 for ; Sat, 11 Sep 2010 05:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=u68YTeTBRwsMapAOnWUTfGm+bZufr4HU0rNjaXyM+EY=; b=Fmrrepuja0nSx36ueWP2wo5s8t3WT0BtnAvSn2WGSmrUps7FC7bzoCvDSafDJg3kf8 24DF/C4u7LR7LKL/G2dz1aCBWzj50L0EwZVWk3jg9gokGAMEeHkr4iiYsTcb9F+Md5bO 8yjVY1vJZGFyC1Pn9cJ1HpbLAo1N5cqmanvWw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=fUCtGCE6WzNWFuRERa6V7eBHh2nWsB2lod2gWyFUiDmn16xbV42mw32qT/1mTYBInv 1WNmJTqFRu0cVFyneWqYeokqj+47eK8ooOJeHPdhuDvZyBGuZe1KuyS3TWiS5be5dDHk mWQYHyg01bOSGRwX1+Jgj32oZMXLRsXCJQNXk= MIME-Version: 1.0 Received: by 10.220.63.78 with SMTP id a14mr1250992vci.225.1284207972009; Sat, 11 Sep 2010 05:26:12 -0700 (PDT) Received: by 10.220.45.147 with HTTP; Sat, 11 Sep 2010 05:26:11 -0700 (PDT) In-Reply-To: References: <4C8B4BC0.1000900@mail.zedat.fu-berlin.de> Date: Sat, 11 Sep 2010 08:26:11 -0400 Message-ID: From: Mehmet Erol Sanliturk To: Andrew Brampton Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: "O. Hartmann" , freebsd-questions@freebsd.org Subject: Re: Compiling software with different compiler than cc or clang results in unusable output X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Sep 2010 12:26:13 -0000 On Sat, Sep 11, 2010 at 5:43 AM, Andrew Brampton > wrote: > On 11 September 2010 10:28, O. Hartmann > wrote: > > > > Dear Sirs, > > > > you see me a kind of desperate. I wrote my own a small piece of software > in > > C, calculating the orbit and position of astronomical objects, astroids, > in > > a heliocentric coordinate system from Keplerian orbital elements. So far. > > The software calculates the set of points of an ellipse based upon > > ephemeridal datas taken from the Minor Planet Cataloge. Again, so far, > > everything all right. The set of points of an orbit is all right and > > correct. But when it comes to positions at a specific time, then I loose > > hair! > > > > Compiling this piece of software with FreeBSD's gcc (V4.2) and clang > (clang > > devel) on my private and lab's FreeBSD boxes (both most recent FreeBSD > > 8.1/amd64), this program does well, the calculated orbital positions are > > very close to professional applications or observational checks. But when > > compiling the sources with gcc44 or gcc45 (same source, same CFLAG > setting, > > mostly no CFLAGS set), then there is a great discrepancy. Sometimes when > > plotting positions, the results plotted seconds before differs from the > most > > recent. The ellipses are allways correct, but the position of a single > point > > at a specific time isn't correct. > > > > I use the GNU autotools to build the package. > > > > I suspekt miscompilations in memory alloction or in some time- or > > mathematical functions like sin, cos. > > > > before I digg deeper I'd like to ask the community for some hints how to > > hunt down such a problem. > > > > regards, > > Oliver > > Sounds a cool project. I suspect you are miss-using a feature of C or > are using uninitialised memory, and with gcc44/45's more aggressive > optimisations it is getting it wrong. I have three suggestions > > 1) Use valgrind to check if it finds anything wrong when running your > program. Check both the good and the bad builds. > > 2) If your program is made up of multiple C files, then try compiling > all of the C files with gcc42, but just one at a time with gcc44. This > way will help you track down exactly which C file has "the bug". > > 3) Finally do some printf debugging to find the first line of code > that is generating the wrong value. > > I hope these suggestions help. > Andrew > > Another check may be to use Sun Studio C and or Fortran compilers . These can be used in Linux ( Linux version of Sun Studio ) and/or OpenSolaris or Solaris ( Solaris version of SunStudio ( both in x86 , x86_64 , Sparc ) ( all of them are ( Solaris , OpenSolaris , Sun Studio , Linux ) free ) . All of them are freely downloadable from www.sun.com and/or www.opensolaris.com ( these sites or their pages may be redirected to www.oracle.com owned pages ) . Personally I tried GCC compilers , but I found that they are very unreliable . Now I am using Sun Studio compilers in OpenSolaris and Linux , and never GCC compilers . Thank you very much . Mehmet Erol Sanliturk