| # Verify the linker will correctly resolve |
| # ppc64le objects compiled with gcc's -fno-plt |
| # option. This inlines PLT calls, and generates |
| # additional reloc types which the internal linker |
| # should handle. |
| # |
| # Verifies golang.org/issue/53345 |
| # |
| # Note, older gcc/clang may accept this option, but |
| # ignore it if binutils does not support the relocs. |
| [!compiler:gc] skip |
| [!cgo] skip |
| [!GOARCH:ppc64le] skip |
| |
| env CGO_CFLAGS='-fno-plt -O2 -g' |
| |
| go build -ldflags='-linkmode=internal' |
| exec ./noplttest |
| stdout helloworld |
| |
| -- go.mod -- |
| module noplttest |
| |
| -- noplttest.go -- |
| package main |
| |
| /* |
| #include <stdio.h> |
| void helloworld(void) { |
| printf("helloworld\n"); |
| fflush(stdout); |
| } |
| */ |
| import "C" |
| |
| func main() { |
| C.helloworld() |
| } |