diff --git a/packaging/resources/apkbuild-source-stable-optimized.sh b/packaging/resources/apkbuild-source-stable-optimized.sh index 4c8328a..443cb4e 100644 --- a/packaging/resources/apkbuild-source-stable-optimized.sh +++ b/packaging/resources/apkbuild-source-stable-optimized.sh @@ -41,7 +41,7 @@ build() { esac # compile binary - CGO_ENABLED=0 go build -ldflags=\"-s -w\" -trimpath -tags=stxAll ./mutn.go + CGO_ENABLED=0 go build -buildmode=pie -ldflags=\"-s -w\" -trimpath -tags=stxAll ./mutn.go } package() { diff --git a/packaging/resources/pkgbuild-git-stable-optimized.sh b/packaging/resources/pkgbuild-git-stable-optimized.sh index fdd3bab..f8626c8 100644 --- a/packaging/resources/pkgbuild-git-stable-optimized.sh +++ b/packaging/resources/pkgbuild-git-stable-optimized.sh @@ -45,7 +45,7 @@ build() { esac # compile binary - CGO_ENABLED=0 go build -ldflags=\"-s -w\" -trimpath -tags=stxAll ./mutn.go + CGO_ENABLED=0 go build -buildmode=pie -ldflags=\"-s -w\" -trimpath -tags=stxAll ./mutn.go } package() { diff --git a/packaging/resources/release-binaries.sh b/packaging/resources/release-binaries.sh index 559d18a..dad9b06 100644 --- a/packaging/resources/release-binaries.sh +++ b/packaging/resources/release-binaries.sh @@ -9,10 +9,10 @@ create_release_binaries() { printf '\nGenerating release binaries...\n' cd .. - GOOS=linux CGO_ENABLED=0 GOAMD64=v2 go build -o ./packaging/1output/mutn-linux-x86_64_v2 -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go - GOOS=linux CGO_ENABLED=0 GOARCH=arm64 GOARM64=v8.0 CGO_ENABLED=0 go build -o ./packaging/1output/mutn-linux-arm64v8.0 -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go - GOOS=linux CGO_ENABLED=0 GOARCH=arm64 GOARM64=v8.7,crypto CGO_ENABLED=0 go build -o ./packaging/1output/mutn-linux-arm64v8.7+crypto -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go - GOOS=windows CGO_ENABLED=0 GOAMD64=v2 go build -o ./packaging/1output/mutn-windows-x86_64_v2.exe -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go - GOOS=windows CGO_ENABLED=0 GOARCH=arm64 GOARM64=v8.7,crypto CGO_ENABLED=0 go build -o ./packaging/1output/mutn-windows-arm64v8.7+crypto.exe -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go + GOOS=linux CGO_ENABLED=0 GOAMD64=v2 go build -o ./packaging/1output/mutn-linux-x86_64_v2 -buildmode=pie -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go + GOOS=linux CGO_ENABLED=0 GOARCH=arm64 GOARM64=v8.0 CGO_ENABLED=0 go build -o ./packaging/1output/mutn-linux-arm64v8.0 -buildmode=pie -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go + GOOS=linux CGO_ENABLED=0 GOARCH=arm64 GOARM64=v8.7,crypto CGO_ENABLED=0 go build -o ./packaging/1output/mutn-linux-arm64v8.7+crypto -buildmode=pie -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go + GOOS=windows CGO_ENABLED=0 GOAMD64=v2 go build -o ./packaging/1output/mutn-windows-x86_64_v2.exe -buildmode=pie -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go + GOOS=windows CGO_ENABLED=0 GOARCH=arm64 GOARM64=v8.7,crypto CGO_ENABLED=0 go build -o ./packaging/1output/mutn-windows-arm64v8.7+crypto.exe -buildmode=pie -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go cd ./packaging } diff --git a/wiki/build.md b/wiki/build.md index d869f52..df37d90 100644 --- a/wiki/build.md +++ b/wiki/build.md @@ -1,7 +1,7 @@ ## Building -Official binaries are stripped of debug info for size and built without CGO (except for distribution packages) for portability, as follows: +Official binaries are built without CGO (for portability), built position-independent (for security, allows [ASLR](https://en.wikipedia.org/wiki/Address_space_layout_randomization)), and stripped of debug info (for size reduction), as follows: ``` -CGO_ENABLED=0 go build -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go +CGO_ENABLED=0 go build -buildmode=pie -ldflags="-s -w" -trimpath -tags=stxAll ./mutn.go ``` Additionally, some custom build tags can be used to create different binaries. The following tags are not used in official builds: