xref: /aosp_15_r20/external/toolchain-utils/go/patch/go-1.10.2/go4.patch (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1*760c253cSXin Liruntime, crypto/x509: add -target flag.
2*760c253cSXin Li
3*760c253cSXin Li--- src/crypto/x509/x509_test.go
4*760c253cSXin Li+++ src/crypto/x509/x509_test.go
5*760c253cSXin Li@@ -13,29 +13,32 @@ import (
6*760c253cSXin Li 	"crypto/rsa"
7*760c253cSXin Li 	_ "crypto/sha256"
8*760c253cSXin Li 	_ "crypto/sha512"
9*760c253cSXin Li 	"crypto/x509/pkix"
10*760c253cSXin Li 	"encoding/asn1"
11*760c253cSXin Li 	"encoding/base64"
12*760c253cSXin Li 	"encoding/hex"
13*760c253cSXin Li 	"encoding/pem"
14*760c253cSXin Li+	"flag"
15*760c253cSXin Li 	"fmt"
16*760c253cSXin Li 	"internal/testenv"
17*760c253cSXin Li 	"math/big"
18*760c253cSXin Li 	"net"
19*760c253cSXin Li 	"net/url"
20*760c253cSXin Li 	"os/exec"
21*760c253cSXin Li 	"reflect"
22*760c253cSXin Li 	"runtime"
23*760c253cSXin Li 	"strings"
24*760c253cSXin Li 	"testing"
25*760c253cSXin Li 	"time"
26*760c253cSXin Li )
27*760c253cSXin Li
28*760c253cSXin Li+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries")
29*760c253cSXin Li+
30*760c253cSXin Li func TestParsePKCS1PrivateKey(t *testing.T) {
31*760c253cSXin Li 	block, _ := pem.Decode([]byte(pemPrivateKey))
32*760c253cSXin Li 	priv, err := ParsePKCS1PrivateKey(block.Bytes)
33*760c253cSXin Li 	if err != nil {
34*760c253cSXin Li 		t.Errorf("Failed to parse private key: %s", err)
35*760c253cSXin Li 		return
36*760c253cSXin Li 	}
37*760c253cSXin Li 	if priv.PublicKey.N.Cmp(rsaPrivateKey.PublicKey.N) != 0 ||
38*760c253cSXin Li@@ -1089,17 +1092,23 @@ func TestParsePEMCRL(t *testing.T) {
39*760c253cSXin Li 	}
40*760c253cSXin Li
41*760c253cSXin Li 	// Can't check the signature here without a package cycle.
42*760c253cSXin Li }
43*760c253cSXin Li
44*760c253cSXin Li func TestImports(t *testing.T) {
45*760c253cSXin Li 	testenv.MustHaveGoRun(t)
46*760c253cSXin Li
47*760c253cSXin Li-	if err := exec.Command(testenv.GoToolPath(t), "run", "x509_test_import.go").Run(); err != nil {
48*760c253cSXin Li+	var cmd *exec.Cmd
49*760c253cSXin Li+	if *target == "" {
50*760c253cSXin Li+		cmd = exec.Command(testenv.GoToolPath(t), "run", "x509_test_import.go")
51*760c253cSXin Li+	} else {
52*760c253cSXin Li+		cmd = exec.Command("go_"+*target, "run", "-exec", "go_"+*target+"_exec", "x509_test_import.go")
53*760c253cSXin Li+	}
54*760c253cSXin Li+	if err := cmd.Run(); err != nil {
55*760c253cSXin Li 		t.Errorf("failed to run x509_test_import.go: %s", err)
56*760c253cSXin Li 	}
57*760c253cSXin Li }
58*760c253cSXin Li
59*760c253cSXin Li const derCRLBase64 = "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"
60*760c253cSXin Li
61*760c253cSXin Li const pemCRLBase64 = "LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tDQpNSUlCOWpDQ0FWOENBUUV3RFFZSktvWklodmNOQVFFRkJRQXdiREVhTUJnR0ExVUVDaE1SVWxOQklGTmxZM1Z5DQphWFI1SUVsdVl5NHhIakFjQmdOVkJBTVRGVkpUUVNCUWRXSnNhV01nVW05dmRDQkRRU0IyTVRFdU1Dd0dDU3FHDQpTSWIzRFFFSkFSWWZjbk5oYTJWdmJuSnZiM1J6YVdkdVFISnpZWE5sWTNWeWFYUjVMbU52YlJjTk1URXdNakl6DQpNVGt5T0RNd1doY05NVEV3T0RJeU1Ua3lPRE13V2pDQmpEQktBaEVBckRxb2g5RkhKSFhUN09QZ3V1bjQrQmNODQpNRGt4TVRBeU1UUXlOekE1V2pBbU1Bb0dBMVVkRlFRRENnRUpNQmdHQTFVZEdBUVJHQTh5TURBNU1URXdNakUwDQpNalExTlZvd1BnSVJBTEd6blowOTVQQjVhQU9MUGc1N2ZNTVhEVEF5TVRBeU16RTBOVEF4TkZvd0dqQVlCZ05WDQpIUmdFRVJnUE1qQXdNakV3TWpNeE5EVXdNVFJhb0RBd0xqQWZCZ05WSFNNRUdEQVdnQlQxVERGNlVRTS9MTmVMDQpsNWx2cUhHUXEzZzltekFMQmdOVkhSUUVCQUlDQUlRd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lFQUZVNUFzNk16DQpxNVBSc2lmYW9iUVBHaDFhSkx5QytNczVBZ2MwYld5QTNHQWR4dXI1U3BQWmVSV0NCamlQL01FSEJXSkNsQkhQDQpHUmNxNXlJZDNFakRrYUV5eFJhK2k2N0x6dmhJNmMyOUVlNks5cFNZd2ppLzdSVWhtbW5Qclh0VHhsTDBsckxyDQptUVFKNnhoRFJhNUczUUE0Q21VZHNITnZicnpnbUNZcHZWRT0NCi0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0NCg0K"
62*760c253cSXin Li
63*760c253cSXin Li--- src/runtime/crash_cgo_test.go
64*760c253cSXin Li+++ src/runtime/crash_cgo_test.go
65*760c253cSXin Li@@ -279,17 +279,17 @@ func testCgoPprof(t *testing.T, buildArg, runArg string) {
66*760c253cSXin Li 	}
67*760c253cSXin Li 	testenv.MustHaveGoRun(t)
68*760c253cSXin Li
69*760c253cSXin Li 	exe, err := buildTestProg(t, "testprogcgo", buildArg)
70*760c253cSXin Li 	if err != nil {
71*760c253cSXin Li 		t.Fatal(err)
72*760c253cSXin Li 	}
73*760c253cSXin Li
74*760c253cSXin Li-	got, err := testenv.CleanCmdEnv(exec.Command(exe, runArg)).CombinedOutput()
75*760c253cSXin Li+	got, err := testenv.CleanCmdEnv(goExecCmd(exe, runArg)).CombinedOutput()
76*760c253cSXin Li 	if err != nil {
77*760c253cSXin Li 		if testenv.Builder() == "linux-amd64-alpine" {
78*760c253cSXin Li 			// See Issue 18243 and Issue 19938.
79*760c253cSXin Li 			t.Skipf("Skipping failing test on Alpine (golang.org/issue/18243). Ignoring error: %v", err)
80*760c253cSXin Li 		}
81*760c253cSXin Li 		t.Fatal(err)
82*760c253cSXin Li 	}
83*760c253cSXin Li 	fn := strings.TrimSpace(string(got))
84*760c253cSXin Li--- src/runtime/crash_test.go
85*760c253cSXin Li+++ src/runtime/crash_test.go
86*760c253cSXin Li@@ -17,16 +17,35 @@ import (
87*760c253cSXin Li 	"runtime"
88*760c253cSXin Li 	"strconv"
89*760c253cSXin Li 	"strings"
90*760c253cSXin Li 	"sync"
91*760c253cSXin Li 	"testing"
92*760c253cSXin Li 	"time"
93*760c253cSXin Li )
94*760c253cSXin Li
95*760c253cSXin Li+var target = flag.String("target", "", "if non empty, use 'go_target' to compile test files and 'go_target_exec' to run the binaries")
96*760c253cSXin Li+
97*760c253cSXin Li+func goCmd(t *testing.T) string {
98*760c253cSXin Li+	if *target != "" {
99*760c253cSXin Li+		return "go_" + *target
100*760c253cSXin Li+	}
101*760c253cSXin Li+	return testenv.GoToolPath(t)
102*760c253cSXin Li+}
103*760c253cSXin Li+
104*760c253cSXin Li+func goExecCmd(name string, arg ...string) *exec.Cmd {
105*760c253cSXin Li+	var cmd []string
106*760c253cSXin Li+	if *target != "" {
107*760c253cSXin Li+		cmd = append(cmd, "go_"+*target+"_exec")
108*760c253cSXin Li+	}
109*760c253cSXin Li+	cmd = append(cmd, name)
110*760c253cSXin Li+	cmd = append(cmd, arg...)
111*760c253cSXin Li+	return exec.Command(cmd[0], cmd[1:]...)
112*760c253cSXin Li+}
113*760c253cSXin Li+
114*760c253cSXin Li var toRemove []string
115*760c253cSXin Li
116*760c253cSXin Li func TestMain(m *testing.M) {
117*760c253cSXin Li 	status := m.Run()
118*760c253cSXin Li 	for _, file := range toRemove {
119*760c253cSXin Li 		os.RemoveAll(file)
120*760c253cSXin Li 	}
121*760c253cSXin Li 	os.Exit(status)
122*760c253cSXin Li@@ -50,17 +69,17 @@ func runTestProg(t *testing.T, binary, name string, env ...string) string {
123*760c253cSXin Li
124*760c253cSXin Li 	testenv.MustHaveGoBuild(t)
125*760c253cSXin Li
126*760c253cSXin Li 	exe, err := buildTestProg(t, binary)
127*760c253cSXin Li 	if err != nil {
128*760c253cSXin Li 		t.Fatal(err)
129*760c253cSXin Li 	}
130*760c253cSXin Li
131*760c253cSXin Li-	cmd := testenv.CleanCmdEnv(exec.Command(exe, name))
132*760c253cSXin Li+	cmd := testenv.CleanCmdEnv(goExecCmd(exe, name))
133*760c253cSXin Li 	cmd.Env = append(cmd.Env, env...)
134*760c253cSXin Li 	if testing.Short() {
135*760c253cSXin Li 		cmd.Env = append(cmd.Env, "RUNTIME_TEST_SHORT=1")
136*760c253cSXin Li 	}
137*760c253cSXin Li 	var b bytes.Buffer
138*760c253cSXin Li 	cmd.Stdout = &b
139*760c253cSXin Li 	cmd.Stderr = &b
140*760c253cSXin Li 	if err := cmd.Start(); err != nil {
141*760c253cSXin Li@@ -125,17 +144,17 @@ func buildTestProg(t *testing.T, binary string, flags ...string) (string, error)
142*760c253cSXin Li 		name += "_" + strings.Join(flags, "_")
143*760c253cSXin Li 	}
144*760c253cSXin Li 	target, ok := testprog.target[name]
145*760c253cSXin Li 	if ok {
146*760c253cSXin Li 		return target.exe, target.err
147*760c253cSXin Li 	}
148*760c253cSXin Li
149*760c253cSXin Li 	exe := filepath.Join(testprog.dir, name+".exe")
150*760c253cSXin Li-	cmd := exec.Command(testenv.GoToolPath(t), append([]string{"build", "-o", exe}, flags...)...)
151*760c253cSXin Li+	cmd := exec.Command(goCmd(t), append([]string{"build", "-o", exe}, flags...)...)
152*760c253cSXin Li 	cmd.Dir = "testdata/" + binary
153*760c253cSXin Li 	out, err := testenv.CleanCmdEnv(cmd).CombinedOutput()
154*760c253cSXin Li 	if err != nil {
155*760c253cSXin Li 		target.err = fmt.Errorf("building %s %v: %v\n%s", binary, flags, err, out)
156*760c253cSXin Li 		testprog.target[name] = target
157*760c253cSXin Li 		return "", target.err
158*760c253cSXin Li 	}
159*760c253cSXin Li 	target.exe = exe
160*760c253cSXin Li@@ -456,17 +475,17 @@ func TestPanicLoop(t *testing.T) {
161*760c253cSXin Li func TestMemPprof(t *testing.T) {
162*760c253cSXin Li 	testenv.MustHaveGoRun(t)
163*760c253cSXin Li
164*760c253cSXin Li 	exe, err := buildTestProg(t, "testprog")
165*760c253cSXin Li 	if err != nil {
166*760c253cSXin Li 		t.Fatal(err)
167*760c253cSXin Li 	}
168*760c253cSXin Li
169*760c253cSXin Li-	got, err := testenv.CleanCmdEnv(exec.Command(exe, "MemProf")).CombinedOutput()
170*760c253cSXin Li+	got, err := testenv.CleanCmdEnv(goExecCmd(exe, "MemProf")).CombinedOutput()
171*760c253cSXin Li 	if err != nil {
172*760c253cSXin Li 		t.Fatal(err)
173*760c253cSXin Li 	}
174*760c253cSXin Li 	fn := strings.TrimSpace(string(got))
175*760c253cSXin Li 	defer os.Remove(fn)
176*760c253cSXin Li
177*760c253cSXin Li 	for try := 0; try < 2; try++ {
178*760c253cSXin Li 		cmd := testenv.CleanCmdEnv(exec.Command(testenv.GoToolPath(t), "tool", "pprof", "-alloc_space", "-top"))
179*760c253cSXin Li--- src/runtime/crash_unix_test.go
180*760c253cSXin Li+++ src/runtime/crash_unix_test.go
181*760c253cSXin Li@@ -244,17 +244,17 @@ func testPanicSystemstackInternal() {
182*760c253cSXin Li }
183*760c253cSXin Li
184*760c253cSXin Li func TestSignalExitStatus(t *testing.T) {
185*760c253cSXin Li 	testenv.MustHaveGoBuild(t)
186*760c253cSXin Li 	exe, err := buildTestProg(t, "testprog")
187*760c253cSXin Li 	if err != nil {
188*760c253cSXin Li 		t.Fatal(err)
189*760c253cSXin Li 	}
190*760c253cSXin Li-	err = testenv.CleanCmdEnv(exec.Command(exe, "SignalExitStatus")).Run()
191*760c253cSXin Li+	err = testenv.CleanCmdEnv(goExecCmd(exe, "SignalExitStatus")).Run()
192*760c253cSXin Li 	if err == nil {
193*760c253cSXin Li 		t.Error("test program succeeded unexpectedly")
194*760c253cSXin Li 	} else if ee, ok := err.(*exec.ExitError); !ok {
195*760c253cSXin Li 		t.Errorf("error (%v) has type %T; expected exec.ExitError", err, err)
196*760c253cSXin Li 	} else if ws, ok := ee.Sys().(syscall.WaitStatus); !ok {
197*760c253cSXin Li 		t.Errorf("error.Sys (%v) has type %T; expected syscall.WaitStatus", ee.Sys(), ee.Sys())
198*760c253cSXin Li 	} else if !ws.Signaled() || ws.Signal() != syscall.SIGTERM {
199*760c253cSXin Li 		t.Errorf("got %v; expected SIGTERM", ee)
200