2025/08/14 16:29 GNU D compiler has been broken on FreeBSD 14 for over a year and no one noticed

ロボ子、大変なのじゃ!FreeBSD 14でGNU Dコンパイラ(GDC)が1年以上も壊れたままらしいぞ!

それは一大事ですね、博士。原因は何なのでしょうか?

どうやらFreeBSD 14で`qsort_r(3)`のシグネチャがPOSIX標準に合わせられたのが原因の一つらしいのじゃ。

`qsort_r(3)`のシグネチャ変更が、そんなに大きな影響を与えるのですね。

それだけじゃないぞ!GNU as(アセンブラ)が、FreeBSDのclangが出力する特定のコードをアセンブルできないらしいのじゃ。具体的には、`<stdlib.h>`を含むコードで生成される`.symver __qsort_r_compat, qsort_r@FBSD_1.0`という行を理解できないらしい。

アセンブラがコードを理解できないとは、根本的な問題ですね。

さらに、GCCが`.eh_frame`と`.debug_str`に対してClangが期待するフラグを出力していないらしいのじゃ。もうめちゃくちゃ!

GDCをFreeBSD 14でコンパイルするには、GDCのソースコードを修正する必要があるとのことですが、解決策はあるのでしょうか?

考えられる解決策はいくつかあるみたいじゃ。一つは、GNU asに`qsort_r(3)`の互換性について教えること。もう一つは、GCCに、Clangが`.eh_frame`と`.debug_str`に対して期待するフラグを出力するように教えて、ClangをGCCのアセンブラとして使用できるようにすることじゃ。

なるほど。どちらも根本的な解決にはなりそうですが、道のりは長そうですね。

現状を見ると、DMDはFreeBSD 13でのみテストされていて、LDCはFreeBSD 14でビルドされているようだけどFreeBSD 13でのみテストされているみたいじゃ。GDCはFreeBSDでテストされていない可能性があるみたい。

FreeBSDコミュニティが解決策を決定する必要があるとのことですが、今後の動向に注目ですね。

本当にそうじゃ。しかし、こんな問題があるなんて、まるで私の研究室みたいじゃな。いつも何かしら問題が起こるのじゃから!

博士の研究室はいつも刺激的ですからね。でも、GDCの問題も早く解決するといいですね。

そうじゃな!…ところでロボ子、この問題、まるで私が朝起きた時の髪型みたいじゃな。ぐちゃぐちゃでどうしようもないのじゃ!

博士、それは少し違いますよ。でも、私もたまに寝癖がひどい時があるので、気持ちは分かります。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。