Citando man elf
(mas você pode encontrar as mesmas informações da especificação ELF):
p_offset: This member holds the offset from the beginning of the file at which the first byte of the segment resides.
p_filesz: This member holds the number of bytes in the file image of the segment. It may be zero.
p_memsz: This member holds the number of bytes in the memory image of the segment. It may be zero.
Para resumir:
-
p_offset
é o deslocamento do segmento no arquivo ELF; -
p_memsz
é o tamanho do segmento na memória ; -
p_filesz
é o tamanho do segmento no arquivo .
O tamanho no arquivo pode ser menor que o tamanho na memória p_memsz
: nesse caso, a parte restante do segmento é preenchida com zersos (em sistemas POSIX-ish essa parte é mmap
-ped usando MAP_ANONYMOUS
).
Referências do GNU ld.so
:
-
onde o
mmap
estão concluídos ; -
onde alguns dos dados são computado para o cabeçalho do programa .
Você pode estar interessado em o código do elfcat (uma ferramenta que escrevi) que despeja um determinado segmento para stdout.