class ELFTools::Segments::Segment
Base class of segments.
Class methods of {Segments::Segment}.
Attributes
Public Class Methods
Use different class according to header.p_type
. @param [ELFTools::Structs::ELF32_Phdr, ELFTools::Structs::ELF64_Phdr] header Program header of a segment. @param [#pos=, read] stream Streaming object. @return [ELFTools::Segments::Segment]
Return object dependes on +header.p_type+.
# File lib/elftools/segments/segments.rb, line 22 def create(header, stream, *args, **kwargs) klass = case header.p_type when Constants::PT_DYNAMIC then DynamicSegment when Constants::PT_INTERP then InterpSegment when Constants::PT_LOAD then LoadSegment when Constants::PT_NOTE then NoteSegment else Segment end klass.new(header, stream, *args, **kwargs) end
Instantiate a {Segment} object. @param [ELFTools::Structs::ELF32_Phdr, ELFTools::Structs::ELF64_Phdr] header
Program header.
@param [#pos=, read] stream
Streaming object.
@param [Method] offset_from_vma
The method to get offset of file, given virtual memory address.
# File lib/elftools/segments/segment.rb, line 17 def initialize(header, stream, offset_from_vma: nil) @header = header @stream = stream @offset_from_vma = offset_from_vma end
Public Instance Methods
The content in this segment. @return [String] The content.
# File lib/elftools/segments/segment.rb, line 32 def data stream.pos = header.p_offset stream.read(header.p_filesz) end
Is this segment executable? @return [Boolean] Ture or false.
# File lib/elftools/segments/segment.rb, line 51 def executable? (header.p_flags & 1) == 1 end
Is this segment readable? @return [Boolean] Ture or false.
# File lib/elftools/segments/segment.rb, line 39 def readable? (header.p_flags & 4) == 4 end
Return header.p_type
in a simplier way. @return [Integer]
The type, meaning of types are defined in {Constants::PT}.
# File lib/elftools/segments/segment.rb, line 26 def type header.p_type end
Is this segment writable? @return [Boolean] Ture or false.
# File lib/elftools/segments/segment.rb, line 45 def writable? (header.p_flags & 2) == 2 end