class Metasm::ELF::Symbol

Attributes

bind[RW]
name[RW]
name_p[RW]
other[RW]
shndx[RW]
size[RW]
thunk[RW]
type[RW]
value[RW]

Public Instance Methods

decode(elf, strtab=nil) click to toggle source
Calls superclass method Metasm::SerialStruct#decode
# File metasm/exe_format/elf_decode.rb, line 37
def decode(elf, strtab=nil)
        super(elf)
        @name = elf.readstr(strtab, @name_p) if strtab
end
make_name_p(elf, strtab) click to toggle source

sets the value of @name_p, appends @name to strtab if needed

# File metasm/exe_format/elf_encode.rb, line 91
def make_name_p(elf, strtab)
        s = strtab.kind_of?(EncodedData) ? strtab.data : strtab
        return if name_p and s[@name_p, @name.length+1] == @name+0.chr
        return if @name_p = s.index(@name+0.chr)
        @name_p = strtab.length
        @name.force_encoding('BINARY') if name.respond_to?(:force_encoding)
        strtab << @name << 0
end
set_default_values(elf, strtab) click to toggle source
Calls superclass method Metasm::SerialStruct#set_default_values
# File metasm/exe_format/elf_encode.rb, line 85
def set_default_values(elf, strtab)
        make_name_p elf, strtab if strtab and name and @name != ''
        super(elf)
end
struct_specialized(elf) click to toggle source
# File metasm/exe_format/elf.rb, line 485
def struct_specialized(elf)
        return Symbol32 if not elf
        case elf.bitsize
        when 32; Symbol32
        else Symbol64
        end
end