gcc/libgo/go
Nikhil Benesch 0cdde1e7ae libgo: handle linking to NetBSD's versioned symbols
On NetBSD, for backwards compatibility, various libc symbols are
renamed to a symbol with a version suffix. For example, this is the
(abbreviated) definition of sigaction:

    int sigaction(...) __asm__ ("__sigaction14")

This poses a challenge for libgo, which attempts to link sigaction by
way of an "//extern" comment:

    //extern sigaction
    func sigaction(...)

This results in a reference to the deprecated compatibility symbol
"sigaction", rather than the desired "__sigaction14" symbol.

This patch introduces a new "//extern-sysinfo" comment to handle this
situation. The new mklinknames.awk script scans a package for these
comments and outputs a "//go:linkname" directive that links the wrapper
to the correct versioned symbol, as determined by parsing the __asm__
annotation on the function's declaration in gen-sysinfo.go.

For now, only the following packages are scanned by mklinknames.awk:

    os
    os/user
    runtime
    syscall

gotools/:
	* Makefile.am (check-runtime): Add runtime_linknames.go to
	--extrafiles.
	* Makefile.in: Regenerate.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265125
2020-10-28 18:20:50 -07:00
..
archive libgo: update to Go1.14beta1 2020-01-21 23:53:22 -08:00
bufio libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
builtin libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
bytes libgo: update to Go 1.15.3 release 2020-10-27 13:58:02 -07:00
cmd libgo: update to Go 1.15.3 release 2020-10-27 13:58:02 -07:00
compress libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
container libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
context libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
crypto libgo: update to Go1.15rc2 release 2020-08-07 17:22:33 -07:00
database/sql libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
debug libgo: add 32-bit RISC-V (RV32) support 2020-09-30 19:47:48 -07:00
encoding libgo: update to Go1.15rc2 release 2020-08-07 17:22:33 -07:00
errors libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
expvar libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
flag libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
fmt libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
go compiler, go/internal/gccgoimporter: export notinheap annotation 2020-10-27 11:03:11 -07:00
golang.org/x libgo: add 32-bit RISC-V (RV32) support 2020-09-30 19:47:48 -07:00
hash libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
html libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
image libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
index/suffixarray libgo: compile examples in _test packages 2020-01-09 23:14:57 +00:00
internal libgo: update to Go 1.15.3 release 2020-10-27 13:58:02 -07:00
io libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
log libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
math libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
mime libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
net net/http/cgi: merge upstream changes to default env vars 2020-10-23 16:55:57 -07:00
os libgo: handle linking to NetBSD's versioned symbols 2020-10-28 18:20:50 -07:00
path libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
plugin libgo: update to Go1.14beta1 2020-01-21 23:53:22 -08:00
reflect reflect: ensure uniqueness of type descriptors on AIX. 2020-10-13 17:54:37 -07:00
regexp libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
runtime libgo: handle linking to NetBSD's versioned symbols 2020-10-28 18:20:50 -07:00
sort libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
strconv libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
strings libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
sync libgo: update to Go1.15.2 release 2020-09-23 17:32:49 -07:00
syscall libgo: handle linking to NetBSD's versioned symbols 2020-10-28 18:20:50 -07:00
testdata libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
testing libgo: update to Go 1.15.3 release 2020-10-27 13:58:02 -07:00
text libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
time libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00
unicode libgo: update to go1.15rc1 2020-08-01 11:21:40 -07:00