commit 878a3855c2b7fc5146cd8c38d2b25a7ed427c7e9
Author: Matthew Finkel <[email protected]>
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 <[email protected]>
+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 <[email protected]>
+---
+ 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") %]'



_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to