• # Readelf, objdump

    Posté par (site web personnel) . En réponse au message GCC et taille des exécutables. Évalué à 4.

    Deux choses importantes.

    La première, c'est que 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. Dans le cas du code en C, la fonction main() est appelée par la libc (c'est elle qui définit le _start). Donc, par défaut, ton programme en C est lié dynamiquement à la libc. Ça prend un peu de place.

    Ensuite, le plus gourmand en taille : gcc, par défaut, n'est pas avare d'informations.
    Utilise readelf -a minimal ou objdump -x minimal pour lister tout ce qui se trouve dans ton exécutable. Toutes les sections présentes dans ton ELF sont facultative et ne servent qu'à donner des informations (par exemple pour déboguer, mais pas seulement).

    En bref, ce n'est pas du tout du "code mort". Ce sont des informations complètement facultatives, mais qui peuvent être très utiles.

    Le programme sstrip, des Elf-Kickers, permet d'enlever un bon paquet de ces infos facultatives.