]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/link: generate trampoline for inter-dependent packages
authorCherry Zhang <cherryyz@google.com>
Tue, 16 Feb 2021 15:20:58 +0000 (10:20 -0500)
committerCherry Zhang <cherryyz@google.com>
Tue, 16 Feb 2021 17:42:55 +0000 (17:42 +0000)
commit098504c73ff6ece19566a1ac811ceed73be7c81d
treedb353d9d24f7bf626d31d80ad4d5725f37d557a0
parent1004a7cb31ae31d2ca0b54b507b996c12403d54c
cmd/link: generate trampoline for inter-dependent packages

Currently, in the trampoline generation pass we expect packages
are laid out in dependency order, so a cross-package jump always
has a known target address so we can check if a trampoline is
needed. With linknames, there can be cycles in the package
dependency graph, making this algorithm no longer work. For them,
as the target address is unkown we conservatively generate a
trampoline. This may generate unnecessary trampolines (if the
packages turn out laid together), but package cycles are extremely
rare so this is fine.

Updates #44073.

Change-Id: I2dc2998edacbda27d726fc79452313a21d07787a
Reviewed-on: https://go-review.googlesource.com/c/go/+/292490
Trust: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/arm/asm.go
src/cmd/link/internal/ld/data.go
src/cmd/link/internal/ppc64/asm.go