From ac83fdcb29f64af79839bb8efffbaae71f0cc3cc Mon Sep 17 00:00:00 2001 From: Thomas Bonnefille Date: Mon, 17 Feb 2025 19:43:34 +0100 Subject: [PATCH] package/foot: support soft-float architecture Architecture using soft float don't support the math FE_* exceptions. This commit adds a patch to conditionnally build the FE_* exception handling. Fixes: https://autobuild.buildroot.org/results/88d/88d764dd12bdbdbe633ebc703c461ebe95b75693/ Signed-off-by: Thomas Bonnefille Signed-off-by: Julien Olivain --- ...-handle-architecture-with-soft-float.patch | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 package/foot/0001-box-drawings-handle-architecture-with-soft-float.patch diff --git a/package/foot/0001-box-drawings-handle-architecture-with-soft-float.patch b/package/foot/0001-box-drawings-handle-architecture-with-soft-float.patch new file mode 100644 index 0000000000..1120fa44c1 --- /dev/null +++ b/package/foot/0001-box-drawings-handle-architecture-with-soft-float.patch @@ -0,0 +1,42 @@ +From 9443ac7e2937bb4f26cf44c73bb8150860c5df45 Mon Sep 17 00:00:00 2001 +From: Thomas Bonnefille +Date: Tue, 4 Feb 2025 09:48:13 +0100 +Subject: [PATCH] box-drawings: handle architecture with soft-float + +Currently, architecture using soft-floats doesn't support instructions +FE_INVALID, FE_DIVBYZERO, FE_OVERFLOW and FE_UNDERFLOW and so building +on those architectures results with a build error. +As the sqrt math function should set errno to EDOM if an error occurs, +fetestexcept shouldn't be mandatory. + +This commit removes the float environment error handling. + +Upstream: https://codeberg.org/dnkl/foot/commit/9443ac7e2937bb4f26cf44c73bb8150860c5df45 +Signed-off-by: Thomas Bonnefille +--- + box-drawing.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/box-drawing.c b/box-drawing.c +index 1c613051..421ff54d 100644 +--- a/box-drawing.c ++++ b/box-drawing.c +@@ -1462,14 +1462,12 @@ draw_box_drawings_light_arc(struct buf *buf, char32_t wc) + */ + for (double i = y_min*16; i <= y_max*16; i++) { + errno = 0; +- feclearexcept(FE_ALL_EXCEPT); + + double y = i / 16.; + double x = circle_hemisphere * sqrt(c_r2 - (y - c_y) * (y - c_y)) + c_x; + + /* See math_error(7) */ +- if (errno != 0 || +- fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW)) ++ if (errno != 0) + { + continue; + } +-- +2.48.1 +