How does ELF file format defines the stack?

前端 未结 1 1780
野的像风
野的像风 2021-01-06 05:54

I\'m studying the ELF file format, so I compiled a small program, dumped the section headers and their contents from the resulting executable.

The ELF header contain

相关标签:
1条回答
  • 2021-01-06 06:23

    The following figure describes the memory map of a typical C ELF executable on x86.

     Memory map of an C ELF executable on x86

    • The process loads the .text and .data sections at the base address.

    • The main-stack is located just below and grows downwards.

    • Each thread and function-call will have its own-stack.
      This is located located below the main-stack.

    • Each stack is separated by a guard page to detect Stack-Overflow.

    Hence one does NOT need a dedicated stack section in the ELF file.


    However within the man pages for ELF, one does find a couple of things in an ELF file that control the stack attributes. Mainly the executable permissions to the stack in memory.

    1. PT_GNU_STACK
      GNU extension which is used by the Linux kernel to control the state of the stack via the flags set in the p_flags member.

    2. .note.GNU-stack
      This section is used in Linux object files for declaring stack attributes. This section is of type SHT_PROGBITS. The only attribute used is SHF_EXECINSTR. This indicates to the GNU linker that the object file requires an executable stack.

    0 讨论(0)
提交回复
热议问题