The awk script used a zero-based index which worked on surprisingly many plattforms. According to the man page, however, the function expects one-based indexing.
For reference see this bug in the go git repository: https://github.com/golang/go/issues/45843 Signed-off-by: Christoph Höger <choe...@umpa-net.de> --- ChangeLog | 4 ++++ libgo/mklinknames.awk | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2174ab1ea90..495e6f79b76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2021-05-10 Christoph Höger <choe...@umpa-net.de> + + * libgo/mklinknames.awk: Fix awk substr invocation + 2021-05-04 Nick Clifton <ni...@redhat.com> * configure.ac (AC_PROG_CC): Replace with AC_PROG_CC_C99. diff --git a/libgo/mklinknames.awk b/libgo/mklinknames.awk index 71cb3be7966..0e49c07349e 100644 --- a/libgo/mklinknames.awk +++ b/libgo/mklinknames.awk @@ -37,7 +37,7 @@ BEGIN { # The goal is to extract "__timegm50". if ((def | getline fndef) > 0 && match(fndef, "__asm__\\(\"\\*?")) { asmname = substr(fndef, RSTART + RLENGTH) - asmname = substr(asmname, 0, length(asmname) - 2) + asmname = substr(asmname, 1, length(asmname) - 2) printf("//go:linkname %s %s\n", gofnname, asmname) } else { # Assume the asm name is the same as the declared C name. -- 2.31.1