Quello è il mio codice:Come leggere l'output nm?
int const const_global_init = 2;
int const const_global;
int global_init = 4;
int global;
static int static_global_init = 3;
static int static_global;
static int static_function(){
return 2;
}
double function_with_param(int a){
static int static_local_init = 3;
static int static_local;
return 2.2;
}
int main(){
}
ho generare main.o
e cerco di intesa nm
uscita. Dopo io uso nm main.o --printfile-name -a
ottengo questo output:
main.o:0000000000000000 b .bss
main.o:0000000000000000 n .comment
main.o:0000000000000004 C const_global
main.o:0000000000000000 R const_global_init
main.o:0000000000000000 d .data
main.o:0000000000000000 r .eh_frame
main.o:000000000000000b T function_with_param
main.o:0000000000000004 C global
main.o:0000000000000000 D global_init
main.o:0000000000000027 T main
main.o:0000000000000000 a main.c
main.o:0000000000000000 n .note.GNU-stack
main.o:0000000000000000 r .rodata
main.o:0000000000000000 t static_function
main.o:0000000000000000 b static_global
main.o:0000000000000004 d static_global_init
main.o:0000000000000004 b static_local.1733
main.o:0000000000000008 d static_local_init.1732
main.o:0000000000000000 t .text
ho capito 2 ° e 3 ° colonna, ma, io veramente non so che cosa è nella prima colonna, se è l'indirizzo o dimensioni? So qualcosa su .bbs
, .comment
, .data
e .text
segmenti ma che cos'è .eh_frame
, .note.GNU-stack
e .rodata
?