Skip to content

riscv64: Keep hard-float fenv functions private - #360

Merged
maleadt merged 1 commit into
masterfrom
tb/riscv-fenv-exports
Sep 2, 2026
Merged

maleadt merged 1 commit into
masterfrom
tb/riscv-fenv-exports

Conversation

@maleadt

@maleadt maleadt commented Sep 2, 2026

Copy link
Copy Markdown
Member

Openlibm uses FreeBSD-style shifted rounding-mode constants on RISC-V, while Linux uses raw frm encodings. Exporting openlibm's hard-float fenv functions can therefore interpose an incompatible implementation and break directed rounding.

Keep hard-float definitions private, as on AArch64 and PowerPC, preserve external soft-float definitions, and test through the system fenv interface.

Openlibm uses FreeBSD-style shifted rounding-mode constants on RISC-V,
while Linux uses raw frm encodings. Exporting openlibm's hard-float fenv
functions can therefore interpose an incompatible implementation and
break directed rounding.

Keep hard-float definitions private, as on AArch64 and PowerPC, preserve
external soft-float definitions, and test through the system fenv interface.
@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.11%. Comparing base (82e90ae) to head (531b5cb).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #360   +/-   ##
=======================================
  Coverage   72.11%   72.11%           
=======================================
  Files         233      233           
  Lines        6139     6139           
  Branches     1609     1609           
=======================================
  Hits         4427     4427           
  Misses       1419     1419           
  Partials      293      293           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@maleadt
maleadt merged commit 5fe3997 into master Sep 2, 2026
25 checks passed
@maleadt
maleadt deleted the tb/riscv-fenv-exports branch September 2, 2026 08:18
maleadt added a commit to maleadt/Yggdrasil that referenced this pull request Sep 2, 2026
Picks up JuliaMath/openlibm#360, which stops the riscv64 build from exporting
fenv functions that shadowed glibc's with incompatible rounding-mode constants.
Request LLVMCompilerRT_jll by version string, as Pkg no longer resolves a bare
13.0.1 now that 13.0.1+1 exists.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
maleadt added a commit to JuliaLang/julia that referenced this pull request Sep 3, 2026
Picks up JuliaMath/openlibm#360, which stops the riscv64 port from
exporting its fenv functions. Those symbols shadowed glibc's through the
dynamic linker while carrying FreeBSD's pre-shifted `FE_*` encodings, so
`fesetround` rejected every constant a caller had compiled against the
system header and left the rounding mode untouched. Julia's own rounding
path stopped going through that symbol in `6081d7ceb7`, but anything
else linked against the bundled library still did.

The release also carries three riscv64 fixes that never reached the
0.8.7 build: JuliaMath/openlibm#324 (`feholdexcept` always returned -1),
and JuliaMath/openlibm#330 and JuliaMath/openlibm#349 for the lp64f ABI.

Assisted-by: Claude Code (Opus 5)
social4hyq pushed a commit to social4hyq/homebrew-core that referenced this pull request Sep 20, 2026
openlibm 0.8.8

Created-by: HarmonybrewBot
Commit-by: HarmonybrewBot
Merged-by: HarmonybrewBot
Description: Created by `brew bump`

---

Created with `brew bump-formula-pr`.<details>
  <summary>release notes</summary>
  <pre>## What's Changed
* Update riscv64 fenv.c initialization to fix warnings by @ViralBShah in JuliaMath/openlibm#330
* Musl compatibility fixes for s390 and powerpc by @sertonix in JuliaMath/openlibm#331
* Fix cmake error for 4.x by @HIllya51 in JuliaMath/openlibm#333
* Bump actions/checkout from 4 to 5 by @dependabot[bot] in JuliaMath/openlibm#335
* Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in JuliaMath/openlibm#336
* Bump actions/checkout from 5 to 6 by @dependabot[bot] in JuliaMath/openlibm#338
* Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in JuliaMath/openlibm#339
* Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in JuliaMath/openlibm#341
* Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in JuliaMath/openlibm#342
* ci: add native ARM (Linux + Windows) and Intel macOS runners by @ViralBShah in JuliaMath/openlibm#345
* ci: workflow hygiene (concurrency, timeouts, loongarch fold, mips64, fork-safe codecov) by @ViralBShah in JuliaMath/openlibm#346
* riscv: Fix feholdexcept() by @AlekseyZhmulin in JuliaMath/openlibm#324
* CI: add -Werror strict lane and an auto-discovered regression-test harness by @ViralBShah in JuliaMath/openlibm#350
* ci: speed up Windows jobs by trimming the msys2 install by @ViralBShah in JuliaMath/openlibm#354
* ci: make codecov coverage status informational by @ViralBShah in JuliaMath/openlibm#358
* riscv: allow single-precision float ABI (lp64f / ilp32f) by @ViralBShah in JuliaMath/openlibm#349
* Fix powl() returning NaN instead of +0 on extreme underflow (#334) by @ViralBShah in JuliaMath/openlibm#351
* Make powl() thread-safe (#222) by @ViralBShah in JuliaMath/openlibm#355
* Bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in JuliaMath/openlibm#359
* riscv64: Keep hard-float fenv functions private by @maleadt in JuliaMath/openlibm#360

## New Contributors
* @sertonix made their first contribution in JuliaMath/openlibm#331
* @HIllya51 made their first contribution in JuliaMath/openlibm#333
* @AlekseyZhmulin made their first contribution in JuliaMath/openlibm#324

**Full Changelog**: https://github.com/JuliaMath/openlibm/compare/v0.8.7...v0.8.8</pre>
  <p>View the full release notes at <a href="https://github.com/JuliaMath/openlibm/releases/tag/v0.8.8">https://github.com/JuliaMath/openlibm/releases/tag/v0.8.8</a>.</p>
</details>
<hr>

See merge request: Harmonybrew/homebrew-core!18388
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant