71cf87
From 024cf19e52544814cdee80693a6dc12b5a92943c Mon Sep 17 00:00:00 2001
899ac6
From: Debarshi Ray <rishi@fedoraproject.org>
899ac6
Date: Mon, 29 Jun 2020 17:57:47 +0200
899ac6
Subject: [PATCH] build: Make the build flags match RHEL's %{gobuild} for PPC64
899ac6
899ac6
The Go toolchain doesn't play well with passing compiler and linker
899ac6
flags via environment variables. The linker flags require a second
899ac6
level of quoting, which leaves the build system without a quote level
899ac6
to assign the flags to an environment variable like GOFLAGS.
899ac6
899ac6
This is one reason why RHEL doesn't have a RPM macro with only the
899ac6
flags. The %{gobuild} RPM macro includes the entire 'go build ...'
899ac6
invocation.
899ac6
899ac6
The Go toolchain also doesn't like the LDFLAGS environment variable as
899ac6
exported by RHEL's %{meson} RPM macro, and RHEL's RPM toolchain doesn't
899ac6
like the compressed DWARF data generated by the Go toolchain.
899ac6
899ac6
Note that these flags are only meant for the "ppc64" CPU architecture,
899ac6
and should be kept updated to match RHEL's Go guidelines. Use
899ac6
'rpm --eval "%{gobuild}"' to expand the %{gobuild} macro.
899ac6
---
71cf87
 src/go-build-wrapper | 13 +++++++++----
71cf87
 1 file changed, 9 insertions(+), 4 deletions(-)
899ac6
899ac6
diff --git a/src/go-build-wrapper b/src/go-build-wrapper
71cf87
index ef4aafc8b024..00d7e9fca0e0 100755
899ac6
--- a/src/go-build-wrapper
899ac6
+++ b/src/go-build-wrapper
71cf87
@@ -32,9 +32,9 @@ if ! cd "$1"; then
899ac6
     exit 1
899ac6
 fi
899ac6
 
71cf87
-tags=""
71cf87
+tags="-tags rpm_crashtraceback,${BUILDTAGS:-}"
71cf87
 if $6; then
71cf87
-    tags="-tags migration_path_for_coreos_toolbox"
71cf87
+    tags="$tags,migration_path_for_coreos_toolbox"
71cf87
 fi
71cf87
 
71cf87
 if ! libc_dir=$("$4" --print-file-name=libc.so); then
71cf87
@@ -69,11 +69,16 @@ fi
71cf87
 
71cf87
 dynamic_linker="/run/host$dynamic_linker_canonical_dirname/$dynamic_linker_basename"
71cf87
 
899ac6
+unset LDFLAGS
71cf87
+
71cf87
 # shellcheck disable=SC2086
71cf87
 go build \
71cf87
+        -compiler gc \
71cf87
         $tags \
71cf87
-        -trimpath \
71cf87
-        -ldflags "-extldflags '-Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" \
71cf87
+        -ldflags "${LDFLAGS:-} -compressdwarf=false -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -extldflags '-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" \
71cf87
+        -a \
71cf87
+        -v \
71cf87
+        -x \
71cf87
         -o "$2/toolbox"
71cf87
 
899ac6
 exit "$?"
899ac6
-- 
899ac6
2.31.1
899ac6