Re: Linux supporte-t-il les fichiers creux ?

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: guilde
Sujet: Re: Linux supporte-t-il les fichiers creux ?
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