nde estão as variáveis estáticas armazenadas em C e C +

Em que segmento (.BSS, .DATA, outro) de um arquivo executável são variáveis estáticas armazenadas para que não tenham colisão de nome? Por exemplo


foo.c:                         bar.c:
static int foo = 1;            static int foo = 10;
void fooTest() {               void barTest() {
  static int bar = 2;            static int bar = 20;
  foo++;                         foo++;
  bar++;                         bar++;
  printf("%d,%d", foo, bar);     printf("%d, %d", foo, bar);
}                              }

Se eu compilar os dois arquivos e o vincular a um main que chama fooTest () e barTest repetidamente, as instruções printf aumentam independentemente. Faz sentido, pois as variáveis foo e bar são locais na unidade de tradução.

Mas onde o armazenamento é alocado?

Para ficar claro, a suposição é que você possui uma cadeia de ferramentas que produziria um arquivo no formato ELF. Assim, euacredita que láte para haver algum espaço reservado no arquivo executável para essas variáveis estática
ara fins de discussão, vamos supor que usamos a cadeia de ferramentas do GC

questionAnswers(32)

yourAnswerToTheQuestion