Class: MachO::LoadCommands::DylibCommand

Inherits:
LoadCommand show all
Defined in:
lib/macho/load_commands.rb

Overview

A load command representing some aspect of shared libraries, depending on filetype. Corresponds to LC_ID_DYLIB, LC_LOAD_DYLIB, LC_LOAD_WEAK_DYLIB, and LC_REEXPORT_DYLIB.

Constant Summary collapse

FORMAT =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"L=6".freeze
SIZEOF =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

24

Instance Attribute Summary collapse

Attributes inherited from LoadCommand

#cmd, #cmdsize, #view

Instance Method Summary collapse

Methods inherited from LoadCommand

create, new_from_bin, #offset, #serializable?, #to_s, #type

Methods inherited from MachOStructure

bytesize, new_from_bin

Constructor Details

#initialize(view, cmd, cmdsize, name, timestamp, current_version, compatibility_version) ⇒ DylibCommand

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of DylibCommand.



560
561
562
563
564
565
566
567
# File 'lib/macho/load_commands.rb', line 560

def initialize(view, cmd, cmdsize, name, timestamp, current_version,
               compatibility_version)
  super(view, cmd, cmdsize)
  @name = LCStr.new(self, name)
  @timestamp = timestamp
  @current_version = current_version
  @compatibility_version = compatibility_version
end

Instance Attribute Details

#compatibility_versionInteger (readonly)



549
550
551
# File 'lib/macho/load_commands.rb', line 549

def compatibility_version
  @compatibility_version
end

#current_versionInteger (readonly)



546
547
548
# File 'lib/macho/load_commands.rb', line 546

def current_version
  @current_version
end

#nameLCStr (readonly)



540
541
542
# File 'lib/macho/load_commands.rb', line 540

def name
  @name
end

#timestampInteger (readonly)



543
544
545
# File 'lib/macho/load_commands.rb', line 543

def timestamp
  @timestamp
end

Instance Method Details

#serialize(context) ⇒ String

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the serialized fields of the load command.



573
574
575
576
577
578
579
580
581
# File 'lib/macho/load_commands.rb', line 573

def serialize(context)
  format = Utils.specialize_format(FORMAT, context.endianness)
  string_payload, string_offsets = Utils.pack_strings(SIZEOF,
                                                      context.alignment,
                                                      :name => name.to_s)
  cmdsize = SIZEOF + string_payload.bytesize
  [cmd, cmdsize, string_offsets[:name], timestamp, current_version,
   compatibility_version].pack(format) + string_payload
end

#to_hHash



584
585
586
587
588
589
590
591
# File 'lib/macho/load_commands.rb', line 584

def to_h
  {
    "name" => name.to_h,
    "timestamp" => timestamp,
    "current_version" => current_version,
    "compatibility_version" => compatibility_version,
  }.merge super
end