問題タブ [objcopy]

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 に答える
174 参照

c - 妖精。すでにリンクされている DSO のエクスポートされたシンボルを非表示にする

私はすでにコンパイル済み/リンク済みの DSO ファイルを持っています。これは、実際に非表示にする必要があるいくつかの関数をエクスポートします。コードをそのライブラリにリンクしようとすると、自分のシンボルではなく不要なシンボルが検出されます。ソース コードにアクセスできないため、バイナリを再構築して、不要なものに適切な可視性属性を使用することができません。

ここで唯一の解決策が見えます-不要なシンボルフォームの可視性GLOBALHIDDEN直接バイナリに変更します。そのような変更のための明らかなツールは ですobjcopyが、問題は、objcopy動的シンボル テーブルを変更するオプションがなく、通常のシンボル テーブルしか処理できないことです。

ダイナミック シンボル テーブルのシンボルの可視性を変更できるツールを知っている人はいますか?

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

gcc - 「シン アーカイブ」ファイルで objcopy を使用する際の問題

問題を再現するには、次のシェル コマンドを使用してください。

その結果、次のエラーが発生します。

objcopy:st0AENRL/subdir/file2.o: そのようなファイルまたはディレクトリはありません

PS「薄い」アーカイブがサブディレクトリのオブジェクトファイルで構成されている場合、objcopyの問題が発生します。

そのような objcopy の動作が問題ないかどうかは誰にもわかりませんか?

0 投票する
0 に答える
197 参照

binutils - 「objcopy -O ...」のエンディアンの意味は? バイナリデータは壊れますか?

この回答を読んだ後、私はすぐに次のように考えました。

リトル エンディアンかビッグ エンディアンかを特定する必要があるのはなぜですか? 単にバイナリ入力データをコピーするのではなく、objcopy選択したエンディアンに応じて何らかの方法でデータをマングルするということですか?

手元にあった例は次のとおりです。

これが本当にバイナリ データなら、objcopy気にする必要はありませんよね? 後でデータを読み取るものは何でも必要ですが、そうobjcopyする必要はありません...

objcopyオプションで指定されたビット数とエンディアンに基づいてデータをマングルし-Oますか?

0 投票する
0 に答える
239 参照

debugging - Linux カーネル用の個別のデバッグ シンボル ファイル

デバッグ シンボルを含むプログラムをコンパイルする場合 (例: を使用gcc -g) objcopy、. 後で、デバッグ シンボルのファイルを使用して、削除されたバイナリをデバッグできますgdb

私の質問は、Linux カーネル全体でこれを行うメカニズムまたは方法はありますか?

私の意図は、カーネル イメージをデバッグしながらサイズを縮小することです。

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

c++ - 外部オブジェクト ファイルで名前が変更されたシンボルを呼び出す方法は?

main()関数を外部に公開するだけの LLVM libFuzzer を使用して、特定のコードをファジングしようとしています。ターゲット コードのソースにアクセスできますが、変更できません。

オブジェクト ファイルを直接インクルードしようとすると、mainによって提供される定義と競合します-fsanitize=fuzzermainオブジェクト ファイル内のシンボルの名前を変更することで、これを解決できるかもしれないと考えました。

次に、ハーネス コードで次のように宣言します。

そして、リンク行に含めながら、stub_main()の代わりに呼び出します。ただし、これは機能していないようで、リンカーは への参照を見つけることができません。main()main.stubstub_main(int, char**)

main独自の を提供する別のコードからこの関数を呼び出すにはどうすればよいmain()ですか?

0 投票する
0 に答える
138 参照

gcc - 「x86_64-elf-objcopy -O binery Kernel.tmp Kernel.bin」を実行するとエラーになるのはなぜですか?

Windows で GCC クロスコンパイラを使用してカスタム OS 用のカーネルをコンパイルしています。Linux 用 Windows サブシステムをインストールし、クロス コンパイラを正常にビルドしました。ただし、x86_64-elf-objcopy -O binery Kernel.tmp Kernel.binカーネルを .bin ファイルにコンパイルするために実行しようとすると、この問題が発生し/usr/local/x86_64elfgcc/bin/x86_64-elf-objcopy: Kernel.bin: invalid bfd targetます。以前にこの問題に遭遇し、解決策を知っている人はいますか?

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

gcc - .elf から .bin に変換するとファイル サイズが大きくなる

arm-gcc ツールチェーンから生成された .elf ファイルを .bin ファイルに変換すると、そのサイズは 40kB から 1.1Gb に増加します。

変換のために使用しています: ./arm-none-eabi-objcopy -O binary test.elf test.bin

連続していないメモリマップが原因で、メモリ領域間のギャップがゼロで埋められている可能性があります。

objcopy で使用できるオプションは何ですか? または、変換する他の方法はありますか?

以下はエルフ情報です。

  • Tag_CPU_name: "Cortex-M7" Tag_CPU_arch: v7E-M
    Tag_CPU_arch_profile: Microcontroller Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: FPv5/FP-D16 for ARMv8 Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte
    Tag_ABI_enum_size: small Tag_ABI_VFP_args: VFP レジスタ
    Tag_ABI_optimization_goals: アグレッシブ デバッグ
    Tag_CPU_unaligned_access: v6

ELF ファイルに含まれるセクションのリストは次のとおりです。オフセット 0x3e982c から始まる 25 個のセクション ヘッダーがあります。

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

rust - 錆びたプログラムで objcopy --strip-all を実行するとサイズが半分になるのはなぜですか?

任意の錆プログラムで objcopy --strip-all を実行すると、サイズが半分になります。たとえば、通常の hello world アプリケーションを cargo build --release でコンパイルすると、3 MB の実行可能ファイル (Linux の場合) で終わります。次に、実行可能ファイルで objcopy --strip-all を実行すると、330 kb の実行可能ファイルで終了します。なぜこれが起こるのですか?

また、ツールチェーンとして x86_64-pc-windows-gnu を使用して Windows でこれをテストしたところ、実行可能ファイルのサイズが 4 MB から 1 MB に縮小されました。

Windows では、私のツールチェーンは毎晩 2021-07-22 です。Linux では、私のツールチェーンは毎晩 2021-07-05 です。

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

gcc - gcc objcopy によって生成されたバイナリ ファイルのサイズが、gcc サイズ出力の「テキスト」と「データ」の合計よりもはるかに大きい

からファイルobjcopy -S -g -O binary test.elf test.binを取得するために使用します。.bin.elf

のサイズは、 のテキストデータtest.binの合計よりも明らかに大きいです。なぜこれほど大きな違いがあるのでしょうか。にコピーするセクションは?test.elfobjcopy.elf.bin

0 投票する
0 に答える
13 参照

objcopy - objcopy - 複数のセクションのコピー

-j オプションobjcopyを使用して特定のセクションを 1 つだけコピーする場合は、次のようにします。

複数のセクションをコピーするには、このオプションを複数回指定する必要があることを正しく理解しましたか?