From owner-cvs-ports@FreeBSD.ORG Thu Aug 31 11:59:23 2006 Return-Path: X-Original-To: cvs-ports@freebsd.org Delivered-To: cvs-ports@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8BA9E16A4DD for ; Thu, 31 Aug 2006 11:59:23 +0000 (UTC) (envelope-from schilling@fokus.fraunhofer.de) Received: from mailhub.fokus.fraunhofer.de (mailhub.fokus.fraunhofer.de [193.174.154.14]) by mx1.FreeBSD.org (Postfix) with ESMTP id 25BC743D5D for ; Thu, 31 Aug 2006 11:59:14 +0000 (GMT) (envelope-from schilling@fokus.fraunhofer.de) Received: from burner.fokus.fraunhofer.de (burner [10.147.65.166]) by mailhub.fokus.fraunhofer.de (8.11.6p2/8.11.6) with ESMTP id k7VBvjF07442; Thu, 31 Aug 2006 13:57:45 +0200 (MEST) Received: (from jes@localhost) by burner.fokus.fraunhofer.de (8.12.9+Sun/8.12.9/Submit) id k7VBuemx021777; Thu, 31 Aug 2006 13:56:40 +0200 (CEST) From: Joerg Schilling Message-Id: <200608311156.k7VBuemx021777@burner.fokus.fraunhofer.de> Date: Thu, 31 Aug 2006 13:56:39 +0200 To: schilling@fokus.fraunhofer.de, marius@alchemy.franken.de References: <200608280627.k7S6RBh1019446@burner.fokus.fraunhofer.de> <20060828153510.GJ28747@alchemy.franken.de> In-Reply-To: <20060828153510.GJ28747@alchemy.franken.de> User-Agent: nail 11.22 3/20/05 MIME-Version: 1.0 Content-Type: text/plain; charset=ISO8859-1 Content-Transfer-Encoding: 8bit Cc: cvs-ports@freebsd.org Subject: Re: cvs commit: ports/sysutils/cdrdao/files X-BeenThere: cvs-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Aug 2006 11:59:23 -0000 Marius Strobl wrote: > > I am not shure about the background of this patch, but it seems that you have a > > major missconception of the Schily Makefile system..... > > > > 1) > > The Schily Makefile system does not ignore the exist status except when > > you are using a broken make program (e.g. smake-1.2a23 that calls > > "sh -c command...." instead of "sh -ce command....") or a shell that > > incorrectly handles the -e flag. It seems that there sre still peple who do not > > understand the POSIX shell rules correctly. > > What I was refering to is the fact that the unaltered Schily > Makefile system does ignore the exist status on at least both > FreeBSD and Solaris when used with GNU make (at least with 3.80 > and 3.81, but AFAIR also with all previous versions I used). > Regardless of whether that's a bug or not, it's the reason why > a core dumping avoffset doesn't cause the build of Cdrtools to > fail when using GNU make. This is not true: An unaltered Schily Makefile system does not ignore the exist status in case you use SunPro make or my smake. So it is obviously a GNU make bug. This is why GNU make is only the last resort in case that neither smake (the preferred make) not SunPro make is available. > > 2) > > If avoffset dumps core, you found a serious problem that needs to be fixed. > > The expected error situations for avoffset (when stack scanning is not possible > > on a specific platform) is to receive a SIGBUS or a SIGDEV. There is a handler > > that catches these signals and calls exit(0). If you see a SIGILL, then you > > should check your compiler....or find another reason why an illegal instruction > > gets executed while the code only follows a linked list. > > > > Using the Sun C-compiler, I receive a SIGBUS (with address allignement error) > > on Sparc using 64 bits. > > The SIGILL is due to a data access exception. Maybe a FP_OFF of > 0x10 isn't appropriate for GCC on FreeBSD/sparc64? With GCC 3.4.4 > and 3.4.6 changing FP_OFF from 0x10 to 0 changes the SIGILL into > a SIGSEGV (I also get a SIGSEGV with FP_OFF = 0x10 when compiling > w/o optimizations). > Anyway, until getting to the bottom of the existing layers of > workarounds and the real problems, adding another workaround in > order to get cdrdao build again seemed reasonable... The correct workaround for your problem would be to add a signal handler for SIGILL. I now use: #ifdef SIGBUS signal(SIGBUS, handler); #endif signal(SIGSEGV, handler); #ifdef SIGILL signal(SIGILL, handler); /* For gcc -m64/sparc on FreeBSD */ #endif And it may be useful to add handlers for all other Core dump signals too. Jörg -- EMail:joerg@schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin js@cs.tu-berlin.de (uni) schilling@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/ URL: http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily