return false
case "pie":
switch pair {
- case "linux-386", "linux-amd64", "linux-arm", "linux-arm64", "linux-ppc64le", "linux-s390x",
+ case "aix/ppc64",
+ "linux-386", "linux-amd64", "linux-arm", "linux-arm64", "linux-ppc64le", "linux-s390x",
"android-amd64", "android-arm", "android-arm64", "android-386":
return true
case "darwin-amd64":
codegenArg = "-shared"
case "darwin/amd64":
codegenArg = "-shared"
+ case "aix/ppc64":
default:
base.Fatalf("-buildmode=pie not supported on %s\n", platform)
}
*mode = BuildModeExe
case "pie":
switch objabi.GOOS {
- case "android", "linux":
+ case "aix", "android", "linux":
case "darwin", "freebsd":
switch objabi.GOARCH {
case "amd64":
func (ctxt *Link) UseRelro() bool {
switch ctxt.BuildMode {
case BuildModeCArchive, BuildModeCShared, BuildModeShared, BuildModePIE, BuildModePlugin:
- return ctxt.IsELF
+ return ctxt.IsELF || ctxt.HeadType == objabi.Haix
default:
return ctxt.linkShared || (ctxt.HeadType == objabi.Haix && ctxt.LinkMode == LinkExternal)
}
}
case BuildModePIE:
// ELF.
- if ctxt.HeadType != objabi.Hdarwin {
+ if ctxt.HeadType != objabi.Hdarwin && ctxt.HeadType != objabi.Haix {
if ctxt.UseRelro() {
argv = append(argv, "-Wl,-z,relro")
}