2017-10-05 5 views
-2

J'ai le code d'assembly suivant. mais je ne peux pas comprendre ce qui est STT_FUNC ??qu'est-ce que le type STT_FUNC dans l'ensemble

.section .rodata 
    Lhello: 
     .asciz "Hello!" 

.section .text 
     .globl function1 
     .type function1, STT_FUNC 
function1: 
+2

Cela ressemble à GNU 'as'. Avez-vous essayé de lire [la documentation] (https://sourceware.org/binutils/docs/as/)? –

+0

Qu'en est-il de cette question? Veuillez clarifier ou supprimer l'étiquette. – Yunnosch

+0

Quel format de plate-forme et de fichier objet votre compilateur a-t-il ciblé quand il l'a fait? –

Répondre

1

Comme le montre le documentation, la directive

.type function1,STT_FUNC 

également écrit

.type function1,@function 

marque le symbole function1 comme ayant le type symboleSTT_FUNC. Cela fait une différence lors de la liaison dynamique lorsque les entrées PLT sont générées pour les fonctions uniquement.

Il est généralement une bonne idée de marquer votre symbole approprié: les symboles Mark se référant aux données

.type some_variable,@object 

et les symboles se référant à des fonctions comme

.type some_function,@function 
+0

Ah, je me suis toujours demandé ce que les informations de type symbole étaient autres que le débogage. –