]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/ld, runtime: abort on shared library ABI mismatch
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Sat, 11 Apr 2015 04:05:21 +0000 (12:05 +0800)
committerIan Lance Taylor <iant@golang.org>
Tue, 12 May 2015 01:30:40 +0000 (01:30 +0000)
commit77fc03f4cd7f6ea0b142bd17ea172205d5f45cff
tree06f33fb755d5d5224028dfdcecbe59128f57c73e
parentbe0cb9224b68d5be4e03fd35396d2c2f0755adad
cmd/internal/ld, runtime: abort on shared library ABI mismatch

This:

1) Defines the ABI hash of a package (as the SHA1 of the __.PKGDEF)
2) Defines the ABI hash of a shared library (sort the packages by import
   path, concatenate the hashes of the packages and SHA1 that)
3) When building a shared library, compute the above value and define a
   global symbol that points to a go string that has the hash as its value.
4) When linking against a shared library, read the abi hash from the
   library and put both the value seen at link time and a reference
   to the global symbol into the moduledata.
5) During runtime initialization, check that the hash seen at link time
   still matches the hash the global symbol points to.

Change-Id: Iaa54c783790e6dde3057a2feadc35473d49614a5
Reviewed-on: https://go-review.googlesource.com/8773
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
misc/cgo/testshared/test.bash
src/cmd/internal/ld/data.go
src/cmd/internal/ld/ld.go
src/cmd/internal/ld/lib.go
src/cmd/internal/ld/link.go
src/cmd/internal/ld/symtab.go
src/runtime/symtab.go