class Elf::GNU::SymbolVersionDef
Constants
- FlagBase
- FlagWeak
Public Instance Methods
[](idx)
click to toggle source
# File lib/elf/gnu.rb, line 99 def [](idx) load unless @defined_versions @defined_versions[idx] end
count()
click to toggle source
# File lib/elf/gnu.rb, line 93 def count load unless @defined_versions @defined_versions.size end
each_version(&block)
click to toggle source
Allow to iterate over all the versions defined in the ELF file.
# File lib/elf/gnu.rb, line 107 def each_version(&block) load unless @defined_versions @defined_versions.each_value(&block) end
load_internal()
click to toggle source
# File lib/elf/gnu.rb, line 58 def load_internal link.load # do this now for safety @defined_versions = {} entry_off = @offset loop do @file.seek(entry_off) entry = {} version = @file.read_half raise SymbolVersionUnknown.new(version) if version != 1 entry[:flags] = @file.read_half ndx = @file.read_half aux_count = @file.read_half entry[:hash] = @file.read_word name_off = entry_off + @file.read_word next_entry_off = @file.read_word entry[:names] = [] for i in 1..aux_count @file.seek(name_off) entry[:names] << link[@file.read_word] next_name_off = @file.read_word break unless next_name_off != 0 name_off += next_name_off end @defined_versions[ndx] = entry break unless next_entry_off != 0 entry_off += next_entry_off end end