module Pliney::MachO

Constants

FAT_MAGIC
LC_REQ_DYLD
MACHO_MAGIC32
MACHO_MAGIC64

Public Class Methods

is_fat_magic(magicval) click to toggle source
# File lib/pliney/macho.rb, line 17
def self.is_fat_magic(magicval)
    return (magicval == FAT_MAGIC)
end
is_macho32_magic(magicval) click to toggle source
# File lib/pliney/macho.rb, line 25
def self.is_macho32_magic(magicval)
    return (magicval == MACHO_MAGIC32)
end
is_macho64_magic(magicval) click to toggle source
# File lib/pliney/macho.rb, line 29
def self.is_macho64_magic(magicval)
    return (magicval == MACHO_MAGIC64)
end
is_macho_magic(magicval) click to toggle source
# File lib/pliney/macho.rb, line 21
def self.is_macho_magic(magicval)
    return (is_macho32_magic(magicval) or is_macho64_magic(magicval))
end
lcmap() click to toggle source
# File lib/pliney/macho.rb, line 33
def self.lcmap
    @LCMAP ||= Hash[
        LoadCommandConst.constants.map do |lc|
            [lc, LoadCommandConst.const_get(lc)] 
        end
    ]
end
read_stream(fh) click to toggle source
# File lib/pliney/macho.rb, line 69
def self.read_stream(fh)
    magic = fh.read_uint32
    fh.pos -= 4
    return reader_for_filemagic(magic).parse(fh)
end
reader_for_filemagic(magic) click to toggle source
# File lib/pliney/macho.rb, line 56
def self.reader_for_filemagic(magic)
    case magic
    when FAT_MAGIC
        return FatHeaderReader
    when MACHO_MAGIC32
        return MachHeaderReader
    when MACHO_MAGIC64
        return MachHeader64Reader
    else
        raise(ReaderError, "Unrecognized magic value: 0x%0.8x" % magic)
    end
end
reader_for_lc(lcnum) click to toggle source
# File lib/pliney/macho.rb, line 45
def self.reader_for_lc(lcnum)
    lcsym = lcmap.invert[lcnum]
    if lcsym
        klname = "#{lcsym}_Reader"
        if MachO.const_defined?(klname)
            return MachO.const_get(klname)
        end
    end
    return UndefinedLCReader
end
resolve_lc(lcnum) click to toggle source
# File lib/pliney/macho.rb, line 41
def self.resolve_lc(lcnum)
    lcmap.invert[lcnum]
end