NAME
ELF::Writer::Segment - Object representing the fields of one program segment in an ELF file.
VERSION
version 0.000_001
ATTRIBUTES (header fields)
The following are elf program header fields:
type
Type of segment: 'null' (or undef), 'load', 'dynamic', 'interp', 'note', 'shlib', or 'phdr'. Defaults to 'load'.
offset
Offset of this segment within the elf file
virt_addr
Address where this segment should be memory-mapped
phys_addr
Address where this segment should be loaded
filesize, size
Size of the segment within the elf file
memsize
Size of the segment after loaded into memory
flags
32-bit flags. Use the accessors below to access the defined bits. Defaults to readable and executable.
flag_readable
Read/write the 'readable' bit of flags
flag_writeable
Read/write the 'writeable' bit of flags
flag_executable
Read/write the 'executable' bit of flags.
align
Page size, for both the file and when loaded into memory (I think?)
ATTRIBUTES (user)
data
The payload of this segment (machine code, or etc)
data_start
Used for auto-aligning segments within the elf file. This is the number of bytes in the file which should come between 'offset' and your data. Typical use of this feature is to have the first segment start at offset 0 and include the elf header, with data starting somehwere beyond it. If this is zero (or just less than the size of your elf header) then nearly a whole page will be wasted within the file as it aligns the start of the data to a page boundary.
METHODS
new
standard Moo constructor. Pass any attributes, *including* the flag aliases.
coerce
$class->coerce($thing)
Returns $thing
if it is an instance of $class
, or passes $thing to the constructor otherwise.
clone
Clone this instance.
AUTHOR
Michael Conrad <mike@nrdvana.net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Michael Conrad.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.