[tbb-commits] [tor-browser-build/master] Bug 32303: Fix broken obfs4 on Android Q
gk at torproject.org
gk at torproject.org
Thu Nov 7 10:13:38 UTC 2019
commit 878a3855c2b7fc5146cd8c38d2b25a7ed427c7e9
Author: Matthew Finkel <sysrqb at torproject.org>
Date: Sat Oct 26 17:15:20 2019 +0000
Bug 32303: Fix broken obfs4 on Android Q
Backport go patch #29674 that drops the TLS section on Android.
---
.../90a3ce02dc25adcf1598faf11a66b151ada3f637.patch | 57 ++++++++++++++++++++++
projects/go/build | 2 +
projects/go/config | 2 +
3 files changed, 61 insertions(+)
diff --git a/projects/go/90a3ce02dc25adcf1598faf11a66b151ada3f637.patch b/projects/go/90a3ce02dc25adcf1598faf11a66b151ada3f637.patch
new file mode 100644
index 0000000..dc66809
--- /dev/null
+++ b/projects/go/90a3ce02dc25adcf1598faf11a66b151ada3f637.patch
@@ -0,0 +1,57 @@
+From 90a3ce02dc25adcf1598faf11a66b151ada3f637 Mon Sep 17 00:00:00 2001
+From: Elias Naur <mail at eliasnaur.com>
+Date: Wed, 27 Mar 2019 14:25:24 +0100
+Subject: [PATCH] cmd/link/internal/ld: skip TLS section on Android
+
+We don't use the TLS section on android, and dropping it avoids
+complaints about underalignment from the Android Q linker.
+
+Updates #29674
+
+Change-Id: I91dabf2a58e6eb1783872639a6a144858db09cef
+Reviewed-on: https://go-review.googlesource.com/c/go/+/169618
+Reviewed-by: Ian Lance Taylor <iant at golang.org>
+---
+ src/cmd/link/internal/ld/lib.go | 29 +++++++++++++++++------------
+ 1 file changed, 17 insertions(+), 12 deletions(-)
+
+diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
+index 1d44c0eb18b..b331e39fe3e 100644
+--- a/src/cmd/link/internal/ld/lib.go
++++ b/src/cmd/link/internal/ld/lib.go
+@@ -453,18 +453,23 @@ func (ctxt *Link) loadlib() {
+ }
+ }
+
+- tlsg := ctxt.Syms.Lookup("runtime.tlsg", 0)
+-
+- // runtime.tlsg is used for external linking on platforms that do not define
+- // a variable to hold g in assembly (currently only intel).
+- if tlsg.Type == 0 {
+- tlsg.Type = sym.STLSBSS
+- tlsg.Size = int64(ctxt.Arch.PtrSize)
+- } else if tlsg.Type != sym.SDYNIMPORT {
+- Errorf(nil, "runtime declared tlsg variable %v", tlsg.Type)
+- }
+- tlsg.Attr |= sym.AttrReachable
+- ctxt.Tlsg = tlsg
++ // The Android Q linker started to complain about underalignment of the our TLS
++ // section. We don't actually use the section on android, so dont't
++ // generate it.
++ if objabi.GOOS != "android" {
++ tlsg := ctxt.Syms.Lookup("runtime.tlsg", 0)
++
++ // runtime.tlsg is used for external linking on platforms that do not define
++ // a variable to hold g in assembly (currently only intel).
++ if tlsg.Type == 0 {
++ tlsg.Type = sym.STLSBSS
++ tlsg.Size = int64(ctxt.Arch.PtrSize)
++ } else if tlsg.Type != sym.SDYNIMPORT {
++ Errorf(nil, "runtime declared tlsg variable %v", tlsg.Type)
++ }
++ tlsg.Attr |= sym.AttrReachable
++ ctxt.Tlsg = tlsg
++ }
+
+ var moduledata *sym.Symbol
+ if ctxt.BuildMode == BuildModePlugin {
diff --git a/projects/go/build b/projects/go/build
index aa092d6..2ebfd58 100644
--- a/projects/go/build
+++ b/projects/go/build
@@ -68,6 +68,8 @@ cd /var/tmp/dist/go/src
CGO_ENABLED=1 CC_FOR_TARGET="$CC_FOR_TARGET" CC= CFLAGS= LDFLAGS= ./make.bash
[% ELSIF c("var/android") -%]
patch -p2 < $rootdir/0001-Use-fixed-go-build-tmp-directory.patch
+ # Obfs4 breaks on Android Q without this patch, see: #32303
+ patch -p2 < $rootdir/90a3ce02dc25adcf1598faf11a66b151ada3f637.patch
CGO_ENABLED=1 CC_FOR_TARGET=[% c("var/CC") %] CGO_CFLAGS='-D__ANDROID_API__=[% c("var/android_min_api") %]' CC= CFLAGS= LDFLAGS= ./make.bash
[% END -%]
diff --git a/projects/go/config b/projects/go/config
index 31c510a..cf95b90 100644
--- a/projects/go/config
+++ b/projects/go/config
@@ -118,3 +118,5 @@ input_files:
sha256sum: 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
- filename: 0001-Use-fixed-go-build-tmp-directory.patch
enable: '[% c("var/android") %]'
+ - filename: 90a3ce02dc25adcf1598faf11a66b151ada3f637.patch
+ enable: '[% c("var/android") %]'
More information about the tbb-commits
mailing list