Skip to content

Conversation

@jmcarp
Copy link

@jmcarp jmcarp commented Jan 20, 2026

Cherry-pick illumos portability fixes already merged into the default clickhouse1 branch and target the ClickHouse/release-21.x branch as described in ClickHouse/ClickHouse#94285 (comment). I'll update that PR to point to this branch next.

cc @rschu1ze

libc++ changes:
- Add __sun to pthread platforms and rune table providers.
- Add illumos ctype mask definitions with non-overlapping __regex_word.
- Use musl locale shim for missing *_l functions.
- Skip overloads already defined in illumos stdlib.
- Fix conflicting __sentinel, _E1-_E24 macros.

LLVM changes:
- Fix conflicting FS, CS/CE macros.
- Use std::fabs instead of std::abs for float in SampleProfileProbe.

Part of llvm#23777.
Illumos uses PT_SUNW_EH_FRAME and PT_SUNW_UNWIND program header types
instead of PT_GNU_EH_FRAME for exception handling frames. This patch
checks if the illumos headers are defined, and checks the appropriate
fields in the ELF header if so.

Based on
https://github.com/oxidecomputer/garbage-compactor/blob/master/clickhouse/patches/0020-Use-libunwind-on-illumos.patch.

Part of ClickHouse/ClickHouse#23777.

Note: we'll submit this to upstream llvm as well.
In ClickHouse#63, we checked for illumos-specific EH headers and used them if
defined. But freebsd also defines some of these headers (but not all)
for compatibility. This patch caused clickhouse builds to break on
freebsd. This patch fixes the regression by checking for both EH
headers, so that we fall through to the default case on freebsd.
@rschu1ze
Copy link
Member

Can we please upstream all of this stuff. I don't feel good if ClickHouse uses a non-mainstream branch of the very fundamental LLVM library (we don't have the expertise to fix something if something breaks).

@rschu1ze
Copy link
Member

Ref: llvm#176988

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.

2 participants