add2.c:Cosa significa "COM" nella colonna Ndx della sezione .symtab?
int counter=0;
int a=0;
int b;
int c;
int add(int a, int b) {
return a+b;
}
compilazione: gcc -c add2.c -o add2.o
leggere la tabella dei simboli: --symbols readelf add2.o
Symbol table '.symtab' contains 12 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS add2.c
2: 00000000 0 SECTION LOCAL DEFAULT 1
3: 00000000 0 SECTION LOCAL DEFAULT 2
4: 00000000 0 SECTION LOCAL DEFAULT 3
5: 00000000 0 SECTION LOCAL DEFAULT 5
6: 00000000 0 SECTION LOCAL DEFAULT 4
7: 00000000 4 OBJECT GLOBAL DEFAULT 3 counter
8: 00000004 4 OBJECT GLOBAL DEFAULT 3 a
9: 00000004 4 OBJECT GLOBAL DEFAULT COM b
10: 00000004 4 OBJECT GLOBAL DEFAULT COM c
11: 00000000 14 FUNC GLOBAL DEFAULT 1 add
Cosa significa "COM" nella colonna Ndx? Capisco che "counter" e "a" sono definiti nella sezione # 3 (cioè, .bss) e che "add" è definito nella sezione # 1 (cioè, .text), ma mi aspettavo "b" e "c" deve essere definito anche nella sezione .bss, quindi ottieni un "3" nella colonna Ndx.
si
Ok! Capisco che non possiamo ora dove un simbolo "COMUNE" finirà per cercare un file oggetto rilocabile. Questo è deciso dal linker, al momento del link, in funzione di ciò che altri file oggetto rilocabili fanno con questo simbolo. È giusto ? – user368507
Sì, è vero. –