]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.16] Reapply "cmd/link: support more load commands on Mach-O"
authorHeschi Kreinick <heschi@google.com>
Wed, 15 Dec 2021 18:44:36 +0000 (18:44 +0000)
committerHeschi Kreinick <heschi@google.com>
Wed, 15 Dec 2021 19:08:45 +0000 (19:08 +0000)
This reverts commit caced3b213e879b2af0508f5f6a2d3bb3d6ef2a9 (CL 370554).

Reason for revert: Minor release complete.

Updates #49923.

Change-Id: Ifb9fc4f6aae6313ce726726c4ec469032ed3147d
Reviewed-on: https://go-review.googlesource.com/c/go/+/372354
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Alex Rakoczy <alex@golang.org>
Trust: Heschi Kreinick <heschi@google.com>

src/cmd/link/internal/ld/macho.go
src/cmd/link/internal/ld/macho_combine_dwarf.go

index a9f4d8722921de9efc902c6245236cddcc6a74bb..ac2103c91ec02c77a2aeb5598de7575ad2f5d9fd 100644 (file)
@@ -86,6 +86,8 @@ const (
        MACHO_SUBCPU_ARMV7                   = 9
        MACHO_CPU_ARM64                      = 1<<24 | 12
        MACHO_SUBCPU_ARM64_ALL               = 0
+       MACHO_SUBCPU_ARM64_V8                = 1
+       MACHO_SUBCPU_ARM64E                  = 2
        MACHO32SYMSIZE                       = 12
        MACHO64SYMSIZE                       = 16
        MACHO_X86_64_RELOC_UNSIGNED          = 0
@@ -176,6 +178,8 @@ const (
        LC_VERSION_MIN_WATCHOS      = 0x30
        LC_VERSION_NOTE             = 0x31
        LC_BUILD_VERSION            = 0x32
+       LC_DYLD_EXPORTS_TRIE        = 0x80000033
+       LC_DYLD_CHAINED_FIXUPS      = 0x80000034
 )
 
 const (
index 77ee8a4d62bde49786dad003f99b4053f31e27c4..0015b7d756adb76817e2ec2a109d4006d20c8db2 100644 (file)
@@ -222,11 +222,19 @@ func machoCombineDwarf(ctxt *Link, exef *os.File, exem *macho.File, dsym, outexe
                        err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &macho.SymtabCmd{}, "Symoff", "Stroff")
                case macho.LoadCmdDysymtab:
                        err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &macho.DysymtabCmd{}, "Tocoffset", "Modtaboff", "Extrefsymoff", "Indirectsymoff", "Extreloff", "Locreloff")
-               case LC_CODE_SIGNATURE, LC_SEGMENT_SPLIT_INFO, LC_FUNCTION_STARTS, LC_DATA_IN_CODE, LC_DYLIB_CODE_SIGN_DRS:
+               case LC_CODE_SIGNATURE, LC_SEGMENT_SPLIT_INFO, LC_FUNCTION_STARTS, LC_DATA_IN_CODE, LC_DYLIB_CODE_SIGN_DRS,
+                       LC_DYLD_EXPORTS_TRIE, LC_DYLD_CHAINED_FIXUPS:
                        err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &linkEditDataCmd{}, "DataOff")
                case LC_ENCRYPTION_INFO, LC_ENCRYPTION_INFO_64:
                        err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &encryptionInfoCmd{}, "CryptOff")
-               case macho.LoadCmdDylib, macho.LoadCmdThread, macho.LoadCmdUnixThread, LC_PREBOUND_DYLIB, LC_UUID, LC_VERSION_MIN_MACOSX, LC_VERSION_MIN_IPHONEOS, LC_SOURCE_VERSION, LC_MAIN, LC_LOAD_DYLINKER, LC_LOAD_WEAK_DYLIB, LC_REEXPORT_DYLIB, LC_RPATH, LC_ID_DYLIB, LC_SYMSEG, LC_LOADFVMLIB, LC_IDFVMLIB, LC_IDENT, LC_FVMFILE, LC_PREPAGE, LC_ID_DYLINKER, LC_ROUTINES, LC_SUB_FRAMEWORK, LC_SUB_UMBRELLA, LC_SUB_CLIENT, LC_SUB_LIBRARY, LC_TWOLEVEL_HINTS, LC_PREBIND_CKSUM, LC_ROUTINES_64, LC_LAZY_LOAD_DYLIB, LC_LOAD_UPWARD_DYLIB, LC_DYLD_ENVIRONMENT, LC_LINKER_OPTION, LC_LINKER_OPTIMIZATION_HINT, LC_VERSION_MIN_TVOS, LC_VERSION_MIN_WATCHOS, LC_VERSION_NOTE, LC_BUILD_VERSION:
+               case macho.LoadCmdDylib, macho.LoadCmdThread, macho.LoadCmdUnixThread,
+                       LC_PREBOUND_DYLIB, LC_UUID, LC_VERSION_MIN_MACOSX, LC_VERSION_MIN_IPHONEOS, LC_SOURCE_VERSION,
+                       LC_MAIN, LC_LOAD_DYLINKER, LC_LOAD_WEAK_DYLIB, LC_REEXPORT_DYLIB, LC_RPATH, LC_ID_DYLIB,
+                       LC_SYMSEG, LC_LOADFVMLIB, LC_IDFVMLIB, LC_IDENT, LC_FVMFILE, LC_PREPAGE, LC_ID_DYLINKER,
+                       LC_ROUTINES, LC_SUB_FRAMEWORK, LC_SUB_UMBRELLA, LC_SUB_CLIENT, LC_SUB_LIBRARY, LC_TWOLEVEL_HINTS,
+                       LC_PREBIND_CKSUM, LC_ROUTINES_64, LC_LAZY_LOAD_DYLIB, LC_LOAD_UPWARD_DYLIB, LC_DYLD_ENVIRONMENT,
+                       LC_LINKER_OPTION, LC_LINKER_OPTIMIZATION_HINT, LC_VERSION_MIN_TVOS, LC_VERSION_MIN_WATCHOS,
+                       LC_VERSION_NOTE, LC_BUILD_VERSION:
                        // Nothing to update
                default:
                        err = fmt.Errorf("unknown load command 0x%x (%s)", int(cmd.Cmd), cmd.Cmd)