問題タブ [binutils]
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.
gcc - Binutils を 2.16.1 から 2.19 にアップグレードする利点はありますか? なんで?
PSPSDK (Homebrew) では、Binutils 2.16.1 を使用して PlayStation Portable のコードをアセンブルおよびリンクしていますが、そのリリースはかなり時代遅れになっています (3 つのバージョンがそれに取って代わりました)。コミュニティと私は GCC と newlib を最新の安定バージョンに更新しており、すべてが古い binutils で動作するようです。
GCC は binutils 2.19 でより良いコードを生成しますか? なんで?binutils 2.19 は 2.16.1 よりも優れた elf ファイルとライブラリを生成しますか? なんで?
assembly - MIPSレジスタ名をGAS(GNUアセンブラ)で使用することは可能ですか?
レジスタ名を使用すると、次のようになります。
$8
(の代わりに)レジスタ番号を使用する$t0
と、機能します。(私はbinutils 2.17を使用しています)。$0
$zero
gcc - 命令をノーオペレーションしようとしています
GNU ツール (gcc、binutils など) を使用して、アセンブリ命令のすべての出現をノーオペレーションに変更することは可能ですか? 具体的には、-pg オプションを指定した gcc は、次のアセンブリ (ARM) を生成します。
この最後の命令のアドレスを記録し、次のコードのように nop に変更したい
Linux カーネルは実行時にこれと同様のことを行うことができますが、私はビルド時の解決策を探しています。
gcc - リンカーの失敗に関するヘルプ: .gnu.linkonce.t
gcc 3.2.3 と binutils 2.18 を使用して共有ライブラリをリンクするのに問題があります。ライブラリをリンクしようとすると、次のエラーが発生します。
.gnu.linkonce.t_... セクション .rodata で参照: 破棄されたセクション .gnu.linkonce.t... で定義
私はこれについてかなりの量のグーグル検索を行いましたが、ほとんどの場所は、それが binutils 2.17 で導入され、その後 2.18.50 で修正された回帰であることを示しているようですが、問題の特定の回避策がないかどうか誰かが知っているかどうか興味がありましたbinutils と gcc に触れる必要があります。
ありがとう。
macos - Mac OS X 10.6 に gnu ld をインストールするには?
macbook pro (mac os x 10.6)で優れたContiki OSをコンパイルするのに苦労しています。Contiki は実際には、GCC、AR、LD などの GNU 固有の機能とオプションを多数使用しています。それで、macports 経由でこれらのユーティリティをインストールしましたが、"port install binutils" では GNU ld がインストールされないようですね。
問題は、Mac で GNU ld を取得するにはどうすればよいかということです。ハードウェイ(つまりザ・wget, configure, make, make install
ウェイ)に代わる簡単な方法はありますか?
gcc - binutils と gcc を一緒にコンパイルするためのレシピは?
gcc のビルド手順に従って、gcc (および gmp、mpc など) のビルドと同時に binutils をビルドできます。
そのページの内容は次のとおりです。
また、binutils をビルドする場合 (既存のインストールをアップグレードするため、または OS の対応するツールの代わりに使用するため)、binutils ディストリビューションを同じディレクトリまたは別のディレクトリに展開します。後者の場合、コンパイラと一緒にビルドする予定の binutils のコンポーネント (bfd、binutils、gas、gprof、ld、opcodes など) へのシンボリック リンクを、GCC ソースを含むディレクトリに追加します。
同様に、GMP、MPFR、および MPC ライブラリは、GCC と一緒に自動的に構築できます。GCC ソースを含むディレクトリで GMP、MPFR、MPC ソース配布を展開し、それらのディレクトリの名前をそれぞれ gmp、mpfr、mpc に変更します (または同じ名前のシンボリック リンクを使用します)。
これは gmp、mpc、mpfr では問題なく動作しますが、binutils のすべてをビルドすることはできないようです。また、binutils から新しいゴールド リンカーをビルドする方法もわかりません。問題のバージョンは gcc-4.4.2 と binutils-2.20 です。
ステップバイステップの説明は素晴らしいことです(私にとっても、この問題に遭遇した他の人にとっても)。
linux - solaris elfedit:Linuxに似たものはありますか?(共有ライブラリエディタ)?
Linux:コンパイルされた共有ライブラリを編集する方法はありますか?
DT_SYMBOLIC flag
具体的には、コンパイル済みのバイナリ共有ライブラリにを追加する方法を探していますか?
これが私がこれを求めている理由です:
私たちのアプリケーションはで構成されています
- 独自のライブラリ(静的libXXX.a)
- 一部のサードパーティライブラリ(バイナリのみの共有ライブラリlibYYY.so)
これまでのところ、アプリケーションはすべて問題ありません。
これで、独自の静的* libXXX.aライブラリを共有ライブラリバージョン(libXXX.so)に置き換えました。
すべてが正常にコンパイルおよびリンクされます。
しかし、今アプリケーションを実行すると、アプリケーションが起動し、予想される多くの処理を実行します。その後、途中でクラッシュします。gdbバックトレースは、クラッシュが一部のサードパーティ共有ライブラリで発生することを示しています。
私はSOFを検索して、ここで興味深い記事を見つけました。
私が言及しているヒントは
それが本当に役立つとは思えませんが、試してみる価値があると思います。
DT_SYMBOLIC flag
すでにコンパイル/リンクされている共有ライブラリにを追加する方法はありますか?
環境:g++v4.2.4およびbinutilsv20を使用したdebianlenny64ビット。
編集:solarisには。と呼ばれるプログラムがありelfedit
ます。Linuxに似たものはありますか?
gcc - ELF 共有ライブラリ: 境界外の再配置オフセット
ELF バイナリをチェックするためにelfutils
呼び出されるプログラムを含むソフトウェア パッケージがあります ( C の場合と同様 - 名前の由来)。eu-elflint
lint
好奇心のために、このツールを使用して独自の共有ライブラリをチェックしたところ、次のような多くの問題が見つかりました。
クロスチェックとして、以下のソースコードから非常に簡単な共有ライブラリを構築しました
そして再挑戦…
ご覧のとおり、些細な例でも多くの問題が示されています。
ところで:私はgcc v4.4.1でUbuntu-Karmic-32bitを使用しています
ところで:... gcc v4.2.4を使用したDebian-Lenny-64bitでも同じことが起こります
これは私が心配すべきことですか?
global-variables - オブジェクトファイルからグローバル変数の初期化された値を取得するにはどうすればよいですか?
オブジェクト ファイルがある場合、そのオブジェクト ファイルのデータ セグメント内のグローバル変数の初期化された値をどのように取得しますか? たとえば、次のことを行ったとします。
これはfoo
、サイズ 4 のデータ セグメントのオフセット 0x48 にあることを示していますが、ロード時に実際に初期化された値を取得するにはどうすればよいですか?
strip - only-keep-debugでobjcopyのストリップを逆にする方法は?
最新の Linux では、ほとんどすべてのオブジェクトが取り除かれ、2 つの部分 (2 つのファイル) に分割されます。1 つ目は実行可能ファイルそのもので、2 つ目は元の ELF から削除されたデバッグ シンボルです。そのようなファイルはで作成されます
デバッグ情報を含む ELF ファイルにマージするbinary
にはどうすればよいですか? binary.dbg
ストリップされていない元のバイナリを再作成したい。バイト単位でオリジナルと同じにすることはできませんが、内部にデバッグ シンボルを含める必要があります。
PS はい、セクションについては知ってgnu.debuglink
いますが、一部のデバッガー (etnus) と逆アセンブラーでは機能しません (objdump はシンボル情報を復元できません)。