• # Formatage, puts, _start, etc.

    Posté par (site web personnel) . En réponse au message aide en assembleur quand je lance objdump -M intel -DTCs ./a.out. Évalué à 1.

    Ce serait sympa de faciliter la vie des gens qui pourraient vouloir te répondre, en utilisant la syntaxe Markdown à disposition, au moins pour le code que tu cites.

    Pour celles et ceux qui voudraient avoir le code sous la main, il semblerait que ceci dans coucou.c suffise pour avoir des choses similaires, même si j'ai du puts au lieu de printf :

    #include <stdio.h>
    int main(void) {
     printf("coucou\n");
     return 0;
    }
    

    Puis gcc -o coucou coucou.c && objdump -S -x coucou | less pour voir plein de choses.

    Côté symboles non définis, on notera en particulier :

    0000000000000000 F *UND* 0000000000000000 puts@@GLIBC_2.2.5
    ...
    0000000000000560 <puts@plt>:
     560: ff 25 b2 0a 20 00 jmpq *0x200ab2(%rip) # 201018 <puts@GLIBC_2.2.5>
     566: 68 00 00 00 00 pushq 0ドルx0
     56b: e9 e0 ff ff ff jmpq 550 <.plt>
    

    et dans main l'appel avec le callq 560 <puts@plt> :

    00000000000006b0 <main>:
     6b0: 55 push %rbp
     6b1: 48 89 e5 mov %rsp,%rbp
     6b4: 48 8d 3d 99 00 00 00 lea 0x99(%rip),%rdi # 754 <_IO_stdin_used+0x4>
     6bb: e8 a0 fe ff ff callq 560 <puts@plt>
     6c0: b8 00 00 00 00 mov 0ドルx0,%eax
     6c5: 5d pop %rbp
     6c6: c3 retq 
     6c7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
     6ce: 00 00 
    

    Sinon, _start est le point d'entrée, comme raconté ici par exemple → Introduction to the ELF Format (Part V) : Understanding C start up .init_array and .fini_array sections.

    Si ma réponse est trop loin du code que tu veux inspecter, ce serait bien de citer le code en question plutôt que la sortie de la décompilation de la compilation. ;p

    Debian Consultant @ DEBAMAX