Isso não é um artefato da saída de readelf
; myVariable.9751
é realmente o nome desse símbolo. Para distinguir variáveis estáticas definidas em diferentes escopos / funções, o compilador deve decorar seus nomes de alguma forma:
$ cat a.c
static int var;
int foo(void){
static int var;
if(var++ > 3){ static int var; return var++; } else return var++;
}
int bar(void){ static int var; return var++; }
int baz(void){ return var++; }
$ cc -Wall -o - -S a.c | grep local.*var
.local var
.local var.1759
.local var.1760
.local var.1764
Observe que o ponto ( .
) não pode ser usado em C como parte de um identificador, portanto var.num
não colidirá com nenhuma outra variável definida pelo usuário.
Quanto à documentação de leitura, não há muito além da página de manual e lendo o código fonte; mas você também pode usar objdump -tT
em vez de readelf -s
; talvez você ache a sua página de manual melhor.