class Elf::GNU::SymbolVersionNeed
Public Instance Methods
[](idx)
click to toggle source
# File lib/elf/gnu.rb, line 158 def [](idx) load unless @needed_versions @needed_versions[idx] end
count()
click to toggle source
# File lib/elf/gnu.rb, line 152 def count load unless @needed_versions @needed_versions.size end
each_version(&block)
click to toggle source
Allow to iterate over all the versions needed in the ELF file.
# File lib/elf/gnu.rb, line 166 def each_version(&block) load unless @needed_versions @needed_versions.each_value(&block) end
load_internal()
click to toggle source
# File lib/elf/gnu.rb, line 115 def load_internal link.load # do this now for safety @needed_versions = {} loop do version = @file.read_half raise SymbolVersionUnknown.new(version) if version != 1 aux_count = @file.read_half file = link[@file.read_word] # discard the next, it's used for non-sequential reading. @file.read_word # This one is interesting only when we need to stop the # read loop. more = @file.read_word != 0 for i in 1..aux_count entry = {} entry[:file] = file entry[:hash] = @file.read_word entry[:flags] = @file.read_half tmp = @file.read_half # damn Drepper and overloaded values entry[:private] = !(tmp & (1 << 15) == 0) index = tmp & ~(1 << 15) entry[:name] = link[@file.read_word] @needed_versions[index] = entry break unless @file.read_word != 0 end break unless more end end