Re: Nommage de la fonction main() en assembleur

Top Page

Reply to this message
Author: Patrice Karatchentzeff
Date:  
To: GUILDE
Subject: Re: Nommage de la fonction main() en assembleur
J'ai dit une ânerie : la fonction main correspond à la section .plt.

PK

Le mer. 26 oct. 2022 à 14:44, Patrice Karatchentzeff
<patrice.karatchentzeff@???> a écrit :
>
> Salut,
>
> Quand gcc compile un programme en C, il semble qu'il garde le nom de
> main du C pour l'assembleur.
>
> Soyons follement original :
>
> #include <stdio.h>
>
> int main(void) {
>     printf("Hello, world!\n");
>     return 0;
> }

>
> donne *en assembleur* (gcc -s) :
>
> (...)
>       .text
> LC0:
>         .ascii "Hello, world!\12\0"
> .globl _main
>         .def    _main;  .scl    2;      .type   32;     .endef
> _main:
>         pushl   %ebp
>         movl    %esp, %ebp
> etc.

>
> Donc au début du programme, le main est bien référencé en _main.
>
> Dont acte.
>
> Pourtant, si je compile et que je désassemble le binaire compilé, je
> ne retrouve pas cette fonction. Au mieux, j'ai un .init dedans qui
> semble être la même chose.
>
> J'ai fait un grep dans toutes les gnuteries de mon système et c'est pareil.
>
> Alors, j'ai deux questions :
>
> * main = .init ?
> * est-ce une règle ? Je ne trouve rien sur le net à ce sujet...
>
> Merci de vos lumières,
>
> PK
>
>
> --
>       |\      _,,,---,,_           Patrice KARATCHENTZEFF
> ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
>      |,4-  ) )-,_. ,\ (  `'-'
>     '---''(_/--'  `-'\_)




-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)