私は昔から趣味でカーネルを開発する作業をゆっくりしてきましたが、これまでGDBとQEMUを使ってメモリの場所やレジスタなどを探索してきました。しかし、最近Macを消去し、macOS Big Surの新しいコピーをインストールしましたReading symbols from ~/Kernel/bin/kernel... I'm sorry, Dave, I can't do that. Symbol format `elf32-i386' unknown
。
この問題の原因が何であるかわかりません。私はホームブルーGDB 10.1でデフォルトバージョンのGDBを使用しています。また、homebrewでi386-elf-gdbを試してみましたが、やはり動作しませんでした。 GDBを直接コンパイルし、--enable-targets = allなどのさまざまな設定オプションを設定し、ターゲットをi686-elfに設定しようとしましたが、何も機能しないようです。私の設定オプションのどれもmacOS Any GDB Bigでは有効になっていません。ソースからコンパイルされた、またはホームクラスからダウンロードされたSurはelf32-i386カーネルバイナリを読み込みます。
ベストアンサー1
問題が何であるかを調べ、最初にstring.hを含めずにstrncmpを使用しようとすると、clangが本当に気に入らないことがわかりました。また、gccはstring.hなしでelf-bfd.hをコンパイルするのに非常に満足しています。したがって、GDBがmacOSでコンパイルされても、ELFコードが正しくコンパイルされなかったため、ELFファイルのロードを拒否します。修正は単に#include <string.h>
elf-bfd.hの上部に追加するだけで、GDBはELFバイナリを正しくロードします。