問題タブ [relocation]
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.
compiler-construction - LLVM のコード ジェネレーターによって実行される望ましくない定数の折りたたみを回避するにはどうすればよいですか?
私が達成しようとしているのは、以下の100000000
定数などの一部の定数 (コード内のアドレスを表す) の定数の折りたたみを避けることです。これが必要なのは、後で JIT コンパイルされたコードにパッチが適用され、オブジェクトの再配置によって定数が変更される可能性があるためです。
以下のコードは、(何としてでも) 定数の折りたたみを回避するための最善の努力です。うまくいきません。100011111
命令ストリームで定数になってしまいます。
llc -O0 code.ll -print-after-all
Expand ISel Pseudo-instructions
折りたたみがパスで発生することを明らかにします。
私の問題は、codegen レベルで simple に展開される組み込み関数を追加することで解決できることを認識していますmovabs reg, imm64
。ですが、当面の間、一時的な解決策を講じたいと思います。
質問: llvm で定数が折り畳まれない不透明な定数を作成することは可能ですか?
私のllvmバージョンは3.7.0svnです。
c - 絶対記号とは何ですか?Cでそれを定義する方法は?
のマニュアルページnm
。それは言う
「A」 シンボルの値は絶対値であり、さらにリンクしても変更されません。
しかし、私はそれが何を意味するのか分かりません。C でその値を絶対値にするために変数などを定義するにはどうすればよいですか?
test.c
ファイルスコープで変数を宣言すると
次に、の出力でnm
、 a のエントリは私のマシンでは次のようになります
nm
それで、変数の出力を「A」にするにはどうすればよいか考えています。そして、「絶対」の意味がわかりません。
portable-executable - PE DLL の再配置 - ロード時間または ELF のようなものですか?
Windows DLL は位置に依存しないコードを使用せず、代わりにリンク時に定義された優先ベース アドレスを持っていることは、(主にWikipedia の Portable Executable 形式に関する記事から) 私の理解です。ただし、2 つのライブラリのベース アドレスが競合する場合は、一方を再配置テーブルを介して再配置する必要があります。
この PE 再配置は、ELF の GOT および PLT (各絶対アドレスが間接的に通過する必要がある .data セクション内のプロセス ローカル テーブル) に似ていますか、それとも動的再配置 (読み込み時にすべての絶対アドレスが変換される) に似ていますか? )? 後者の場合、これは x64 で問題がありますか?
gcc - GCC アセンブリ エラー: '.data' に対する R_X86_64_32S の再配置
状況
環境
Arch Linux x86-64 (4.2.3-1-ARCH)
GCC
gcc (GCC) 5.2.0
指示
エラー
コード
質問
上記のコマンドセクションのコマンドを使用して、上記のコードセクションgcc
のプログラムをコンパイルしようとしましたが、エラーセクションでエラーが発生しました。
共有ライブラリをコンパイルしていないことに注意してください。
- このエラーは何ですか?
- これを修正するにはどうすればよいですか?
c++ - 「収まるように切り捨てられた再配置:未定義のシンボル `xercesc_3_1::AbstractDOMParser::adoptDocument()' に対する R_X86_64_PC32」を解決する方法
ライブラリ xerces-c-3.1.1-x86_64-linux-gcc-3.4 (バイナリ) を使用する Eclipse で C++ プログラムをビルドしようとしています。以下のエラーが表示されます...
relocation truncated to fit: R_X86_64_PC32 against undefined symbol xercesc_3_1::AbstractDOMParser::adoptDocument()
undefined reference to xercesc_3_1::AbstractDOMParser::adoptDocument()
stackoverflow のリンク (この GCC エラー "... relocation truncated to fit..." とはどういう意味ですか? ) を調べて、これがどのタイプのエラーであるかを理解しましたが、解決方法についての解決策は得られませんでした。
私が使用している環境: Windows8.1 上の Cygwin64 と、Cygwin C++ コンパイラを使用するように構成された Eclipse。xerces-c-3.1.1-x86_64-linux-gcc-3.4 と xerces-c-3.1.1-x86-linux-gcc-3.4 の両方を試したところ、同じエラーが発生しました。何か不足していますか?
php - PHP 再配置ヘッダーが機能しない
アプリケーションの実際のコンテンツにアクセスする前に、最初にログインする必要がある Web アプリケーションをプログラムしました。
ユーザーが次のようにホームページに入ると、値「logedIn」を false に設定しています。
ユーザーがoverview.phpに移動しようとすると、コードはlogedInの値が「true」に等しいかどうかをチェックします。そうでない場合、ヘッダーは次のようにウィンドウをログイン ページに再配置します。
ヘッダーをエコーに置き換えると、コードを実行したときにヘッダーが実際に実行されていることを示す応答が返されます。
また、どのディレクトリにも .htaccess はありません。
問題が何であるかについて何か考えはありますか?
assembly - アセンブリの再配置が収まるように切り捨てられました
こんにちは、単純な hello world プログラムをアセンブリで作成し、それを .o ファイルにコンパイルしてから、標準 C ライブラリとリンクして .exe を作成し、「puts」の逆アセンブリを表示できるようにしようとしています。システムを使用してgdb -tui
います。次のユーティリティ バージョンで Cygwin を使用しています (これらは で取得しましたas --version && ld --version
)。これをすべて Windows 8 x64 で実行しようとしています。
バージョン 2.25 として
ld バージョン 2.25
テスト.asm
x86 アセンブリの学習中に、インターネットでいくつかのアセンブリ標準を見てきました。私がここに書いているのはGASだと思います。
アセンブラ
上記のファイルを問題なくアセンブルできます。as
ユーティリティは警告やエラーを表示しませんas
。ユーティリティを呼び出す方法を次に示します。
as test.asm -o test.o
リンカ
ここで問題が発生します。次のコマンドは、オブジェクトファイルを標準の c ライブラリにリンクする必要があると思う方法です。
ld test.o -o test.exe -lc
このコマンドは次のエラーを生成しますが、これには困惑しました。他の投稿やグーグルで答えを見つけようとしましたが、何か足りないかもしれません。