patchelf 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 275f2e51c3ce1332b2069f3d9bb058351c1b0953df6bb5aad9d34f1af3adb9a4
4
- data.tar.gz: a4f2c422bac7e669601a4c29e30046cdaa2076f9937d767152bd5f08920abdf4
3
+ metadata.gz: e6864f1200743dc0168be4dfba4f26745189fd922a8c8bee181de7a25be206a1
4
+ data.tar.gz: c5f80780027865b91dd5f4ab32fd4f24aa04c89e38d73c65190de7cbd529620f
5
5
  SHA512:
6
- metadata.gz: 97c66ab530c8f00f95c67dbeb07dfcc426c786c0d90b4a85cede69dc205283beb3d9d1c393b910b1ff88312bf80d040e6a2dccd5ed35300665015fcc3e3ce7e7
7
- data.tar.gz: 9d09373c7ef6d6aa3f7a3541afefd3486b9e9906091a98277141fa25decbd32f0eee3e214ebd97e7f8e56c89cd8646a7c4b3ccde3a48151b345c9ebc170c5173
6
+ metadata.gz: d68242284575b512eba346ceb18bf6d399a50ab3bf6da6a5dcea1a69fc7eccbc20d08d502e9f13e54756aa914a38e82539d05256336b3999350567981ca46455
7
+ data.tar.gz: 67757566f0d8861cd91efb6d5cab270a64f2e09920c94c099bf0bf9cb5ae57b87ff696f4fe8e1418575a6a4f39e0b0036a9aaedcdcd05a473303cd892263e8e3
@@ -177,7 +177,7 @@ module PatchELF
177
177
  end
178
178
 
179
179
  def modify_needed
180
- # due to gsoc time constraints only implmenting features used by brew.
180
+ # due to gsoc time constraints only implementing features used by brew.
181
181
  raise NotImplementedError
182
182
  end
183
183
 
@@ -257,7 +257,7 @@ module PatchELF
257
257
  new_rpath_strtab_idx = shdr_dynstr.sh_size.to_i
258
258
  new_dynstr[new_rpath_strtab_idx..(new_rpath_strtab_idx + new_rpath.size)] = "#{new_rpath}\x00"
259
259
 
260
- dyn_tags.each do |_, dyn|
260
+ dyn_tags.each_value do |dyn|
261
261
  dyn[:header].d_val = new_rpath_strtab_idx
262
262
  with_buf_at(dyn[:offset]) { |b| dyn[:header].write(b) }
263
263
  end
@@ -273,7 +273,7 @@ module PatchELF
273
273
  def modify_soname
274
274
  return unless ehdr.e_type == ELFTools::Constants::ET_DYN
275
275
 
276
- # due to gsoc time constraints only implmenting features used by brew.
276
+ # due to gsoc time constraints only implementing features used by brew.
277
277
  raise NotImplementedError
278
278
  end
279
279
 
@@ -306,7 +306,7 @@ module PatchELF
306
306
  # consider DT_NULL when copying
307
307
  replacement_size = (dt_null_idx + 1) * dyn_num_bytes
308
308
 
309
- # make space for dt_runpath tag at the top, shift data by one tag positon
309
+ # make space for dt_runpath tag at the top, shift data by one tag position
310
310
  new_dynamic_data[dyn_num_bytes..(replacement_size + dyn_num_bytes)] = new_dynamic_data[0..replacement_size]
311
311
 
312
312
  dyn_rpath = ELFTools::Structs::ELF_Dyn.new endian: endian, elf_class: elf_class
@@ -451,10 +451,10 @@ module PatchELF
451
451
 
452
452
  begin
453
453
  new_index = new_section_idx(old_shndx)
454
- next unless new_index
455
454
  rescue ArgumentError
456
455
  Logger.warn "entry #{entry} in symbol table refers to a non existing section, skipping"
457
456
  end
457
+ next unless new_index
458
458
 
459
459
  sym[pack[:st_shndx]] = new_index
460
460
 
@@ -561,11 +561,12 @@ module PatchELF
561
561
  if needed_space > start_offset
562
562
  needed_space += seg_num_bytes # new load segment is required
563
563
 
564
- needed_pages = Helper.alignup(needed_space - start_offset, page_size) / page_size
564
+ extra_bytes = needed_space - start_offset
565
+ needed_pages = Helper.alignup(extra_bytes, page_size) / page_size
565
566
  Logger.debug "needed pages is #{needed_pages}"
566
567
  raise PatchError, 'virtual address space underrun' if needed_pages * page_size > first_page
567
568
 
568
- shift_file(needed_pages, start_offset)
569
+ shift_file(needed_pages, start_offset, extra_bytes)
569
570
 
570
571
  first_page -= needed_pages * page_size
571
572
  start_offset += needed_pages * page_size
@@ -776,7 +777,7 @@ module PatchELF
776
777
  end
777
778
  # rubocop:enable Metrics/PerceivedComplexity
778
779
 
779
- def shift_file(extra_pages, start_offset)
780
+ def shift_file(extra_pages, start_offset, extra_bytes)
780
781
  raise PatchError, "start_offset(#{start_offset}) < ehdr.num_bytes" if start_offset < ehdr.num_bytes
781
782
 
782
783
  oldsz = @buffer.size
@@ -799,8 +800,8 @@ module PatchELF
799
800
  p_offset: split_phdr.p_offset - split_shift - shift,
800
801
  p_vaddr: split_phdr.p_vaddr - split_shift - shift,
801
802
  p_paddr: split_phdr.p_paddr - split_shift - shift,
802
- p_filesz: split_shift + shift,
803
- p_memsz: split_shift + shift,
803
+ p_filesz: split_shift + extra_bytes,
804
+ p_memsz: split_shift + extra_bytes,
804
805
  p_flags: ELFTools::Constants::PF_R | ELFTools::Constants::PF_W,
805
806
  p_align: page_size
806
807
  )
@@ -966,7 +967,7 @@ module PatchELF
966
967
  def overwrite_replaced_sections
967
968
  # the original source says this has to be done separately to
968
969
  # prevent clobbering the previously written section contents.
969
- @replaced_sections.each do |rsec_name, _|
970
+ @replaced_sections.each_key do |rsec_name|
970
971
  shdr = find_section(rsec_name)&.header
971
972
  next unless shdr
972
973
 
@@ -976,7 +977,7 @@ module PatchELF
976
977
  end
977
978
  end
978
979
 
979
- def write_section_aligment(shdr)
980
+ def write_section_alignment(shdr)
980
981
  return if shdr.sh_type == ELFTools::Constants::SHT_NOTE && shdr.sh_addralign <= @section_alignment
981
982
 
982
983
  shdr.sh_addralign = @section_alignment
@@ -1012,7 +1013,7 @@ module PatchELF
1012
1013
  shdr.sh_addr = start_addr + (cur_off - start_offset)
1013
1014
  shdr.sh_size = rsec_data.size
1014
1015
 
1015
- write_section_aligment(shdr)
1016
+ write_section_alignment(shdr)
1016
1017
 
1017
1018
  seg_type = {
1018
1019
  '.interp' => ELFTools::Constants::PT_INTERP,
data/lib/patchelf/cli.rb CHANGED
@@ -63,11 +63,11 @@ module PatchELF
63
63
 
64
64
  def patch_requests
65
65
  @options[:set].each do |sym, val|
66
- patcher.__send__("#{sym}=".to_sym, val)
66
+ patcher.__send__(:"#{sym}=", val)
67
67
  end
68
68
 
69
69
  @options[:needed].each do |type, val|
70
- patcher.__send__("#{type}_needed".to_sym, *val)
70
+ patcher.__send__(:"#{type}_needed", *val)
71
71
  end
72
72
  end
73
73
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module PatchELF
4
4
  # Current gem version.
5
- VERSION = '1.4.0'.freeze
5
+ VERSION = '1.5.1'.freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patchelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - david942j
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-04 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elftools
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.2'
26
+ version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -70,22 +70,16 @@ dependencies:
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.17'
76
- - - "<"
73
+ - - ">="
77
74
  - !ruby/object:Gem::Version
78
- version: '0.18'
75
+ version: '0.22'
79
76
  type: :development
80
77
  prerelease: false
81
78
  version_requirements: !ruby/object:Gem::Requirement
82
79
  requirements:
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: '0.17'
86
- - - "<"
80
+ - - ">="
87
81
  - !ruby/object:Gem::Version
88
- version: '0.18'
82
+ version: '0.22'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: tty-platform
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -149,14 +143,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
143
  requirements:
150
144
  - - ">="
151
145
  - !ruby/object:Gem::Version
152
- version: '2.6'
146
+ version: '3.1'
153
147
  required_rubygems_version: !ruby/object:Gem::Requirement
154
148
  requirements:
155
149
  - - ">="
156
150
  - !ruby/object:Gem::Version
157
151
  version: '0'
158
152
  requirements: []
159
- rubygems_version: 3.1.6
153
+ rubygems_version: 3.5.3
160
154
  signing_key:
161
155
  specification_version: 4
162
156
  summary: patchelf