Seção .shstrtab não tendo sinalizador para conter sequências terminadas com nulo

0

readelf -S a.out de saídas:

[Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Ar
[ 0]                   NULL            00000000 000000 000000 00      0   0  0
[ 1] .text             PROGBITS        08048060 000060 000013 00  AX  0   0 16
[ 2] .rodata           PROGBITS        08048074 000074 00000b 00   A  0   0  4
[ 3] .shstrtab         STRTAB          00000000 00007f 000019 00      0   0  1

O tipo de .shstrtab é STRTAB . Mas não tem sinalizadores definidos. Para / bin / true é semelhante.

Flag: SHF_STRINGS: Contains null-terminated strings e Type: SHT_STRTAB: String table

Bem, parece ser redundante. O sinalizador String já foi usado independentemente do tipo String?

    
por Andy 07.02.2018 / 00:49

1 resposta

1

Eu não vi o atributo SHF_STRINGS na Interface binária de aplicativo do System V, edição 4.1 (rascunho, 18 de março de 1997) documento (encontrado ao examinar a entrada da Wikipedia ), mas o encontrou listado na Atualização ABI do System V (outubro de 2009) ; foi aparentemente adicionado no segundo rascunho (3 de maio de 1999) , mas o histórico de revisões não não indique porque foi adicionado. Parece que isso foi introduzido juntamente com o atributo SHF_MERGE , possivelmente para que as tabelas de strings e as tabelas não-string não sejam mescladas acidentalmente (?). No entanto, até onde pude encontrar, não havia referências a SHF_STRINGS fora das tabelas de strings (e como SHF_MERGE é afetado pelas entradas marcadas por SHF_STRINGS ), nem na documentação específica do LSB ou da arquitetura.

Portanto, em teoria, parece que o atributo SHF_STRINGS poderia ser usado para marcar seções diferentes de uma tabela de strings que contêm strings com terminação nula, mas não vi nenhuma vez quando isso aconteceu. Talvez alguém tenha feito uso da provisão, mas não consegui encontrar nenhum exemplo disso.

    
por 07.02.2018 / 07:40

Tags