Class: MachO::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.



468
469
470
471
472
473
474
# File 'lib/macho/load_commands.rb', line 468

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_versionFixnum (readonly)

Returns the library's compatibility version number.

Returns:

  • (Fixnum)

    the library's compatibility version number



457
458
459
# File 'lib/macho/load_commands.rb', line 457

def compatibility_version
  @compatibility_version
end

#current_versionFixnum (readonly)

Returns the library's current version number.

Returns:

  • (Fixnum)

    the library's current version number



454
455
456
# File 'lib/macho/load_commands.rb', line 454

def current_version
  @current_version
end

#nameMachO::LoadCommand::LCStr (readonly)

Returns the library's path name as an LCStr.

Returns:



448
449
450
# File 'lib/macho/load_commands.rb', line 448

def name
  @name
end

#timestampFixnum (readonly)

Returns the library's build time stamp.

Returns:

  • (Fixnum)

    the library's build time stamp



451
452
453
# File 'lib/macho/load_commands.rb', line 451

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.

Parameters:

  • context (MachO::LoadCcommand::SerializationContext)

    the context

Returns:

  • (String)

    the serialized fields of the load command



479
480
481
482
483
484
485
# File 'lib/macho/load_commands.rb', line 479

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