J’essaie d’accéder au contenu de la section .eh_frame
d’un programme en cours d’exécution depuis celui-ci (plus précisément, le programme est le kernel Linux 2.6.34.8). Le .eh_frame
contient des données utiles utilisées pour la gestion des exceptions et j’aimerais les utiliser en interne à partir du code du kernel. La section est déjà écrite par gcc
( readelf -a vmlinux.o
contient .eh_frame
), le problème est en train de la lire à partir du code. Je suis à peu près sûr que les documents de format elf disent que .eh_frame
est accessible pendant l’exécution du code.
J’ai examiné la source de glibc
à la recherche de l’utilisation de .eh_frame
et trouvé des macros pour la plupart des instructions CFA dans sysdeps/generic/sysdep.h
, mais pas le code qui charge les données .eh_frame
.
Est-il nécessaire de modifier le processus de chargement du kernel pour charger les données à partir du fichier ou le pointeur de la section .eh_frame
info / .eh_frame_hdr
-il stocké quelque part sous un nom de macro / assembleur (afin de pouvoir l’extraire dans une variable C)?
vmlinux.o
n’est pas le kernel qui est chargé.
L’image réelle du kernel (généralement bzImage
) n’est pas un fichier ELF et contient uniquement les données nécessaires à l’exécution du kernel.
De plus, la majeure partie du kernel n’est pas compilée avec les informations de traitement des exceptions.