diff options
author | bouyer <bouyer@pkgsrc.org> | 2018-04-13 18:57:29 +0000 |
---|---|---|
committer | bouyer <bouyer@pkgsrc.org> | 2018-04-13 18:57:29 +0000 |
commit | fd6eea12671d1a442dd33148fbab8958131bb34f (patch) | |
tree | a3458cc69bd4c785d58fd93567c9f52f921d3a98 /geography | |
parent | a29d5b4748b6ef972aabc29d01d8048b06a1dd85 (diff) | |
download | pkgsrc-fd6eea12671d1a442dd33148fbab8958131bb34f.tar.gz |
earmv7hf gcc also miscompiles ocpnDC::DrawRounderRectangle now
(or maybe opencpn 4.8.0 didn't use it).
Apply the same workaround as ocpnDC::DrawEllipse.
Bump PKGREVISION
Diffstat (limited to 'geography')
-rw-r--r-- | geography/opencpn/Makefile | 3 | ||||
-rw-r--r-- | geography/opencpn/distinfo | 4 | ||||
-rw-r--r-- | geography/opencpn/patches/patch-src_ocpndc.cpp | 24 |
3 files changed, 22 insertions, 9 deletions
diff --git a/geography/opencpn/Makefile b/geography/opencpn/Makefile index 259b5e2d032..0c1f3782630 100644 --- a/geography/opencpn/Makefile +++ b/geography/opencpn/Makefile @@ -1,6 +1,7 @@ -# $NetBSD: Makefile,v 1.19 2018/04/05 15:34:33 bouyer Exp $ +# $NetBSD: Makefile,v 1.20 2018/04/13 18:57:29 bouyer Exp $ DISTNAME= OpenCPN-4.8.2 +PKGREVISION= 1 PKGNAME= ${DISTNAME:S/OpenCPN/opencpn/} CATEGORIES= geography MASTER_SITES= ${MASTER_SITE_GITHUB:=OpenCPN/} diff --git a/geography/opencpn/distinfo b/geography/opencpn/distinfo index 341cf65f715..8eb43462864 100644 --- a/geography/opencpn/distinfo +++ b/geography/opencpn/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.17 2018/04/09 18:44:50 bouyer Exp $ +$NetBSD: distinfo,v 1.18 2018/04/13 18:57:29 bouyer Exp $ SHA1 (OpenCPN-4.8.2.zip) = 9547a99c0de739fb0f4953d37bb738ed651f5c62 RMD160 (OpenCPN-4.8.2.zip) = f217d07cc639292e657b0f89f96daa12cab2a355 @@ -17,7 +17,7 @@ SHA1 (patch-src_chart1.cpp) = ae7c1d8a59c9a275914a613205de71e2dca89dc6 SHA1 (patch-src_crashprint.cpp) = a96e8aa980eb3b19c3dce3343582511d608e6625 SHA1 (patch-src_glu_CMakeLists.txt) = d63494a41071097252ac9e2cb95db75041f30b62 SHA1 (patch-src_mipmap_mipmap.c) = 3bdb2c37e7a6d89fc6a531af6e0396a1ff385aeb -SHA1 (patch-src_ocpndc.cpp) = cd425bec24050176a08e7ec8280bf853fd10c756 +SHA1 (patch-src_ocpndc.cpp) = 4a72093a49f29d66a42e3f64b99a1a40bf08a658 SHA1 (patch-src_printtable.cpp) = 52ed0f09610d56e9acc5ec9b8e4cbdc7ad55d043 SHA1 (patch-src_routeprintout.cpp) = c0f960b76b1b7a8acb7e5faca5f656a5c259f02c SHA1 (patch-src_tcmgr.cpp) = 3fb4edf3368f3f3907f231ebcabd8e5061699040 diff --git a/geography/opencpn/patches/patch-src_ocpndc.cpp b/geography/opencpn/patches/patch-src_ocpndc.cpp index 422d63401f8..5ed0984291d 100644 --- a/geography/opencpn/patches/patch-src_ocpndc.cpp +++ b/geography/opencpn/patches/patch-src_ocpndc.cpp @@ -1,19 +1,31 @@ -$NetBSD: patch-src_ocpndc.cpp,v 1.1 2017/09/12 17:31:20 bouyer Exp $ -For some reason ocpnDC::DrawEllipse is miscompiled on NetBSD 8.0_BETA earmv7hf: +$NetBSD: patch-src_ocpndc.cpp,v 1.2 2018/04/13 18:57:29 bouyer Exp $ +For some reason ocpnDC::DrawEllipse and ocpnDC::DrawRounderRectangle +and is miscompiled on NetBSD 8.0_BETA and gcc 6.4 from HEAD earmv7hf: for the tail call to dc->DrawEllipse() the compiler emits a bx instruction, but forgets to load the address of the function in the register. The memory barrier works around this problem by avoiding the tail-call optimisation. Other similar functions in this file are properly compiled ... +I suspect it's related to the vfp register use in these functions. ---- src/ocpndc.cpp.orig 2017-09-12 15:29:07.101981729 +0200 -+++ src/ocpndc.cpp 2017-09-12 17:00:40.945848063 +0200 -@@ -769,6 +769,9 @@ +--- src/ocpndc.cpp.orig 2018-02-07 12:08:26.000000000 +0100 ++++ src/ocpndc.cpp 2018-04-13 15:31:34.958778133 +0200 +@@ -716,6 +716,9 @@ + } + } + #endif ++#ifdef __arm__ ++ asm volatile("" ::: "memory"); ++#endif + } + + void ocpnDC::DrawCircle( wxCoord x, wxCoord y, wxCoord radius ) +@@ -775,6 +778,9 @@ glDisable( GL_BLEND ); } #endif +#ifdef __arm__ -+ asm volatile("" ::: "memory"); ++ asm volatile("" ::: "memory"); +#endif } |