add2.c:¿Qué significa "COM" significa en la columna de la sección Ndx .symtab?
int counter=0;
int a=0;
int b;
int c;
int add(int a, int b) {
return a+b;
}
compilación: gcc -c add2.c -o add2.o
lectura de la tabla de símbolos: --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
¿Qué significa "COM" en la columna Ndx? Entiendo que "counter" y "a" se definen en la sección # 3 (es decir, .bss) y que "añadir" se define en la sección # 1 (es decir, .text), pero que estaba esperando "b" y "c" se definirá en la sección .bss también, y así obtener un "3" en la columna Ndx.
que
Ok! Entiendo que no podemos ahora dónde un símbolo "COMÚN" terminará mirando a un archivo de objeto reubicable. Esto lo decide el vinculador, en el momento del enlace, en función de lo que otros archivos de objeto reubicables hacen con este símbolo. Es correcto ? – user368507
Sí, eso es correcto. –