From owner-freebsd-ports-bugs@FreeBSD.ORG Sun Jun 23 02:00:00 2013 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id BA6A333B for ; Sun, 23 Jun 2013 02:00:00 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id A126C184C for ; Sun, 23 Jun 2013 02:00:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r5N2003x060582 for ; Sun, 23 Jun 2013 02:00:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r5N200t5060581; Sun, 23 Jun 2013 02:00:00 GMT (envelope-from gnats) Resent-Date: Sun, 23 Jun 2013 02:00:00 GMT Resent-Message-Id: <201306230200.r5N200t5060581@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Justin Hibbits Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 5DAE7313 for ; Sun, 23 Jun 2013 01:55:14 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from oldred.freebsd.org (oldred.freebsd.org [8.8.178.121]) by mx1.freebsd.org (Postfix) with ESMTP id 3728D1835 for ; Sun, 23 Jun 2013 01:55:14 +0000 (UTC) Received: from oldred.freebsd.org ([127.0.1.6]) by oldred.freebsd.org (8.14.5/8.14.7) with ESMTP id r5N1tDni029629 for ; Sun, 23 Jun 2013 01:55:13 GMT (envelope-from nobody@oldred.freebsd.org) Received: (from nobody@localhost) by oldred.freebsd.org (8.14.5/8.14.5/Submit) id r5N1tDOf029628; Sun, 23 Jun 2013 01:55:13 GMT (envelope-from nobody) Message-Id: <201306230155.r5N1tDOf029628@oldred.freebsd.org> Date: Sun, 23 Jun 2013 01:55:13 GMT From: Justin Hibbits To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: ports/179857: Fix for math/gsl on PowerPC X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jun 2013 02:00:00 -0000 >Number: 179857 >Category: ports >Synopsis: Fix for math/gsl on PowerPC >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Jun 23 02:00:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Justin Hibbits >Release: 10-CURRENT >Organization: >Environment: FreeBSD narn.knownspace 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r251882M: Tue Jun 18 07:09:21 PDT 2013 chmeee@zhabar:/usr/home/chmeee/world/narn/powerpc.powerpc/usr/home/chmeee/freebsd/head/sys/NARN powerpc >Description: math/gsl needs some changes to build on PowerPC. >How-To-Repeat: Build math/gsl on PowerPC >Fix: Patch attached. It may not be completely correct, but it allows it to build. Patch attached with submission follows: --- ieee-utils/fp-freebsd.c.old 2013-06-22 10:07:01.000000000 -0700 +++ ieee-utils/fp-freebsd.c 2013-06-22 18:43:24.000000000 -0700 @@ -24,23 +24,37 @@ int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) { +#ifndef __ppc__ fp_prec_t prec = 0 ; +#endif fp_except_t mode = 0 ; fp_rnd_t rnd = 0 ; switch (precision) { case GSL_IEEE_SINGLE_PRECISION: +#ifdef __ppc__ + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); +#else prec = FP_PS; fpsetprec(prec); +#endif break ; case GSL_IEEE_DOUBLE_PRECISION: +#ifdef __ppc__ + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); +#else prec = FP_PD; fpsetprec(prec); +#endif break ; case GSL_IEEE_EXTENDED_PRECISION: +#ifdef __ppc__ + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); +#else prec = FP_PE; fpsetprec(prec); +#endif break ; } @@ -69,13 +83,27 @@ /* Turn on all the exceptions apart from 'inexact' */ - mode = FP_X_INV | FP_X_DNML | FP_X_DZ | FP_X_OFL | FP_X_UFL ; + mode = FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL ; +#ifndef __ppc__ + mode |= FP_X_DNML; +#endif if (exception_mask & GSL_IEEE_MASK_INVALID) mode &= ~ FP_X_INV ; if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) +#ifdef __ppc__ + { + /* Do nothing */ + } + else + { + GSL_ERROR ("powerpc does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + } +#else mode &= ~ FP_X_DNML ; +#endif if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) mode &= ~ FP_X_DZ ; @@ -88,7 +116,11 @@ if (exception_mask & GSL_IEEE_TRAP_INEXACT) { +#ifdef __ppc__ + GSL_ERROR ("powerpc does not support traps for inexact operations", GSL_EUNSUP) ; +#else mode |= FP_X_IMP ; +#endif } else { >Release-Note: >Audit-Trail: >Unformatted: