• Michael Hudson-Doyle's avatar
    cmd/internal/ld, runtime: abort on shared library ABI mismatch · 77fc03f4
    Michael Hudson-Doyle authored
    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/8773Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
    77fc03f4
symtab.go 14.4 KB