From patchwork Sat Mar 11 20:33:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=C3=B6rg_Krause?= X-Patchwork-Id: 737730 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vgbSc2fj3z9s7g for ; Sun, 12 Mar 2017 07:33:52 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="key not found in DNS" (0-bit key; unprotected) header.d=embedded.rocks header.i=@embedded.rocks header.b="QMcSJpZE"; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 9E85C8A495; Sat, 11 Mar 2017 20:33:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jtF+B+ipIgbp; Sat, 11 Mar 2017 20:33:49 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 5FB1B8A45A; Sat, 11 Mar 2017 20:33:49 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 924331BFC3F for ; Sat, 11 Mar 2017 20:33:48 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 8D2F889CDA for ; Sat, 11 Mar 2017 20:33:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z9-OnVVG8XAN for ; Sat, 11 Mar 2017 20:33:46 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.142]) by whitealder.osuosl.org (Postfix) with ESMTPS id 6656789CD9 for ; Sat, 11 Mar 2017 20:33:46 +0000 (UTC) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 3vgbSQ6YpTzytZ for ; Sat, 11 Mar 2017 21:33:42 +0100 (CET) Authentication-Results: mail.embedded.rocks (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=embedded.rocks DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embedded.rocks; h=content-transfer-encoding:content-type:content-type :mime-version:x-mailer:message-id:date:date:subject:subject:from :from:received:received; s=default; t=1489264421; x=1489869222; bh=LLZW4Gt2JPA1QIpFCfC6Mc2AN2nsDCYf50pYWqdbH08=; b=QMcSJpZEalgF M8g2ChVJmjh1LFgC5l/eQRUIQ4U59RG/EnrfcEGUF71F67nM7slQxFXDgvFRpfp2 b1fZ2yzjU89KeFDCAOLzLFUyjshmKGojiKsMIDsAfYAi4ZqaahJFlePn66nmz44S fonvPnFCXmhdwHbb9P3SzHxnxQ7dCst59ctjYiBMPepUI5cML5+AlC8yDF874kxR EffTy4x3D6XAuDNUH+5ae3Aq5AMeiK0HZOtlIDg1GGrpnE2BGpn06plqo4neTNgy dwFq/bBsJ3h5KCmyovRAS+6mPprQizSwelFFEvHacARIpfqVCcBzz9R4VrA2Tvmd 9cn9AJYn9Q== Received: from mail.embedded.rocks ([127.0.0.1]) by localhost (mail.embedded.rocks [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id RXqLZg5CLaqb; Sat, 11 Mar 2017 21:33:41 +0100 (CET) Received: from nzxt.fritz.box (x4d020b41.dyn.telefonica.de [77.2.11.65]) (Authenticated sender: joerg.krause@embedded.rocks) by mail.embedded.rocks (Postfix) with ESMTPSA; Sat, 11 Mar 2017 21:33:41 +0100 (CET) From: =?UTF-8?q?J=C3=B6rg=20Krause?= To: buildroot@buildroot.org Date: Sat, 11 Mar 2017 21:33:37 +0100 Message-Id: <20170311203337.31569-1-joerg.krause@embedded.rocks> X-Mailer: git-send-email 2.12.0 MIME-Version: 1.0 Subject: [Buildroot] [PATCH] boost: add patch to fix test of FPE support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" We recently bumped boost from version 1.61.0 to 1.63.0. Upstream has updated the handling of FPE support in 1.63.0 resulting in build errors for some architectures, like SH4 and OpenRISC, which were build successfully with 1.61.0. The problem is that uClibc also define __GLIBC__ and __USE_GNU__, and boost uses these macros to enable the usage of `feclearexcept` and `feenableexcept` as the latter is a GNU extensions. Unfortunately, boost enables these macros without the check if fenv.h is available, resulting in the following build errors: ``` In file included from libs/test/src/execution_monitor.cpp:16:0: ./boost/test/impl/execution_monitor.ipp: In function 'unsigned int boost::fpe::enable(unsigned int)': ./boost/test/impl/execution_monitor.ipp:1382:32: error: 'feclearexcept' was not declared in this scope feclearexcept(BOOST_FPE_ALL); ^ ./boost/test/impl/execution_monitor.ipp:1383:36: error: 'feenableexcept' was not declared in this scope int res = feenableexcept( mask ); ^ ./boost/test/impl/execution_monitor.ipp: In function 'unsigned int boost::fpe::disable(unsigned int)': ./boost/test/impl/execution_monitor.ipp:1422:32: error: 'feclearexcept' was not declared in this scope feclearexcept(BOOST_FPE_ALL); ^ ./boost/test/impl/execution_monitor.ipp:1423:37: error: 'fedisableexcept' was not declared in this scope int res = fedisableexcept( mask ); ``` The issue has been reported to upstream: https://svn.boost.org/trac/boost/ticket/11756 Fetch a patch from upstream which fix the test of FPE support: https://github.com/boostorg/test/commit/066e28ccecb4bad5c0477606a138591f1da1963e Fixes: http://autobuild.buildroot.net/results/d36/d362e7eee7f66768cfdf658effe749a702c50985/ http://autobuild.buildroot.net/results/140/140e7211cbf4ccfcb37d6155d51f22e6213e6341/ Signed-off-by: Jörg Krause --- package/boost/0005-fix-test-of-fpe-support.patch | 119 +++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 package/boost/0005-fix-test-of-fpe-support.patch diff --git a/package/boost/0005-fix-test-of-fpe-support.patch b/package/boost/0005-fix-test-of-fpe-support.patch new file mode 100644 index 000000000..4d8f827e5 --- /dev/null +++ b/package/boost/0005-fix-test-of-fpe-support.patch @@ -0,0 +1,119 @@ +From 066e28ccecb4bad5c0477606a138591f1da1963e Mon Sep 17 00:00:00 2001 +From: Raffi Enficiaud +Date: Mon, 30 Jan 2017 22:09:12 +0100 +Subject: [PATCH] Preventing the compilation of floating points with GCC when + glibc is not in use + +- Gathering the support of FPE in one place/several macros and using those in both + execution_monitor.hpp and execution_monitor.ipp in a more coherent way +- Updating the support of the floating point exceptions: fenableexcept/fdisableexcept are + GLIBC extensions and the definition of FENV does not imply the existance of those functions + +Fetch from: +https://github.com/boostorg/test/commit/066e28ccecb4bad5c0477606a138591f1da1963e + +[Adjust github patch to tarball release] +Signed-off-by: Jörg Krause +--- + boost/test/execution_monitor.hpp | 17 +++++++++++++++-- + boost/test/impl/execution_monitor.ipp | 21 +++++++-------------- + 2 files changed, 22 insertions(+), 16 deletions(-) + +diff --git a/boost/test/execution_monitor.hpp b/boost/test/execution_monitor.hpp +index f53348a..12c5644 100644 +--- a/boost/test/execution_monitor.hpp ++++ b/boost/test/execution_monitor.hpp +@@ -66,6 +66,19 @@ + + #endif + ++#if defined(BOOST_SEH_BASED_SIGNAL_HANDLING) && !defined(UNDER_CE) ++ //! Indicates tha the floating point exception handling is supported ++ //! through SEH ++ #define BOOST_TEST_FPE_SUPPORT_WITH_SEH__ ++#elif !defined(BOOST_SEH_BASED_SIGNAL_HANDLING) && !defined(UNDER_CE) ++ #if !defined(BOOST_NO_FENV_H) && !defined(BOOST_CLANG) && \ ++ (defined(__GLIBC__) && defined(__USE_GNU)) ++ //! Indicates that floating point exception handling is supported for the ++ //! non SEH version of it, for the GLIBC extensions only ++ #define BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__ ++ #endif ++#endif ++ + + // Additional macro documentations not being generated without this hack + #ifdef BOOST_TEST_DOXYGEN_DOC__ +@@ -489,7 +502,7 @@ namespace fpe { + enum masks { + BOOST_FPE_OFF = 0, + +-#ifdef BOOST_SEH_BASED_SIGNAL_HANDLING /* *** */ ++#if defined(BOOST_TEST_FPE_SUPPORT_WITH_SEH__) /* *** */ + BOOST_FPE_DIVBYZERO = EM_ZERODIVIDE, + BOOST_FPE_INEXACT = EM_INEXACT, + BOOST_FPE_INVALID = EM_INVALID, +@@ -498,7 +511,7 @@ enum masks { + + BOOST_FPE_ALL = MCW_EM, + +-#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) /* *** */ ++#elif !defined(BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__)/* *** */ + BOOST_FPE_ALL = BOOST_FPE_OFF, + + #else /* *** */ +diff --git a/boost/test/impl/execution_monitor.ipp b/boost/test/impl/execution_monitor.ipp +index 416004d..0c5690c 100644 +--- a/boost/test/impl/execution_monitor.ipp ++++ b/boost/test/impl/execution_monitor.ipp +@@ -1354,11 +1354,7 @@ unsigned + enable( unsigned mask ) + { + boost::ignore_unused(mask); +- +-#if defined(UNDER_CE) +- /* Not Implemented in Windows CE */ +- return BOOST_FPE_OFF; +-#elif defined(BOOST_SEH_BASED_SIGNAL_HANDLING) ++#if defined(BOOST_TEST_FPE_SUPPORT_WITH_SEH__) + _clearfp(); + + #if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) +@@ -1373,9 +1369,10 @@ enable( unsigned mask ) + if( ::_controlfp_s( 0, old_cw & ~mask, BOOST_FPE_ALL ) != 0 ) + return BOOST_FPE_INV; + #endif +- + return ~old_cw & BOOST_FPE_ALL; +-#elif defined(__GLIBC__) && defined(__USE_GNU) ++ ++#elif defined(BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__) ++ // same macro definition as in execution_monitor.hpp + if (BOOST_FPE_ALL == BOOST_FPE_OFF) + /* Not Implemented */ + return BOOST_FPE_OFF; +@@ -1395,12 +1392,8 @@ disable( unsigned mask ) + { + boost::ignore_unused(mask); + +-#if defined(UNDER_CE) +- /* Not Implemented in Windows CE */ +- return BOOST_FPE_INV; +-#elif defined(BOOST_SEH_BASED_SIGNAL_HANDLING) ++#if defined(BOOST_TEST_FPE_SUPPORT_WITH_SEH__) + _clearfp(); +- + #if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) + unsigned old_cw = ::_controlfp( 0, 0 ); + ::_controlfp( old_cw | mask, BOOST_FPE_ALL ); +@@ -1413,9 +1406,9 @@ disable( unsigned mask ) + if( ::_controlfp_s( 0, old_cw | mask, BOOST_FPE_ALL ) != 0 ) + return BOOST_FPE_INV; + #endif +- + return ~old_cw & BOOST_FPE_ALL; +-#elif defined(__GLIBC__) && defined(__USE_GNU) ++ ++#elif defined(BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__) + if (BOOST_FPE_ALL == BOOST_FPE_OFF) + /* Not Implemented */ + return BOOST_FPE_INV;