問題タブ [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.

0 投票する
2 に答える
503 参照

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 ファイルとライブラリを生成しますか? なんで?

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

assembly - MIPSレジスタ名をGAS(GNUアセンブラ)で使用することは可能ですか?

レジスタ名を使用すると、次のようになります。

$8(の代わりに)レジスタ番号を使用する$t0と、機能します。(私はbinutils 2.17を使用しています)。$0$zero

0 投票する
2 に答える
1649 参照

gcc - 命令をノーオペレーションしようとしています

GNU ツール (gcc、binutils など) を使用して、アセンブリ命令のすべての出現をノーオペレーションに変更することは可能ですか? 具体的には、-pg オプションを指定した gcc は、次のアセンブリ (ARM) を生成します。

この最後の命令のアドレスを記録し、次のコードのように nop に変更したい

Linux カーネルは実行時にこれと同様のことを行うことができますが、私はビルド時の解決策を探しています。

0 投票する
2 に答える
4871 参照

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 に触れる必要があります。

ありがとう。

0 投票する
2 に答える
13739 参照

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ウェイ)に代わる簡単な方法はありますか?

0 投票する
2 に答える
16956 参照

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 です。

ステップバイステップの説明は素晴らしいことです(私にとっても、この問題に遭遇した他の人にとっても)。

0 投票する
2 に答える
2321 参照

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に似たものはありますか?

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

gcc - ELF 共有ライブラリ: 境界外の再配置オフセット

ELF バイナリをチェックするためにelfutils呼び出されるプログラムを含むソフトウェア パッケージがあります ( C の場合と同様 - 名前の由来)。eu-elflintlint

好奇心のために、このツールを使用して独自の共有ライブラリをチェックしたところ、次のような多くの問題が見つかりました。

クロスチェックとして、以下のソースコードから非常に簡単な共有ライブラリを構築しました

そして再挑戦…

ご覧のとおり、些細な例でも多くの問題が示されています。

ところで:私はgcc v4.4.1でUbuntu-Karmic-32bitを使用しています

ところで:... gcc v4.2.4を使用したDebian-Lenny-64bitでも同じことが起こります

これは私が心配すべきことですか?

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

global-variables - オブジェクトファイルからグローバル変数の初期化された値を取得するにはどうすればよいですか?

オブジェクト ファイルがある場合、そのオブジェクト ファイルのデータ セグメント内のグローバル変数の初期化された値をどのように取得しますか? たとえば、次のことを行ったとします。

これはfoo、サイズ 4 のデータ セグメントのオフセット 0x48 にあることを示していますが、ロード時に実際に初期化された値を取得するにはどうすればよいですか?

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

strip - only-keep-debugでobjcopyのストリップを逆にする方法は?

最新の Linux では、ほとんどすべてのオブジェクトが取り除かれ、2 つの部分 (2 つのファイル) に分割されます。1 つ目は実行可能ファイルそのもので、2 つ目は元の ELF から削除されたデバッグ シンボルです。そのようなファイルはで作成されます

デバッグ情報を含む ELF ファイルにマージするbinaryにはどうすればよいですか? binary.dbgストリップされていない元のバイナリを再作成したい。バイト単位でオリジナルと同じにすることはできませんが、内部にデバッグ シンボルを含める必要があります。

PS はい、セクションについては知ってgnu.debuglinkいますが、一部のデバッガー (etnus) と逆アセンブラーでは機能しません (objdump はシンボル情報を復元できません)。