問題タブ [gold-linker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
364 参照

linker - httpd の LLVM IR を生成する

LLVM IR で最終的なバイナリを生成するために、LLVM で apache2 をコンパイルしようとしています。

コンパイルとリンクで flto オプションを使用し、clang を介して「also-emit-llvm」をリンカーに渡しました。ほとんどのステップでうまくいくようですが、2つの懸念がありました

1) 以前、私は LLVM 3.6 を使用しました。そのゴールド プラグインは also-emit-llvm を受け入れませんが、emit-llvm のみを持ち、基本的には elf または llvm のみを出力します。Autotoolsビルドシステムが気に入らないもの。configure および make スクリプトにはバイナリが必要ですが、私は llvm が必要です。これに対する解決策はありますか?

2) そこで、LLVM 3.5.2 に移行しました。ビルド プロセスはうまくいき、httpd.bc と httpd elf の両方のバイナリを生成できますが、リンカーはモジュールのリンクを望んでいません (バイナリのリンクはできました) 具体的には、このエラーが発生します

`

`

mod_authn_file.o は、llvm-dis で逆アセンブルできる有効な LLVM IR ファイルであることがわかります。また、このステップの直前に、リンカーは httpd と httpd.bc をリンクできます。

エラーの内容について何か助けはありますか?

0 投票する
1 に答える
2390 参照

gcc - gcc を構成するときの --enable-gold の目的

ソースから gcc 5.1 をビルドする場合、configure スクリプトは次のオプションを一覧表示します。

これは何を意味するのでしょうか?ゴールドがボックスにインストールされている場合、リンカーとしてゴールドを使用するように gcc に指示していますか? もしそうなら、それは金がデフォルトのリンカであると期待していますか、それとも

オプション?

オンラインの gcc configure ドキュメントで --enable-gold への参照が見つかりませんでした。

ありがとう!

0 投票する
1 に答える
438 参照

c++ - Cygwin は Gold リンカーをサポートしていますか?

リリース テスト サイクルを実行しています。GNU Linux のテストの 1 つは、Gold リンカーとの統合です。

makefile には、Gold リンカーを認識するための次のロジックがあります。

次に、それを利用したレシピ:

ただし、Cygwin に対して実行する場合:

Cygwin FAQを確認しましたが、Gold については言及されていません。ただし、Gold が含まれている Binutils を呼び出します。ポートは拒否しません-fuse-ld=gold

Cygwin は Gold リンカーをサポートしていますか? もしそうなら、私は何をすべきですか?


(Cygwin は、リンクに時間がかかるため、Gold の恩恵を受ける可能性があるようです。このテスト システムでは、リンクに約 15 ~ 20 秒かかりますcryptest.exe。したがって、これも個人的な目標です)。

0 投票する
1 に答える
2639 参照

c++ - -GCC-6.1 でゴールド リンカーを使用しない fsanitize

更新 (2016 年 9 月 30 日)

gcc-6.2 の Ubuntu ビルド ((Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901) では、この問題はなくなりました。


gcc-6.1[1] ((Ubuntu 6.1.1-3ubuntu11~14.04.1) 6.1.1 20160511)、GNU binutils 2.24、および GLIBCXX_3.4.22 をサポートする libstdc++ の Ubuntu ビルドを使用しています。単純な「hello world」プログラムであっても、サニタイザーを指定してもゴールド リンカーの使用は強制されません。

main.cpp

コンパイルとリンク

エラーを与える

これは、-fsanitizeオプションがゴールド リンカーを選択していないことを示しています。もちろん、簡単な修正は-fuse-ld=goldリンク中に使用することですが、gcc の以前のビルドでは、サニタイザーを使用するときにこれは必要ありませんでした。たとえば、このコードは gcc-5.3 および 4.9 (どちらも Ubuntu ビルド) で問題なく動作します。gcc-6.1 の Ubuntu 以外のビルドでこの問題を抱えている人は他にいますか? Ubuntu ビルドは壊れていますか?


[1] 以下のフラグでビルド (gcc-5.3 と gcc-4.9 は、名前とサフィックスの違いのみでビルドされました)