Class: MachO::MachHeader

Inherits:
MachOStructure show all
Defined in:
lib/macho/headers.rb

Overview

32-bit Mach-O file header structure

Direct Known Subclasses

MachHeader64

Constant Summary collapse

FORMAT =
"L=7"
SIZEOF =
28

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from MachOStructure

bytesize, new_from_bin

Constructor Details

#initialize(magic, cputype, cpusubtype, filetype, ncmds, sizeofcmds, flags) ⇒ MachHeader

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 MachHeader.



442
443
444
445
446
447
448
449
450
451
452
453
# File 'lib/macho/headers.rb', line 442

def initialize(magic, cputype, cpusubtype, filetype, ncmds, sizeofcmds,
    flags)
  @magic = magic
  @cputype = cputype
  # For now we're not interested in additional capability bits also to be
  # found in the `cpusubtype` field. We only care about the CPU sub-type.
  @cpusubtype = cpusubtype & ~CPU_SUBTYPE_MASK
  @filetype = filetype
  @ncmds = ncmds
  @sizeofcmds = sizeofcmds
  @flags = flags
end

Instance Attribute Details

#cpusubtypeFixnum (readonly)

Returns the CPU subtype of the Mach-O.

Returns:

  • (Fixnum)

    the CPU subtype of the Mach-O



424
425
426
# File 'lib/macho/headers.rb', line 424

def cpusubtype
  @cpusubtype
end

#cputypeFixnum (readonly)

Returns the CPU type of the Mach-O.

Returns:

  • (Fixnum)

    the CPU type of the Mach-O



421
422
423
# File 'lib/macho/headers.rb', line 421

def cputype
  @cputype
end

#filetypeFixnum (readonly)

Returns the file type of the Mach-O.

Returns:

  • (Fixnum)

    the file type of the Mach-O



427
428
429
# File 'lib/macho/headers.rb', line 427

def filetype
  @filetype
end

#flagsFixnum (readonly)

Returns the header flags associated with the Mach-O.

Returns:

  • (Fixnum)

    the header flags associated with the Mach-O



436
437
438
# File 'lib/macho/headers.rb', line 436

def flags
  @flags
end

#magicFixnum (readonly)

Returns the magic number.

Returns:

  • (Fixnum)

    the magic number



418
419
420
# File 'lib/macho/headers.rb', line 418

def magic
  @magic
end

#ncmdsFixnum (readonly)

Returns the number of load commands in the Mach-O.

Returns:

  • (Fixnum)

    the number of load commands in the Mach-O



430
431
432
# File 'lib/macho/headers.rb', line 430

def ncmds
  @ncmds
end

#sizeofcmdsFixnum (readonly)

Returns the size of all load commands, in bytes, in the Mach-O.

Returns:

  • (Fixnum)

    the size of all load commands, in bytes, in the Mach-O



433
434
435
# File 'lib/macho/headers.rb', line 433

def sizeofcmds
  @sizeofcmds
end

Instance Method Details

#flag?(flag) ⇒ Boolean

Returns true if flag is present in the header's flag section.

Examples:

puts "this mach-o has position-independent execution" if header.flag?(:MH_PIE)

Parameters:

  • flag (Symbol)

    a mach header flag symbol

Returns:

  • (Boolean)

    true if flag is present in the header's flag section



459
460
461
462
463
# File 'lib/macho/headers.rb', line 459

def flag?(flag)
  flag = MH_FLAGS[flag]
  return false if flag.nil?
  flags & flag == flag
end