• [^] # Re: Readelf, objdump

    Posté par . En réponse au message GCC et taille des exécutables. Évalué à 1.

    ton code C est fonctionnellement équivalent au code assembleur, mais ce n'est pas pour ça qu'ils sont identiques. main() et _start, c'est pas pareil

    C'est justement ça le problème: GCC devrait utiliser la méthode la plus efficace en temps et en taille, non?
    Toutes les sections présentes dans ton ELF sont facultatives et ne servent qu'à donner des informations (par exemple pour déboguer, mais pas seulement

    Voilà ce que j'ai essayé:
    gilles@ordi:~$ strip --strip-all --remove-section=".comment" minimal -o minimal_stripped
    gilles@ordi:~$ strip --strip-all --remove-section=".comment" cminimal -o cminimal_stripped
    gilles@ordi:~$ ls -l cminimal minimal cminimal_stripped minimal_stripped
    -rwxr-xr-x 1 gilles gilles 6332 2008年01月26日 22:31 cminimal
    -rwxr-xr-x 1 gilles gilles 2556 2008年01月26日 22:37 cminimal_stripped
    -rwxr-xr-x 1 gilles gilles 596 2008年01月26日 22:12 minimal
    -rwxr-xr-x 1 gilles gilles 248 2008年01月26日 22:37 minimal_stripped

    Apparement, la commande strip permet la suppression de code mort dans le cas du programme C mais aussi dans le cas du programme ASM.
    Donc au final, en utilisant strip, on a toujours un facteur 10 entre les tailles des exécutables.

    PS: Au boulot j'utilise des DSP motorola qui ont 16Ko de mémoire programme, et on arrive quand même à faire pas mal de choses (en assembleur), donc je trouve que prendre 6ko pour un programme en C qui ne fait rien c'est abusé.