From owner-freebsd-numerics@freebsd.org Tue Jan 1 03:32:14 2019 Return-Path: Delivered-To: freebsd-numerics@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5BF091426119 for ; Tue, 1 Jan 2019 03:32:14 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from sonic304-10.consmr.mail.bf2.yahoo.com (sonic304-10.consmr.mail.bf2.yahoo.com [74.6.128.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 004AB6B4B5 for ; Tue, 1 Jan 2019 03:32:13 +0000 (UTC) (envelope-from pfg@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1546313532; bh=QcOeE9jyl8QPrVoYaho41LcUq/WI2EG8vtVDXGU/vWU=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From:Subject; b=sdnrtYPJWu0Kp5y3H9t12MPaTifoBBupmGFBuL+PQk7J3pPHb7VFpEhOYwHKvjewgz0IOyzhxaD8DN+i1Ir5XuFNlfNwM1rz/fGbNspcSkd5DbGWe1Ia/4JOdRV2Jj2h1ZziX+DSfnofu/tNeZb5Vztef44b8Dd8Zyz629ZjFb25auCcBJeq3q8+PrU9Nv1ZwcCLKKD+M5cMAVBn0bTEDqS33AudVfswIoN+aLjUVQ6UxH4Q2khN+4vS7fAy6b0roGsuFX+IsMYRJQxSzzhhbvwzd7OJk5mgAJLi1ul/m9DGzj2gKpePCEsJlgYpr6XIDdXbstaESblwb8jpGfLMhQ== X-YMail-OSG: dTMVBZMVM1klQlbW2Vqswp6Q6arhL1E2tVashF9LcVC0O626aAdKOZbxSbfb6c6 _HdVBtd_gOW5FfCNFUB8WE9XXtVD4O1dbA45orV6.GsgOF.BI1EfuwkOUKZMfsJ.SF9EXbXULbdv Azd10L8LoQmajXsy_Qh0kB3SHKNPPg5DbdNZl4DBril598iDc0.VDgCcATWFlQm1qyV0leIrSlOj Ol9NL3EEQW2j9yrizjgyg13486eHICp3LQNRaygKZkqyndY7pEx0ujA6mYe5u1Z8Dws3Up8G5XtR g7XyIG1d1fYkhkSAN76ufDbFxA0hpbUVbty4Sy_9eqJETlhwRKCHTqjTPUT6QoxfouW_xK41bfW. J0SRvGBYQd.vx9IM.5A69omuWyHwAlvn6eRlP5xmHw02Hl2akQ55WU1QrxZyiWK3YfIHNHxxPiv2 9R.yr7XiJpvzunOrkJ7j21CFa4ZkmoHH.QvYSKxC_VOqjMVVSGqE1XdshL8tznMUG0tppcFt4nR9 3dBazs_qMMdqbzzYSzDytago94cxjSL8wN3BGICl45OITIfsQdoolAn1Cwh6SKgK1vVMlpt3lPGW h7Wzkjjo0cQfvbcZZyLKsTLR9iyBULf4uf2JPEk65FOVEf.StRh_tzSu2iafhYMEW0aytRIkxJq0 lNFYJ4mXUkIr.BeNd1_YdxHXLye4KflCmQwwa7v5Vjc4eQvWpC8TaIBAATsLMKpBP.RHf8drg0Wr SS65Bzr9_aL2Eg93hU60l1ISxqEgE6Ei48GxC5kmmdyYtO67GIGbYxGQOEJ_HXsA.vwRdZJ1ta8Q 6cSHWvffGJJZf71dfriSaI4f3zOdEdxyz.KQX_T9FYze5wG5fXy2AmFnTnlg0Pt3ja0jZhcPBBGF JgxoplyoMpLMdGJvh5MjCUIqINe3jByhmyAB_IFGMYIUxU.RuXgyBj_bk9WKoOL9uK2zDhEfkHel wwuGen2OGszmfiPzt9VUrAi.YBjwxZXIX1XHOB7Vss.HSeOUb.Ek2BQyLIMNeNrPSUJkurAntViH S0fKcn280pzNbZhwE3J82nISiqjETI8c46bTcFEZm.w-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.bf2.yahoo.com with HTTP; Tue, 1 Jan 2019 03:32:12 +0000 Received: from 181.52.72.201 (EHLO [192.168.0.5]) ([181.52.72.201]) by smtp402.mail.bf1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 48c39b9979d3c721aa0307d008f2f9a0; Tue, 01 Jan 2019 03:32:08 +0000 (UTC) Subject: Undefined Behavior in lib/msun/src/e_pow.c (was Re: New math library from ARM) To: freebsd-numerics@freebsd.org Cc: sgk@troutmask.apl.washington.edu References: <797a7755-db93-1b9c-f3b9-8850d948e098@FreeBSD.org> <20181231151904.GB823@troutmask.apl.washington.edu> <20181231152230.GC823@troutmask.apl.washington.edu> From: Pedro Giffuni Message-ID: <06c8b6a2-ed26-f255-3947-c79b593a9dea@FreeBSD.org> Date: Mon, 31 Dec 2018 22:32:06 -0500 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <20181231152230.GC823@troutmask.apl.washington.edu> Content-Type: multipart/mixed; boundary="------------77F699FB60D2895086164B43" Content-Language: en-US X-Rspamd-Queue-Id: 004AB6B4B5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.980,0]; ASN(0.00)[asn:26101, ipnet:74.6.128.0/21, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: freebsd-numerics@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Discussions of high quality implementation of libm functions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jan 2019 03:32:14 -0000 This is a multi-part message in MIME format. --------------77F699FB60D2895086164B43 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hmm ... Looking at the changes in musl's libc I found this issue which seems real (although somewhat theoretical): https://git.musl-libc.org/cgit/musl/commit/src/math?id=688d3da0f1730daddbc954bbc2d27cc96ceee04c Is the attached patch acceptable? Also, their code is bit different here: https://git.musl-libc.org/cgit/musl/commit/src/math?id=282b1cd26649d69de038111f5876853df6ddc345 but we may also have to check fmaf(-0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29). Cheers, Pedro. --------------77F699FB60D2895086164B43 Content-Type: text/x-patch; name="msun-pow-ub.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="msun-pow-ub.diff" Index: lib/msun/src/e_pow.c =================================================================== --- lib/msun/src/e_pow.c (revision 342665) +++ lib/msun/src/e_pow.c (working copy) @@ -130,6 +130,7 @@ if(hx<0) { if(iy>=0x43400000) yisint = 2; /* even integer y */ else if(iy>=0x3ff00000) { + uint32_t j; /* Avoid UB in bit operations below. */ k = (iy>>20)-0x3ff; /* exponent */ if(k>20) { j = ly>>(52-k); --------------77F699FB60D2895086164B43--