mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/link: support more load commands on Mach-O
Change-Id: I74dd9170a51cc93ce3ec5e5860c2eb2912f081f5 Reviewed-on: https://go-review.googlesource.com/c/go/+/312729 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
1a5665533b
commit
b6ff3c69d5
2 changed files with 14 additions and 2 deletions
|
|
@ -88,6 +88,8 @@ const (
|
||||||
MACHO_SUBCPU_ARMV7 = 9
|
MACHO_SUBCPU_ARMV7 = 9
|
||||||
MACHO_CPU_ARM64 = 1<<24 | 12
|
MACHO_CPU_ARM64 = 1<<24 | 12
|
||||||
MACHO_SUBCPU_ARM64_ALL = 0
|
MACHO_SUBCPU_ARM64_ALL = 0
|
||||||
|
MACHO_SUBCPU_ARM64_V8 = 1
|
||||||
|
MACHO_SUBCPU_ARM64E = 2
|
||||||
MACHO32SYMSIZE = 12
|
MACHO32SYMSIZE = 12
|
||||||
MACHO64SYMSIZE = 16
|
MACHO64SYMSIZE = 16
|
||||||
MACHO_X86_64_RELOC_UNSIGNED = 0
|
MACHO_X86_64_RELOC_UNSIGNED = 0
|
||||||
|
|
@ -178,6 +180,8 @@ const (
|
||||||
LC_VERSION_MIN_WATCHOS = 0x30
|
LC_VERSION_MIN_WATCHOS = 0x30
|
||||||
LC_VERSION_NOTE = 0x31
|
LC_VERSION_NOTE = 0x31
|
||||||
LC_BUILD_VERSION = 0x32
|
LC_BUILD_VERSION = 0x32
|
||||||
|
LC_DYLD_EXPORTS_TRIE = 0x80000033
|
||||||
|
LC_DYLD_CHAINED_FIXUPS = 0x80000034
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
||||||
|
|
@ -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")
|
err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &macho.SymtabCmd{}, "Symoff", "Stroff")
|
||||||
case macho.LoadCmdDysymtab:
|
case macho.LoadCmdDysymtab:
|
||||||
err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &macho.DysymtabCmd{}, "Tocoffset", "Modtaboff", "Extrefsymoff", "Indirectsymoff", "Extreloff", "Locreloff")
|
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")
|
err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &linkEditDataCmd{}, "DataOff")
|
||||||
case LC_ENCRYPTION_INFO, LC_ENCRYPTION_INFO_64:
|
case LC_ENCRYPTION_INFO, LC_ENCRYPTION_INFO_64:
|
||||||
err = machoUpdateLoadCommand(reader, linkseg, linkoffset, &encryptionInfoCmd{}, "CryptOff")
|
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
|
// Nothing to update
|
||||||
default:
|
default:
|
||||||
err = fmt.Errorf("unknown load command 0x%x (%s)", int(cmd.Cmd), cmd.Cmd)
|
err = fmt.Errorf("unknown load command 0x%x (%s)", int(cmd.Cmd), cmd.Cmd)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue