Skip to content
Go to file
Cannot retrieve contributors at this time
48 lines (30 sloc) 1.54 KB
$OpenBSD: SPECS.randomdata,v 1.3 2018/06/01 03:27:59 mortimer Exp $
This document describes the OpenBSD operating system supplement for
adding "random data" sections to the ELF ABI. These sections can be
useful for holding values like GCC's stack-smashing protector cookies
and offer additional benefits like ensuring the data is initialized
before any constructor methods are called and allowing the dynamic
linker to mark the memory as read-only after initialization.
Program Header
OpenBSD defines the following operating system-specific segment type:
Name Value
The array element specifies the location and size of a random data
section. The system will initialize the specified memory range
with random data. The memory range must be separately mapped
(e.g., by use of a PT_LOAD segment).
Special Sections
OpenBSD defines the following operating system-specific special
Name Type Attributes
.openbsd.randomdata SHT_PROGBITS SHF_ALLOC
This section holds the random data section.
Implementation Notes
On OpenBSD, PT_OPENBSD_RANDOMIZE segments are handled alongside
PT_LOAD segments: the kernel handles initializing random data segments
in executables and program interpreters (i.e.,, while
handles initializing them in shared libraries. Additionally, the
kernel limits the total number of PT_OPENBSD_RANDOMIZE segment bytes
in an executable or interpreter to 1048576 bytes.
You can’t perform that action at this time.