From 9fe0019ec1abd6f440238f458f990d7c87f590f8 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 3 Apr 2020 17:25:38 -0600 Subject: [PATCH] tunnel: libwg-go: use deterministic verdef name From the ld.gold source: const char* name = parameters->options().soname(); if (name == NULL) name = parameters->options().output_file_name(); That means by default it uses `-o {output}` as the verdef aux name, which is random every time due to Go's build system. By passing in `--soname={somethingexplicit}` we can instead have a deterministic verdef. This commit makes wireguard-android reproducible. Signed-off-by: Jason A. Donenfeld --- tunnel/tools/libwg-go/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tunnel/tools/libwg-go/Makefile b/tunnel/tools/libwg-go/Makefile index 1a83959a..abb42884 100644 --- a/tunnel/tools/libwg-go/Makefile +++ b/tunnel/tools/libwg-go/Makefile @@ -14,7 +14,7 @@ NDK_GO_ARCH_MAP_mips64 := mips64x CLANG_FLAGS := --target=$(ANDROID_LLVM_TRIPLE) --gcc-toolchain=$(ANDROID_TOOLCHAIN_ROOT) --sysroot=$(ANDROID_SYSROOT) export CGO_CFLAGS := $(CLANG_FLAGS) $(CFLAGS) -export CGO_LDFLAGS := $(CLANG_FLAGS) $(LDFLAGS) +export CGO_LDFLAGS := $(CLANG_FLAGS) $(LDFLAGS) -Wl,-soname=libwg-go.so export CC := $(ANDROID_C_COMPILER) export GOARCH := $(NDK_GO_ARCH_MAP_$(ANDROID_ARCH_NAME)) export GOOS := android