Что означает «COM ”Означает в столбце Ndx раздела .symtab?

add2.c:

int counter=0;
int a=0;
int b;
int c;
int add(int a, int b) {
    return a+b;
}

компиляция: gcc -c add2.c -o add2.o

чтение таблицы символов: readelf --symbols 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

Что означает «COM» в столбце Ndx? Я понимаю, что "counter" и "a" определены в разделе № 3 (т.е. .bss) и что "add" определено в разделе № 1 (т.е., .text), но я ожидал "b" и "c" также следует определить в разделе .bss, и поэтому в столбце Ndx будет стоять "3".

Спасибо

6
задан user368507 9 November 2010 в 19:18
поделиться