Class: Dwarftree::DebugRangesParser
- Inherits:
-
Object
- Object
- Dwarftree::DebugRangesParser
- Defined in:
- lib/dwarftree/debug_ranges_parser.rb
Constant Summary collapse
- CommandError =
Class.new(StandardError)
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.parse(object) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/dwarftree/debug_ranges_parser.rb', line 5 def self.parse(object) cmd = ['objdump', '--dwarf=Ranges', object] debug_ranges = IO.popen(cmd, &:read) unless $?.success? raise CommandError.new("Failed to run: #{cmd.join(' ')}") end new.parse(debug_ranges) end |
Instance Method Details
#parse(debug_ranges) ⇒ Hash{ Integer => Array<Range<Integer>> }
16 17 18 19 20 21 22 23 |
# File 'lib/dwarftree/debug_ranges_parser.rb', line 16 def parse(debug_ranges) offset_ranges = Hash.new { |h, k| h[k] = [] } debug_ranges.scan(/^ \h{8} \h{16} \h{16} $/) do |line| offset, range_beg, range_end = line.strip.split(' ') offset_ranges[offset.to_i(16)] << (range_beg.to_i(16)..range_end.to_i(16)) end offset_ranges end |