mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
Modules appear in the moduledata linked list in the order they are loaded by the dynamic loader, with one exception: the firstmoduledata itself the module that contains the runtime. This is not always the first module (when using -buildmode=shared, it is typically libstd.so, the second module). The order matters for typelinksinit, so we swap the first module with whatever module contains the main function. Updates #18729 This fixes the test case extracted with -linkshared, and now go test -linkshared encoding/... passes. However the original issue about a plugin failure is not yet fixed. Change-Id: I9f399ecc3518e22e6b0a350358e90b0baa44ac96 Reviewed-on: https://go-review.googlesource.com/35644 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
33 lines
526 B
Go
33 lines
526 B
Go
package depBase
|
|
|
|
import (
|
|
"os"
|
|
"reflect"
|
|
)
|
|
|
|
var SlicePtr interface{} = &[]int{}
|
|
|
|
var V int = 1
|
|
|
|
var HasMask []string = []string{"hi"}
|
|
|
|
type HasProg struct {
|
|
array [1024]*byte
|
|
}
|
|
|
|
type Dep struct {
|
|
X int
|
|
}
|
|
|
|
func (d *Dep) Method() int {
|
|
// This code below causes various go.itab.* symbols to be generated in
|
|
// the shared library. Similar code in ../exe/exe.go results in
|
|
// exercising https://github.com/golang/go/issues/17594
|
|
reflect.TypeOf(os.Stdout).Elem()
|
|
return 10
|
|
}
|
|
|
|
func F() int {
|
|
defer func() {}()
|
|
return V
|
|
}
|