head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.64 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.62 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.60 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.58 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.56 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.54 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.52 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.50 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.48 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.46 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.44 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.42 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.40 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.38 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.36 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.34 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.32 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.30 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.28 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.26 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.24 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.22 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.20 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.18 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.14 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.16 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.12 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.10 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.8 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.6 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.4 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.2 pkgsrc-2018Q2-base:1.1; locks; strict; comment @// @; 1.1 date 2018.04.19.09.59.28; author bouyer; state Exp; branches; next ; commitid twvllE6tWxdzi2zA; desc @@ 1.1 log @src/wddc.cpp has the same miscompilation issue as opencpn's ocpndc.cpp, so apply the same workaround. Bump PKGREVISION @ text @$NetBSD: patch-src_ocpndc.cpp,v 1.1 2017/09/12 17:31:20 bouyer Exp $ Same problem as opencpn/patches/patch-src_ocpndc.cpp: For some reason wdDC::DrawEllipse 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. wdDC::DrawRoundedRectangle appears to be compiled OK, but it's similar to ocpnDC::DrawRounderRectangle so to be safe I apply the hack here as well. --- src/wddc.cpp.orig 2018-04-19 11:16:39.711460532 +0200 +++ src/wddc.cpp 2018-04-19 11:21:45.535313650 +0200 @@@@ -712,6 +712,9 @@@@ } #endif +#ifdef __arm__ + asm volatile("" ::: "memory"); +#endif } void wdDC::DrawCircle( wxCoord x, wxCoord y, wxCoord radius ) @@@@ -771,6 +774,9 @@@@ glDisable( GL_BLEND ); } #endif +#ifdef __arm__ + asm volatile("" ::: "memory"); +#endif } void wdDC::DrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset ) @