Le mar 06/01/2004 à 17:07, Yves Martin a écrit :
> C'est étrange - un objdump -h core me retourne des sections markées
> 'code' Peut-être qu'il y a eu des améliorations depuis le noyau 2.4
> pour ne pas inclure les sections text read-only mais laisser gdb les
> récupérer de l'exécutable (ou .so) d'origine.
Il me semble que sur ce point les noyaux 2.4 et 2.6 font pareil.
Le mardi 6 janvier, Xavier Bestel a répondu :
> Oui, alors selon le code du 2.6, les sections de code font partie des
> VMA à ne pas dumper. Cependant, les VMA non dumpées ont quand même un
> header, mais avec une taille de zéro:
>
> (ligne 1352 de binfmt_elf.c du 2.6.0)
> [...]
> phdr.p_filesz = maydump(vma) ? sz : 0; <= c'est ici !!!
J'ai la même chose dans un 2.4.8, ligne 1191.
> (la fonction maydump() est celle qui fait le tri de ce qui est dumpable
> ou pas, suivant le type de la VMA)
Ici l'essentiel de cette fonction est :
if (vma->vm_flags & (VM_WRITE|VM_GROWSUP|VM_GROWSDOWN))
return 1;
if (vma->vm_flags & (VM_READ|VM_EXEC|VM_EXECUTABLE|VM_SHARED))
return 0;
return 1;
J'imagine que c'est bien la section .text du programme qui est visée par
le return 0.
> Si maintenant on regarde en détail notre fichier core du "crash"
> d'Edgar:
>
> [xav@bip:~]$ objdump -h core
> [...]
J'ai sensiblement la même chose sur 2.4.8, à part l'alignement des
sections LOAD qui est de 2**0 au lieu de 2**12.
> * j'ai un peu triché pour que "crash" s'arrête au lieu de planter, sinon
> c'est tout pareil.
Je serais curieux de savoir comment...
--
Edgar Bonet Maison : 04 76 21 29 16 Bureau : 04 76 88 10 96
3 rue Jean Prévost Mobile : 06 77 19 79 39 Fax : 04 76 88 11 91
38000 Grenoble guilde@??? www.edgar-bonet.org