問題タブ [lld]
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.
llvm-clang - lld 未定義シンボル: mainCRTStartup
私のcppコード:
次のコマンドを使用して、コンパイルおよびリンクします。
私は何か見落としてますか?
c++ - lldb を使用してデバッグするときに、より高い行番号がブレークポイントとして解決されない
Brainfsck でマンデルブロー集合を計算する MIPS32r6 プログラムにブレークポイントを設定しようとしています。プログラム自体は C++ で書かれ、Clang でコンパイルされ、LLDB でデバッグしています。
私が抱えている問題は、LLDB では、主に低い行番号に特定のブレークポイントを問題なく設定できることです。ただし、Main.cpp の 70 行目以降では、ブレークポイントが「未解決」として表示されます (ブレークポイント リストを実行すると完全に適切なアドレスが表示されますが)。つまり、70 行目以降に設定しようとしたブレークポイントはすべて未解決として表示され、70 行目より前の適切なブレークポイントはすべて問題なく解決されます。
ここにリンクしたバイナリのコピーを配置しました: http://filebin.ca/2tJzo2LLBJWO/MipsTest.bin
Main.cpp のコピー: https://paste.ee/p/WYs8Y
私は次のオプションで構築しています:
現時点では、何がこの問題を引き起こしているのかわかりません。
c++ - LLD - 不明な引数: -arch
Mac OS Sierra で LLVM 4.0.0 リリース (Clang、LLD) を使用して単純なプログラムをリンクしようとしています。これは Linux で完全に実現可能です。
現在のパスには、LLVM のbin
ディレクトリがプレフィックスとして付けられています (つまり、 /opt/LLVM/4.0.0/bin:$PATH
.
プログラム ( main.cpp
) は、考えられる最も単純な C++ アプリケーションです。
発行されるシェル コマンドは次のとおりclang -fuse-ld=lld
です。
これは次のエラーで失敗します。
スイッチを使用すると-v
、次のリンカー コマンド (フォーマット済み) が表示されます。
このプラットフォームに適したスイッチを知っている人はいますか?
elf - 関数の間違った開始アドレスと終了アドレスを示す objdump
テスト目的で、llvm リンカーによって生成される PLT スタブlldを変更しました。
以前のスタブは次のとおりです。
プログラムをこの (元の) スタブにリンクして検査するとobjdump
、次のような結果が得られます。
最後に NOP を追加するだけで PLT スタブを変更しました。
PltEntrySize
サイズの変更を反映するように、変数を変更するようにしました。この変更を加えたプログラムをリンクして実行すると、問題なく動作するようです。
しかし、リンクされたプログラムの逆アセンブルを で検査しようとするとobjdump
、奇妙なことがわかります。
PLT スタブのアドレスは によって にあると解釈さobjdump
れます0x2012d0
が、実際のprintf@plt
アドレスは0x2012d8
!にあります。これは次のように確認されていreadelf -s
ます。
はどこobjdump
からその情報を取得しますか? リンカーで何かを変更するのを忘れた可能性が非常に高いです。
c++ - LLVM LLDとの連携がうまくいかない【macos】
次のコンパイル コマンドは、clang6.0 で実行されます。
与えます:
ロードできない理由がわかり/usr/local/opt/myllvm6.0rc1/lib/libLTO.dylib
ません(この場所に存在します!)何か考えはありますか?