elftools 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 19ea6d2a816767e47ee17390784085a33e1fe331
4
- data.tar.gz: f4af2d0e5552c02ee43d4de74afecd077926532d
2
+ SHA256:
3
+ metadata.gz: d224322bce7543153f1df63cc56b4c41c57825527f484fd6ff8893c85e939496
4
+ data.tar.gz: 6ff32495c229e034faabcd026eb47cf05fcdc7d737430075cdb0feb24548ef6b
5
5
  SHA512:
6
- metadata.gz: a368bc9ee554c9ca775d8e2d51b121965d242f64d2b2a838d249a3914d0d91ece6a3469c36519fa9fdd5d1347f2ff291917adf43e39f488509f29faac5348eda
7
- data.tar.gz: 8d777854fc6d4f931452aa0e738202496dd9dd7ce01b22e25da1cf40e1e4839f944cdd95de99e5a88cea85fab2eb611859379b5dc78180a4d0ff42ea835c1f13
6
+ metadata.gz: 46d10fef9a58529af0a3838357f222f009a2b6e466a0a588933eccb182a8df4f785643d2f32909158e14bafb8dce026d3237afe2e5089ffe69a2f1a545a294e7
7
+ data.tar.gz: 6f4e7af4e07511edc99b0ef49cae2617edddb1a19097082674435a87dcbd471ebcff412525e8a862f1cec5206c1034911985863b7e66ba60cd47b650c099c559
@@ -6,49 +6,42 @@ module ELFTools
6
6
  # ELF magic header
7
7
  ELFMAG = "\x7FELF".freeze
8
8
 
9
- # Section header types, records in +sh_type+.
10
- module SHT
11
- SHT_NULL = 0 # null section
12
- SHT_PROGBITS = 1 # information defined by program itself
13
- SHT_SYMTAB = 2 # symbol table section
14
- SHT_STRTAB = 3 # string table section
15
- SHT_RELA = 4 # relocation with addends
16
- SHT_HASH = 5 # symbol hash table
17
- SHT_DYNAMIC = 6 # information of dynamic linking
18
- SHT_NOTE = 7 # note section
19
- SHT_NOBITS = 8 # section occupies no space
20
- SHT_REL = 9 # relocation
21
- SHT_SHLIB = 10 # reserved
22
- SHT_DYNSYM = 11 # symbols for dynamic
23
- # Values between {SHT_LOPROC} and {SHT_HIPROC} are reserved for processor-specific semantics.
24
- SHT_LOPROC = 0x70000000
25
- SHT_HIPROC = 0x7fffffff # see {SHT_LOPROC}
26
- # Values between {SHT_LOUSER} and {SHT_HIUSER} are reserved for application programs.
27
- SHT_LOUSER = 0x80000000
28
- SHT_HIUSER = 0xffffffff # see {SHT_LOUSER}
29
- end
30
- include SHT
9
+ # Values of `d_un.d_val' in the DT_FLAGS and DT_FLAGS_1 entry.
10
+ module DF
11
+ DF_ORIGIN = 0x00000001 # Object may use DF_ORIGIN
12
+ DF_SYMBOLIC = 0x00000002 # Symbol resolutions starts here
13
+ DF_TEXTREL = 0x00000004 # Object contains text relocations
14
+ DF_BIND_NOW = 0x00000008 # No lazy binding for this object
15
+ DF_STATIC_TLS = 0x00000010 # Module uses the static TLS model
31
16
 
32
- # Program header types, records in +p_type+.
33
- module PT
34
- PT_NULL = 0 # null segment
35
- PT_LOAD = 1 # segment to be load
36
- PT_DYNAMIC = 2 # dynamic tags
37
- PT_INTERP = 3 # interpreter, same as .interp section
38
- PT_NOTE = 4 # same as .note* section
39
- PT_SHLIB = 5 # reserved
40
- PT_PHDR = 6 # where program header starts
41
- PT_TLS = 7 # thread local storage segment
42
- PT_LOOS = 0x60000000 # OS-specific
43
- PT_HIOS = 0x6fffffff # OS-specific
44
- # Values between {PT_LOPROC} and {PT_HIPROC} are reserved for processor-specific semantics.
45
- PT_LOPROC = 0x70000000
46
- PT_HIPROC = 0x7fffffff # see {PT_LOPROC}
47
- PT_GNU_EH_FRAME = 0x6474e550 # for exception handler
48
- PT_GNU_STACK = 0x6474e551 # permission of stack
49
- PT_GNU_RELRO = 0x6474e552 # read only after relocation
17
+ DF_1_NOW = 0x00000001 # Set RTLD_NOW for this object.
18
+ DF_1_GLOBAL = 0x00000002 # Set RTLD_GLOBAL for this object.
19
+ DF_1_GROUP = 0x00000004 # Set RTLD_GROUP for this object.
20
+ DF_1_NODELETE = 0x00000008 # Set RTLD_NODELETE for this object.
21
+ DF_1_LOADFLTR = 0x00000010 # Trigger filtee loading at runtime.
22
+ DF_1_INITFIRST = 0x00000020 # Set RTLD_INITFIRST for this object
23
+ DF_1_NOOPEN = 0x00000040 # Set RTLD_NOOPEN for this object.
24
+ DF_1_ORIGIN = 0x00000080 # $ORIGIN must be handled.
25
+ DF_1_DIRECT = 0x00000100 # Direct binding enabled.
26
+ DF_1_TRANS = 0x00000200 # :nodoc:
27
+ DF_1_INTERPOSE = 0x00000400 # Object is used to interpose.
28
+ DF_1_NODEFLIB = 0x00000800 # Ignore default lib search path.
29
+ DF_1_NODUMP = 0x00001000 # Object can't be dldump'ed.
30
+ DF_1_CONFALT = 0x00002000 # Configuration alternative created.
31
+ DF_1_ENDFILTEE = 0x00004000 # Filtee terminates filters search.
32
+ DF_1_DISPRELDNE = 0x00008000 # Disp reloc applied at build time.
33
+ DF_1_DISPRELPND = 0x00010000 # Disp reloc applied at run-time.
34
+ DF_1_NODIRECT = 0x00020000 # Object has no-direct binding.
35
+ DF_1_IGNMULDEF = 0x00040000 # :nodoc:
36
+ DF_1_NOKSYMS = 0x00080000 # :nodoc:
37
+ DF_1_NOHDR = 0x00100000 # :nodoc:
38
+ DF_1_EDITED = 0x00200000 # Object is modified after built.
39
+ DF_1_NORELOC = 0x00400000 # :nodoc:
40
+ DF_1_SYMINTPOSE = 0x00800000 # Object has individual interposers.
41
+ DF_1_GLOBAUDIT = 0x01000000 # Global auditing required.
42
+ DF_1_SINGLETON = 0x02000000 # Singleton symbols are used.
50
43
  end
51
- include PT
44
+ include DF
52
45
 
53
46
  # Dynamic table types, records in +d_tag+.
54
47
  module DT
@@ -107,43 +100,6 @@ module ELFTools
107
100
  end
108
101
  include DT
109
102
 
110
- # Values of `d_un.d_val' in the DT_FLAGS and DT_FLAGS_1 entry.
111
- module DF
112
- DF_ORIGIN = 0x00000001 # Object may use DF_ORIGIN
113
- DF_SYMBOLIC = 0x00000002 # Symbol resolutions starts here
114
- DF_TEXTREL = 0x00000004 # Object contains text relocations
115
- DF_BIND_NOW = 0x00000008 # No lazy binding for this object
116
- DF_STATIC_TLS = 0x00000010 # Module uses the static TLS model
117
-
118
- DF_1_NOW = 0x00000001 # Set RTLD_NOW for this object.
119
- DF_1_GLOBAL = 0x00000002 # Set RTLD_GLOBAL for this object.
120
- DF_1_GROUP = 0x00000004 # Set RTLD_GROUP for this object.
121
- DF_1_NODELETE = 0x00000008 # Set RTLD_NODELETE for this object.
122
- DF_1_LOADFLTR = 0x00000010 # Trigger filtee loading at runtime.
123
- DF_1_INITFIRST = 0x00000020 # Set RTLD_INITFIRST for this object
124
- DF_1_NOOPEN = 0x00000040 # Set RTLD_NOOPEN for this object.
125
- DF_1_ORIGIN = 0x00000080 # $ORIGIN must be handled.
126
- DF_1_DIRECT = 0x00000100 # Direct binding enabled.
127
- DF_1_TRANS = 0x00000200 # :nodoc:
128
- DF_1_INTERPOSE = 0x00000400 # Object is used to interpose.
129
- DF_1_NODEFLIB = 0x00000800 # Ignore default lib search path.
130
- DF_1_NODUMP = 0x00001000 # Object can't be dldump'ed.
131
- DF_1_CONFALT = 0x00002000 # Configuration alternative created.
132
- DF_1_ENDFILTEE = 0x00004000 # Filtee terminates filters search.
133
- DF_1_DISPRELDNE = 0x00008000 # Disp reloc applied at build time.
134
- DF_1_DISPRELPND = 0x00010000 # Disp reloc applied at run-time.
135
- DF_1_NODIRECT = 0x00020000 # Object has no-direct binding.
136
- DF_1_IGNMULDEF = 0x00040000 # :nodoc:
137
- DF_1_NOKSYMS = 0x00080000 # :nodoc:
138
- DF_1_NOHDR = 0x00100000 # :nodoc:
139
- DF_1_EDITED = 0x00200000 # Object is modified after built.
140
- DF_1_NORELOC = 0x00400000 # :nodoc:
141
- DF_1_SYMINTPOSE = 0x00800000 # Object has individual interposers.
142
- DF_1_GLOBAUDIT = 0x01000000 # Global auditing required.
143
- DF_1_SINGLETON = 0x02000000 # Singleton symbols are used.
144
- end
145
- include DF
146
-
147
103
  # These constants define the various ELF target machines.
148
104
  module EM
149
105
  EM_NONE = 0 # none
@@ -253,5 +209,93 @@ module ELFTools
253
209
  end
254
210
  end
255
211
  include ET
212
+
213
+ # Program header types, records in +p_type+.
214
+ module PT
215
+ PT_NULL = 0 # null segment
216
+ PT_LOAD = 1 # segment to be load
217
+ PT_DYNAMIC = 2 # dynamic tags
218
+ PT_INTERP = 3 # interpreter, same as .interp section
219
+ PT_NOTE = 4 # same as .note* section
220
+ PT_SHLIB = 5 # reserved
221
+ PT_PHDR = 6 # where program header starts
222
+ PT_TLS = 7 # thread local storage segment
223
+ PT_LOOS = 0x60000000 # OS-specific
224
+ PT_HIOS = 0x6fffffff # OS-specific
225
+ # Values between {PT_LOPROC} and {PT_HIPROC} are reserved for processor-specific semantics.
226
+ PT_LOPROC = 0x70000000
227
+ PT_HIPROC = 0x7fffffff # see {PT_LOPROC}
228
+ PT_GNU_EH_FRAME = 0x6474e550 # for exception handler
229
+ PT_GNU_STACK = 0x6474e551 # permission of stack
230
+ PT_GNU_RELRO = 0x6474e552 # read only after relocation
231
+ end
232
+ include PT
233
+
234
+ # Section header types, records in +sh_type+.
235
+ module SHT
236
+ SHT_NULL = 0 # null section
237
+ SHT_PROGBITS = 1 # information defined by program itself
238
+ SHT_SYMTAB = 2 # symbol table section
239
+ SHT_STRTAB = 3 # string table section
240
+ SHT_RELA = 4 # relocation with addends
241
+ SHT_HASH = 5 # symbol hash table
242
+ SHT_DYNAMIC = 6 # information of dynamic linking
243
+ SHT_NOTE = 7 # note section
244
+ SHT_NOBITS = 8 # section occupies no space
245
+ SHT_REL = 9 # relocation
246
+ SHT_SHLIB = 10 # reserved
247
+ SHT_DYNSYM = 11 # symbols for dynamic
248
+ # Values between {SHT_LOPROC} and {SHT_HIPROC} are reserved for processor-specific semantics.
249
+ SHT_LOPROC = 0x70000000
250
+ SHT_HIPROC = 0x7fffffff # see {SHT_LOPROC}
251
+ # Values between {SHT_LOUSER} and {SHT_HIUSER} are reserved for application programs.
252
+ SHT_LOUSER = 0x80000000
253
+ SHT_HIUSER = 0xffffffff # see {SHT_LOUSER}
254
+ end
255
+ include SHT
256
+
257
+ # Symbol binding from Sym st_info field.
258
+ module STB
259
+ STB_LOCAL = 0 # Local symbol
260
+ STB_GLOBAL = 1 # Global symbol
261
+ STB_WEAK = 2 # Weak symbol
262
+ STB_NUM = 3 # Number of defined types.
263
+ STB_LOOS = 10 # Start of OS-specific
264
+ STB_GNU_UNIQUE = 10 # Unique symbol.
265
+ STB_HIOS = 12 # End of OS-specific
266
+ STB_LOPROC = 13 # Start of processor-specific
267
+ STB_HIPROC = 15 # End of processor-specific
268
+ end
269
+ include STB
270
+
271
+ # Symbol types from Sym st_info field.
272
+ module STT
273
+ STT_NOTYPE = 0 # Symbol type is unspecified
274
+ STT_OBJECT = 1 # Symbol is a data object
275
+ STT_FUNC = 2 # Symbol is a code object
276
+ STT_SECTION = 3 # Symbol associated with a section
277
+ STT_FILE = 4 # Symbol's name is file name
278
+ STT_COMMON = 5 # Symbol is a common data object
279
+ STT_TLS = 6 # Symbol is thread-local data object
280
+ STT_NUM = 7 # Number of defined types.
281
+
282
+ # GNU extension: symbol value points to a function which is called
283
+ # at runtime to determine the final value of the symbol.
284
+ STT_GNU_IFUNC = 10
285
+
286
+ STT_LOOS = 10 # Start of OS-specific
287
+ STT_HIOS = 12 # End of OS-specific
288
+ STT_LOPROC = 13 # Start of processor-specific
289
+ STT_HIPROC = 15 # End of processor-specific
290
+
291
+ # The section type that must be used for register symbols on
292
+ # Sparc. These symbols initialize a global register.
293
+ STT_SPARC_REGISTER = 13
294
+
295
+ # ARM: a THUMB function. This is not defined in ARM ELF Specification but
296
+ # used by the GNU tool-chain.
297
+ STT_ARM_TFUNC = 13
298
+ end
299
+ include STT
256
300
  end
257
301
  end
@@ -18,6 +18,7 @@ module ELFTools
18
18
  # Otherwise, return array of tags.
19
19
  def each_tags(&block)
20
20
  return enum_for(:each_tags) unless block_given?
21
+
21
22
  arr = []
22
23
  0.step do |i|
23
24
  tag = tag_at(i).tap(&block)
@@ -31,7 +32,7 @@ module ELFTools
31
32
  # @return [Array<ELFTools::Dynamic::Tag>]
32
33
  # Array of tags.
33
34
  def tags
34
- each_tags.to_a
35
+ @tags ||= each_tags.to_a
35
36
  end
36
37
 
37
38
  # Get a tag of specific type.
@@ -77,8 +78,10 @@ module ELFTools
77
78
  # @return [ELFTools::Dynamic::Tag] The desired tag.
78
79
  def tag_at(n)
79
80
  return if n < 0
81
+
80
82
  @tag_at_map ||= {}
81
83
  return @tag_at_map[n] if @tag_at_map[n]
84
+
82
85
  dyn = Structs::ELF_Dyn.new(endian: endian)
83
86
  dyn.elf_class = header.elf_class
84
87
  stream.pos = tag_start + n * dyn.num_bytes
@@ -153,6 +156,7 @@ module ELFTools
153
156
  # @return [String, nil] The name.
154
157
  def name
155
158
  return nil unless name?
159
+
156
160
  Util.cstring(stream, @str_offset.call + header.d_val.to_i)
157
161
  end
158
162
  end
@@ -32,6 +32,7 @@ module ELFTools
32
32
  # @return [ELFTools::Structs::ELF_Ehdr] The header.
33
33
  def header
34
34
  return @header if defined?(@header)
35
+
35
36
  stream.pos = 0
36
37
  @header = Structs::ELF_Ehdr.new(endian: endian, offset: stream.pos)
37
38
  @header.elf_class = elf_class
@@ -49,8 +50,10 @@ module ELFTools
49
50
  def build_id
50
51
  section = section_by_name('.note.gnu.build-id')
51
52
  return nil if section.nil?
53
+
52
54
  note = section.notes.first
53
55
  return nil if note.nil?
56
+
54
57
  note.desc.unpack('H*').first
55
58
  end
56
59
 
@@ -116,6 +119,7 @@ module ELFTools
116
119
  # otherwise, the whole sections will be returned.
117
120
  def each_sections(&block)
118
121
  return enum_for(:each_sections) unless block_given?
122
+
119
123
  Array.new(num_sections) do |i|
120
124
  section_at(i).tap(&block)
121
125
  end
@@ -188,6 +192,7 @@ module ELFTools
188
192
  # Whole segments will be returned.
189
193
  def each_segments(&block)
190
194
  return enum_for(:each_segments) unless block_given?
195
+
191
196
  Array.new(num_segments) do |i|
192
197
  segment_at(i).tap(&block)
193
198
  end
@@ -324,6 +329,7 @@ module ELFTools
324
329
  explore = lambda do |obj|
325
330
  return obj if obj.is_a?(::ELFTools::Structs::ELFStruct)
326
331
  return obj.map(&explore) if obj.is_a?(Array)
332
+
327
333
  obj.instance_variables.map do |s|
328
334
  explore.call(obj.instance_variable_get(s))
329
335
  end
@@ -335,12 +341,14 @@ module ELFTools
335
341
  stream.pos = 0
336
342
  magic = stream.read(4)
337
343
  raise ELFError, "Invalid magic number #{magic.inspect}" unless magic == Constants::ELFMAG
344
+
338
345
  ei_class = stream.read(1).ord
339
346
  @elf_class = {
340
347
  1 => 32,
341
348
  2 => 64
342
349
  }[ei_class]
343
350
  raise ELFError, format('Invalid EI_CLASS "\x%02x"', ei_class) if elf_class.nil?
351
+
344
352
  ei_data = stream.read(1).ord
345
353
  @endian = {
346
354
  1 => :little,
@@ -38,6 +38,7 @@ module ELFTools
38
38
  def [](i)
39
39
  # XXX: support negative index?
40
40
  return nil if i < 0 || i >= @internal.size
41
+
41
42
  @internal[i] ||= @block.call(i)
42
43
  end
43
44
  end
data/lib/elftools/note.rb CHANGED
@@ -41,6 +41,7 @@ module ELFTools
41
41
  # Otherwise, return the array of notes.
42
42
  def each_notes
43
43
  return enum_for(:each_notes) unless block_given?
44
+
44
45
  @notes_offset_map ||= {}
45
46
  cur = note_start
46
47
  notes = []
@@ -101,6 +102,7 @@ module ELFTools
101
102
  # @return [String] The name.
102
103
  def name
103
104
  return @name if @name
105
+
104
106
  stream.pos = @offset + SIZE_OF_NHDR
105
107
  @name = stream.read(header.n_namesz)[0..-2]
106
108
  end
@@ -108,7 +110,8 @@ module ELFTools
108
110
  # Description of this note.
109
111
  # @return [String] The description.
110
112
  def desc
111
- return @desc if @desc
113
+ return @desc if instance_variable_defined?(:@desc)
114
+
112
115
  stream.pos = @offset + SIZE_OF_NHDR + Util.align(header.n_namesz, 2)
113
116
  @desc = stream.read(header.n_descsz)
114
117
  end
@@ -42,6 +42,7 @@ module ELFTools
42
42
  # Otherwise, the whole relocations will be returned.
43
43
  def each_relocations(&block)
44
44
  return enum_for(:each_relocations) unless block_given?
45
+
45
46
  Array.new(num_relocations) do |i|
46
47
  relocation_at(i).tap(&block)
47
48
  end
@@ -56,6 +56,7 @@ module ELFTools
56
56
  # Otherwise return array of symbols.
57
57
  def each_symbols(&block)
58
58
  return enum_for(:each_symbols) unless block_given?
59
+
59
60
  Array.new(num_symbols) do |i|
60
61
  symbol_at(i).tap(&block)
61
62
  end
@@ -54,6 +54,7 @@ module ELFTools
54
54
  # @return [String]
55
55
  def pack(val, bytes)
56
56
  raise ArgumentError, "Not supported assign type #{val.class}" unless val.is_a?(Integer)
57
+
57
58
  number = val & ((1 << (8 * bytes)) - 1)
58
59
  out = []
59
60
  bytes.times do
data/lib/elftools/util.rb CHANGED
@@ -17,6 +17,7 @@ module ELFTools
17
17
  def align(num, bit)
18
18
  n = 2**bit
19
19
  return num if (num % n).zero?
20
+
20
21
  (num + n) & ~(n - 1)
21
22
  end
22
23
 
@@ -36,6 +37,7 @@ module ELFTools
36
37
  # if val is an integer, check if exists in mod
37
38
  if val.is_a?(Integer)
38
39
  return val if mod.constants.any? { |c| mod.const_get(c) == val }
40
+
39
41
  raise ArgumentError, "No constants in #{module_name} is #{val}"
40
42
  end
41
43
  val = val.to_s.upcase
@@ -43,6 +45,7 @@ module ELFTools
43
45
  val = prefix + '_' + val unless val.start_with?(prefix)
44
46
  val = val.to_sym
45
47
  raise ArgumentError, "No constants in #{module_name} named \"#{val}\"" unless mod.const_defined?(val)
48
+
46
49
  mod.const_get(val)
47
50
  end
48
51
 
@@ -61,6 +64,7 @@ module ELFTools
61
64
  c = stream.read(1)
62
65
  return nil if c.nil? # reach EOF
63
66
  break if c == "\x00"
67
+
64
68
  ret += c
65
69
  end
66
70
  ret
@@ -1,4 +1,4 @@
1
1
  module ELFTools
2
2
  # Current gem version
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.0.2'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elftools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - david942j
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-03 00:00:00.000000000 Z
11
+ date: 2018-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2'
27
- - !ruby/object:Gem::Dependency
28
- name: codeclimate-test-reporter
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.6'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.6'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: pry
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,42 +58,42 @@ dependencies:
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '3.5'
61
+ version: '3.7'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '3.5'
68
+ version: '3.7'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rubocop
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '0.47'
75
+ version: '0.59'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '0.47'
82
+ version: '0.59'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: simplecov
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: 0.13.0
89
+ version: 0.16.1
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: 0.13.0
96
+ version: 0.16.1
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: yard
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -175,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
161
  version: '0'
176
162
  requirements: []
177
163
  rubyforge_project:
178
- rubygems_version: 2.5.2
164
+ rubygems_version: 2.7.6
179
165
  signing_key:
180
166
  specification_version: 4
181
167
  summary: ELFTools - Pure ruby library for parsing and patching ELF files