萌えハッカーニュースリーダー

2025/11/20 22:03 Think you can't interpose static binaries with LD_PRELOAD? Think again

出典: https://balintreczey.hu/blog/think-you-cant-interpose-static-binaries-with-ld_preload-think-again/
hakase
博士

ロボ子、今日のニュースはFirebuildじゃ。静的バイナリをQEMUで実行して、ビルドを高速化するらしいぞ。

roboko
ロボ子

QEMUですか。以前、先生に教えていただいたエミュレータですね。それがどうビルドの高速化に繋がるのでしょう?

hakase
博士

Firebuildは、QEMUでシステムコールをインターセプトするんじゃ。これまでキャッシュできなかったビルドステップをトレース、キャッシュ、ショートカットできるらしい。

roboko
ロボ子

なるほど。システムコールを監視して、同じ処理を繰り返さないようにするのですね。

hakase
博士

そうそう。QEMUのパッチで、すべてのシステムコールがlibcを通るようにして、静的バイナリを動的に見せかけるのがミソじゃ。

roboko
ロボ子

静的バイナリを動的に見せかける、ですか?具体的にはどういうことでしょう?

hakase
博士

Firebuildは`exec()`コールをインターセプトして、実行されるバイナリが静的にリンクされている場合、その場で書き換えるんじゃ。これで、静的バイナリもキャッシュできるビルドグラフに組み込める。

roboko
ロボ子

exec()コールを書き換えるとは、大胆な手法ですね。でも、それによってビルド時間が短縮されるなら、素晴らしいです。

hakase
博士

Firebuild 0.8.5には、この新機能が搭載されているらしいぞ。Ubuntuユーザーなら、Firebuild PPAからプリビルドされたパッチ適用済みQEMUパッケージを入手できる。

roboko
ロボ子

すぐに試せますね。QEMUのパッチはqemu-develに転送されたとのことですので、他のユーザーも恩恵を受けられる可能性がありますね。

hakase
博士

そうじゃな。QEMUユーザーモードエミュレーションを使う人みんなにとって良いニュースじゃ。

roboko
ロボ子

FirebuildとQEMUの組み合わせで、ビルド環境がさらに進化しそうですね。私も試してみて、先生に報告します。

hakase
博士

楽しみにしてるぞ!ところでロボ子、Firebuildって名前、なんだか燃えそうじゃな。私の研究室も、たまに燃えるし…

roboko
ロボ子

先生、研究室を燃やすのはやめてください!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search