web-dev-qa-db-fra.com

GDB est installé à partir de Homebrew sur MacOS Big Sur Obls pour charger des symboles de Elf32-I386

pour le passé, je travaille lentement sur le développement d'un noyau de hobbyiste et, pour tout ce temps, j'ai utilisé GDB avec QEMU pour étudier des emplacements de mémoire et des registres et de ce qui n'est pas. Cependant, j'ai récemment essuyé mon Mac et installé une nouvelle copie de Macos Big Sor, et tandis que le GDB de Homebrew sur Mojave a été capable de charger mon noyau binaire très bien, sur Big Sur, il jette simplement ce message d'erreur: Reading symbols from ~/Kernel/bin/kernel... I'm sorry, Dave, I can't do that. Symbol format `elf32-i386' unknown.

Je n'ai aucune idée de ce qui le cause, j'utilise la version stock de GDB à partir de Homebrew, GDB 10.1. J'ai également essayé d'utiliser I386-ELF-GDB de HOMEBREW, mais cela ne fonctionne pas non plus. J'ai même essayé de compiler le GDB moi-même et de définir toutes sortes d'options de configuration telles que --enable-cibles = Tout, et de définir la cible sur I686-elf, mais rien ne semble fonctionner, aucune de mes options de configuration ne permettra aucun GDB sur MacOS Big Sur, soit compilé de la source, ou téléchargé de Homebrew, pour lire les fichiers binaires Kernel ELF32-I386.

5
aurxenon

Vous avez compris ce que le problème était, s'avère que Clang n'aime vraiment pas lorsque vous essayez d'utiliser STRNCMP sans d'abord, y compris String.h. Pendant ce temps, GCC est parfaitement heureux de compiler elf-bfd.h sans y compris String.h. En conséquence, même si GDB compilera sur MacOS, il refuse simplement de charger des fichiers ELF car le code ELF n'est pas compilé correctement. Le correctif est juste d'ajouter #include <string.h> au sommet de elf-bfd.h et de GDB chargeront correctement les fichiers binaires elfe.

2
aurxenon