From 73a5572a081e22161714bd4bbec9adc62aeed2da Mon Sep 17 00:00:00 2001
From: Mike McQuaid <mike@mikemcquaid.com>
Date: Tue, 13 Oct 2020 11:37:47 +0100
Subject: [PATCH] brew vendor-gems: commit updates.

---
 .../Homebrew/vendor/bundle/bundler/setup.rb   | 10 +--
 .../lib/macho.rb                              | 25 +++++-
 .../lib/macho/exceptions.rb                   | 16 ++--
 .../lib/macho/fat_file.rb                     | 10 ++-
 .../lib/macho/headers.rb                      | 12 +--
 .../lib/macho/load_commands.rb                | 87 ++++++++++---------
 .../lib/macho/macho_file.rb                   |  6 +-
 .../lib/macho/sections.rb                     |  6 +-
 .../lib/macho/structure.rb                    |  4 +-
 .../lib/macho/tools.rb                        | 14 +++
 .../lib/macho/utils.rb                        |  6 +-
 .../lib/macho/view.rb                         |  2 +
 12 files changed, 128 insertions(+), 70 deletions(-)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho.rb (58%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/exceptions.rb (92%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/fat_file.rb (98%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/headers.rb (99%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/load_commands.rb (97%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/macho_file.rb (99%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/sections.rb (98%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/structure.rb (95%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/tools.rb (94%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/utils.rb (98%)
 rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{ruby-macho-2.2.0 => ruby-macho-2.3.0}/lib/macho/view.rb (96%)

diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb
index 89d30e2fef..e22d19b124 100644
--- a/Library/Homebrew/vendor/bundle/bundler/setup.rb
+++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb
@@ -20,7 +20,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/json-2.3.1/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/docile-1.3.2/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-html-0.12.3/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-0.19.0/lib"
-$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/codecov-0.2.11/lib"
+$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/codecov-0.2.12/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/coderay-1.1.3/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/colorize-0.8.1/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/highline-2.0.3/lib"
@@ -51,7 +51,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parallel-1.19.2/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parallel_tests-3.3.0/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parser-2.7.2.0/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rainbow-3.0.0/lib"
-$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-runtime-0.5.5942/lib"
+$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-runtime-0.5.5943/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parlour-4.0.1/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/patchelf-1.3.0/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/plist-3.5.0/lib"
@@ -76,9 +76,9 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-0.92.0/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-performance-1.8.1/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-1.43.2/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-sorbet-0.5.1/lib"
-$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-macho-2.2.0/lib"
-$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-static-0.5.5942-universal-darwin-19/lib"
-$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-0.5.5942/lib"
+$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-macho-2.3.0/lib"
+$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-static-0.5.5943-universal-darwin-19/lib"
+$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-0.5.5943/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-runtime-stub-0.2.0/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/thor-1.0.1/lib"
 $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/spoom-1.0.4/lib"
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho.rb
similarity index 58%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho.rb
index bb0336a499..506b6f263d 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho.rb
@@ -1,3 +1,6 @@
+# frozen_string_literal: true
+
+require "English"
 require_relative "macho/structure"
 require_relative "macho/view"
 require_relative "macho/headers"
@@ -12,7 +15,7 @@ require_relative "macho/tools"
 # The primary namespace for ruby-macho.
 module MachO
   # release version
-  VERSION = "2.2.0".freeze
+  VERSION = "2.3.0"
 
   # Opens the given filename as a MachOFile or FatFile, depending on its magic.
   # @param filename [String] the file being opened
@@ -25,7 +28,7 @@ module MachO
     raise ArgumentError, "#{filename}: no such file" unless File.file?(filename)
     raise TruncatedFileError unless File.stat(filename).size >= 4
 
-    magic = File.open(filename, "rb") { |f| f.read(4) }.unpack("N").first
+    magic = File.open(filename, "rb") { |f| f.read(4) }.unpack1("N")
 
     if Utils.fat_magic?(magic)
       file = FatFile.new(filename)
@@ -37,4 +40,22 @@ module MachO
 
     file
   end
+
+  # Signs the dylib using an ad-hoc identity.
+  # Necessary after making any changes to a dylib, since otherwise
+  # changing a signed file invalidates its signature.
+  # @param filename [String] the file being opened
+  # @return [void]
+  # @raise [ModificationError] if the operation fails
+  def self.codesign!(filename)
+    # codesign binary is not available on Linux
+    return if RUBY_PLATFORM !~ /darwin/
+    raise ArgumentError, "#{filename}: no such file" unless File.file?(filename)
+
+    system("codesign", "--sign", "-", "--force",
+           "--preserve-metadata=entitlements,requirements,flags,runtime",
+           filename)
+
+    raise ModificationError, "#{filename}: signing failed!" unless $CHILD_STATUS.success?
+  end
 end
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/exceptions.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/exceptions.rb
similarity index 92%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/exceptions.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/exceptions.rb
index a07781cbbf..4587c3086e 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/exceptions.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/exceptions.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # A generic Mach-O error in execution.
   class MachOError < RuntimeError
@@ -41,8 +43,8 @@ module MachO
   # Raised when a file's magic bytes are not valid Mach-O magic.
   class MagicError < NotAMachOError
     # @param num [Integer] the unknown number
-    def initialize(num)
-      super "Unrecognized Mach-O magic: 0x#{"%02x" % num}"
+    def initialize(magic)
+      super "Unrecognized Mach-O magic: 0x%02<magic>x" % { :magic => magic }
     end
   end
 
@@ -71,7 +73,7 @@ module MachO
   class CPUTypeError < MachOError
     # @param cputype [Integer] the unknown CPU type
     def initialize(cputype)
-      super "Unrecognized CPU type: 0x#{"%08x" % cputype}"
+      super "Unrecognized CPU type: 0x%08<cputype>x" % { :cputype => cputype }
     end
   end
 
@@ -80,8 +82,8 @@ module MachO
     # @param cputype [Integer] the CPU type of the unknown pair
     # @param cpusubtype [Integer] the CPU sub-type of the unknown pair
     def initialize(cputype, cpusubtype)
-      super "Unrecognized CPU sub-type: 0x#{"%08x" % cpusubtype}" \
-        " (for CPU type: 0x#{"%08x" % cputype})"
+      super "Unrecognized CPU sub-type: 0x%08<cpusubtype>x" \
+        " (for CPU type: 0x%08<cputype>x" % { :cputype => cputype, :cpusubtype => cpusubtype }
     end
   end
 
@@ -89,7 +91,7 @@ module MachO
   class FiletypeError < MachOError
     # @param num [Integer] the unknown number
     def initialize(num)
-      super "Unrecognized Mach-O filetype code: 0x#{"%02x" % num}"
+      super "Unrecognized Mach-O filetype code: 0x%02<num>x" % { :num => num }
     end
   end
 
@@ -97,7 +99,7 @@ module MachO
   class LoadCommandError < MachOError
     # @param num [Integer] the unknown number
     def initialize(num)
-      super "Unrecognized Mach-O load command: 0x#{"%02x" % num}"
+      super "Unrecognized Mach-O load command: 0x%02<num>x" % { :num => num }
     end
   end
 
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/fat_file.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/fat_file.rb
similarity index 98%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/fat_file.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/fat_file.rb
index 809f647ca1..93ac2a000c 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/fat_file.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/fat_file.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 require "forwardable"
 
 module MachO
@@ -398,13 +400,13 @@ module MachO
       machos.each_with_index do |macho, index|
         begin
           yield macho
-        rescue RecoverableModificationError => error
-          error.macho_slice = index
+        rescue RecoverableModificationError => e
+          e.macho_slice = index
 
           # Strict mode: Immediately re-raise. Otherwise: Retain, check later.
-          raise error if strict
+          raise e if strict
 
-          errors << error
+          errors << e
         end
       end
 
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/headers.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/headers.rb
similarity index 99%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/headers.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/headers.rb
index 0a940e405c..525809e6bb 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/headers.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/headers.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # Classes and constants for parsing the headers of Mach-O binaries.
   module Headers
@@ -490,7 +492,7 @@ module MachO
       # always big-endian
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "N2".freeze
+      FORMAT = "N2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -541,7 +543,7 @@ module MachO
       # @note Always big endian.
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L>5".freeze
+      FORMAT = "L>5"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -587,7 +589,7 @@ module MachO
       # @note Always big endian.
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L>2Q>2L>2".freeze
+      FORMAT = "L>2Q>2L>2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -637,7 +639,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=7".freeze
+      FORMAT = "L=7"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -760,7 +762,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=8".freeze
+      FORMAT = "L=8"
 
       # @see MachOStructure::SIZEOF
       # @api private
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/load_commands.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/load_commands.rb
similarity index 97%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/load_commands.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/load_commands.rb
index 394a0c6717..0220743cfc 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/load_commands.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/load_commands.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # Classes and constants for parsing load commands in Mach-O binaries.
   module LoadCommands
@@ -60,6 +62,8 @@ module MachO
       0x30 => :LC_VERSION_MIN_WATCHOS,
       0x31 => :LC_NOTE,
       0x32 => :LC_BUILD_VERSION,
+      (0x33 | LC_REQ_DYLD) => :LC_DYLD_EXPORTS_TRIE,
+      (0x34 | LC_REQ_DYLD) => :LD_DYLD_CHAINED_FIXUPS,
     }.freeze
 
     # association of symbol representations to load command constants
@@ -145,6 +149,8 @@ module MachO
       :LC_VERSION_MIN_WATCHOS => "VersionMinCommand",
       :LC_NOTE => "NoteCommand",
       :LC_BUILD_VERSION => "BuildVersionCommand",
+      :LC_DYLD_EXPORTS_TRIE => "LinkeditDataCommand",
+      :LD_DYLD_CHAINED_FIXUPS => "LinkeditDataCommand",
     }.freeze
 
     # association of segment name symbols to names
@@ -186,7 +192,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2".freeze
+      FORMAT = "L=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -365,7 +371,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2a16".freeze
+      FORMAT = "L=2a16"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -379,7 +385,7 @@ module MachO
 
       # @return [String] a string representation of the UUID
       def uuid_string
-        hexes = uuid.map { |e| "%02x" % e }
+        hexes = uuid.map { |elem| "%02<elem>x" % { :elem => elem } }
         segs = [
           hexes[0..3].join, hexes[4..5].join, hexes[6..7].join,
           hexes[8..9].join, hexes[10..15].join
@@ -429,7 +435,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2Z16L=4l=2L=2".freeze
+      FORMAT = "L=2Z16L=4l=2L=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -524,7 +530,7 @@ module MachO
     class SegmentCommand64 < SegmentCommand
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2Z16Q=4l=2L=2".freeze
+      FORMAT = "L=2Z16Q=4l=2L=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -550,7 +556,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=6".freeze
+      FORMAT = "L=6"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -601,7 +607,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -649,7 +655,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=5".freeze
+      FORMAT = "L=5"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -679,7 +685,7 @@ module MachO
     class ThreadCommand < LoadCommand
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2".freeze
+      FORMAT = "L=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -717,7 +723,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=10".freeze
+      FORMAT = "L=10"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -758,7 +764,7 @@ module MachO
     class RoutinesCommand64 < RoutinesCommand
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2Q=8".freeze
+      FORMAT = "L=2Q=8"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -773,7 +779,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -801,7 +807,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -829,7 +835,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -857,7 +863,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -894,7 +900,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=6".freeze
+      FORMAT = "L=6"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -979,7 +985,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=20".freeze
+      FORMAT = "L=20"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1052,7 +1058,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=4".freeze
+      FORMAT = "L=4"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1127,7 +1133,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1156,7 +1162,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1191,7 +1197,8 @@ module MachO
     # A load command representing the offsets and sizes of a blob of data in
     # the __LINKEDIT segment. Corresponds to LC_CODE_SIGNATURE,
     # LC_SEGMENT_SPLIT_INFO, LC_FUNCTION_STARTS, LC_DATA_IN_CODE,
-    # LC_DYLIB_CODE_SIGN_DRS, and LC_LINKER_OPTIMIZATION_HINT.
+    # LC_DYLIB_CODE_SIGN_DRS, LC_LINKER_OPTIMIZATION_HINT, LC_DYLD_EXPORTS_TRIE,
+    # or LC_DYLD_CHAINED_FIXUPS.
     class LinkeditDataCommand < LoadCommand
       # @return [Integer] offset to the data in the __LINKEDIT segment
       attr_reader :dataoff
@@ -1201,7 +1208,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=4".freeze
+      FORMAT = "L=4"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1237,7 +1244,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=5".freeze
+      FORMAT = "L=5"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1269,7 +1276,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=6".freeze
+      FORMAT = "L=6"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1301,7 +1308,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=4".freeze
+      FORMAT = "L=4"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1317,7 +1324,7 @@ module MachO
       # A string representation of the binary's minimum OS version.
       # @return [String] a string representing the minimum OS version.
       def version_string
-        binary = "%032b" % version
+        binary = "%032<version>b" % { :version => version }
         segs = [
           binary[0..15], binary[16..23], binary[24..31]
         ].map { |s| s.to_i(2) }
@@ -1328,7 +1335,7 @@ module MachO
       # A string representation of the binary's SDK version.
       # @return [String] a string representing the SDK version.
       def sdk_string
-        binary = "%032b" % sdk
+        binary = "%032<sdk>b" % { :sdk => sdk }
         segs = [
           binary[0..15], binary[16..23], binary[24..31]
         ].map { |s| s.to_i(2) }
@@ -1365,7 +1372,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=6".freeze
+      FORMAT = "L=6"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1383,7 +1390,7 @@ module MachO
       # A string representation of the binary's minimum OS version.
       # @return [String] a string representing the minimum OS version.
       def minos_string
-        binary = "%032b" % minos
+        binary = "%032<minos>b" % { :minos => minos }
         segs = [
           binary[0..15], binary[16..23], binary[24..31]
         ].map { |s| s.to_i(2) }
@@ -1394,7 +1401,7 @@ module MachO
       # A string representation of the binary's SDK version.
       # @return [String] a string representing the SDK version.
       def sdk_string
-        binary = "%032b" % sdk
+        binary = "%032<sdk>b" % { :sdk => sdk }
         segs = [
           binary[0..15], binary[16..23], binary[24..31]
         ].map { |s| s.to_i(2) }
@@ -1494,7 +1501,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=12".freeze
+      FORMAT = "L=12"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1542,7 +1549,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=3".freeze
+      FORMAT = "L=3"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1572,7 +1579,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2Q=2".freeze
+      FORMAT = "L=2Q=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1602,7 +1609,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2Q=1".freeze
+      FORMAT = "L=2Q=1"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1617,7 +1624,7 @@ module MachO
       # A string representation of the sources used to build the binary.
       # @return [String] a string representation of the version
       def version_string
-        binary = "%064b" % version
+        binary = "%064<version>b" % { :version => version }
         segs = [
           binary[0..23], binary[24..33], binary[34..43], binary[44..53],
           binary[54..63]
@@ -1646,7 +1653,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=4".freeze
+      FORMAT = "L=4"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1674,7 +1681,7 @@ module MachO
     class IdentCommand < LoadCommand
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2".freeze
+      FORMAT = "L=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1692,7 +1699,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=4".freeze
+      FORMAT = "L=4"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1727,7 +1734,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=5".freeze
+      FORMAT = "L=5"
 
       # @see MachOStructure::SIZEOF
       # @api private
@@ -1764,7 +1771,7 @@ module MachO
 
       # @see MachOStructure::FORMAT
       # @api private
-      FORMAT = "L=2Z16Q=2".freeze
+      FORMAT = "L=2Z16Q=2"
 
       # @see MachOStructure::SIZEOF
       # @api private
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/macho_file.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/macho_file.rb
similarity index 99%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/macho_file.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/macho_file.rb
index dc5bb3b914..041111ad3b 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/macho_file.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/macho_file.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 require "forwardable"
 
 module MachO
@@ -476,7 +478,7 @@ module MachO
     # @raise [FatBinaryError] if the magic is for a Fat file
     # @api private
     def populate_and_check_magic
-      magic = @raw_data[0..3].unpack("N").first
+      magic = @raw_data[0..3].unpack1("N")
 
       raise MagicError, magic unless Utils.magic?(magic)
       raise FatBinaryError if Utils.fat_magic?(magic)
@@ -522,7 +524,7 @@ module MachO
 
       header.ncmds.times do
         fmt = Utils.specialize_format("L=", endianness)
-        cmd = @raw_data.slice(offset, 4).unpack(fmt).first
+        cmd = @raw_data.slice(offset, 4).unpack1(fmt)
         cmd_sym = LoadCommands::LOAD_COMMANDS[cmd]
 
         raise LoadCommandError, cmd unless cmd_sym || permissive
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/sections.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/sections.rb
similarity index 98%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/sections.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/sections.rb
index 093fbb2f88..f2d0b3db95 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/sections.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/sections.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # Classes and constants for parsing sections in Mach-O binaries.
   module Sections
@@ -108,7 +110,7 @@ module MachO
       attr_reader :reserved2
 
       # @see MachOStructure::FORMAT
-      FORMAT = "Z16Z16L=9".freeze
+      FORMAT = "Z16Z16L=9"
 
       # @see MachOStructure::SIZEOF
       SIZEOF = 68
@@ -180,7 +182,7 @@ module MachO
       attr_reader :reserved3
 
       # @see MachOStructure::FORMAT
-      FORMAT = "Z16Z16Q=2L=8".freeze
+      FORMAT = "Z16Z16Q=2L=8"
 
       # @see MachOStructure::SIZEOF
       SIZEOF = 80
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/structure.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/structure.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/structure.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/structure.rb
index 7bece4d704..0356d605af 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/structure.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/structure.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # A general purpose pseudo-structure.
   # @abstract
@@ -5,7 +7,7 @@ module MachO
     # The String#unpack format of the data structure.
     # @return [String] the unpacking format
     # @api private
-    FORMAT = "".freeze
+    FORMAT = ""
 
     # The size of the data structure, in bytes.
     # @return [Integer] the size, in bytes
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/tools.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/tools.rb
similarity index 94%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/tools.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/tools.rb
index c9bcbd7407..00c80ef1ca 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/tools.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/tools.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # A collection of convenient methods for common operations on Mach-O and Fat
   # binaries.
@@ -23,6 +25,8 @@ module MachO
 
       file.change_dylib_id(new_id, options)
       file.write!
+
+      MachO.codesign!(filename)
     end
 
     # Changes a shared library install name in a Mach-O or Fat binary,
@@ -39,6 +43,8 @@ module MachO
 
       file.change_install_name(old_name, new_name, options)
       file.write!
+
+      MachO.codesign!(filename)
     end
 
     # Changes a runtime path in a Mach-O or Fat binary, overwriting the source
@@ -55,6 +61,8 @@ module MachO
 
       file.change_rpath(old_path, new_path, options)
       file.write!
+
+      MachO.codesign!(filename)
     end
 
     # Add a runtime path to a Mach-O or Fat binary, overwriting the source file.
@@ -69,6 +77,8 @@ module MachO
 
       file.add_rpath(new_path, options)
       file.write!
+
+      MachO.codesign!(filename)
     end
 
     # Delete a runtime path from a Mach-O or Fat binary, overwriting the source
@@ -84,6 +94,8 @@ module MachO
 
       file.delete_rpath(old_path, options)
       file.write!
+
+      MachO.codesign!(filename)
     end
 
     # Merge multiple Mach-Os into one universal (Fat) binary.
@@ -104,6 +116,8 @@ module MachO
 
       fat_macho = MachO::FatFile.new_from_machos(*machos, :fat64 => fat64)
       fat_macho.write(filename)
+
+      MachO.codesign!(filename)
     end
   end
 end
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/utils.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/utils.rb
similarity index 98%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/utils.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/utils.rb
index fb41806041..362e4dbf03 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/utils.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/utils.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # A collection of utility functions used throughout ruby-macho.
   module Utils
@@ -51,7 +53,7 @@ module MachO
     def self.pack_strings(fixed_offset, alignment, strings = {})
       offsets = {}
       next_offset = fixed_offset
-      payload = ""
+      payload = +""
 
       strings.each do |key, string|
         offsets[key] = next_offset
@@ -61,7 +63,7 @@ module MachO
       end
 
       payload << Utils.nullpad(padding_for(fixed_offset + payload.bytesize, alignment))
-      [payload, offsets]
+      [payload.freeze, offsets]
     end
 
     # Compares the given number to valid Mach-O magic numbers.
diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/view.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/view.rb
similarity index 96%
rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/view.rb
rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/view.rb
index 5bd40e7f0e..ad68ee30ed 100644
--- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.2.0/lib/macho/view.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-2.3.0/lib/macho/view.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module MachO
   # A representation of some unspecified Mach-O data.
   class MachOView
-- 
GitLab