Skip to content

Commit 602bb2d

Browse files
committed
core/overreach: m debug logs
1 parent 3420f37 commit 602bb2d

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

intra/core/overreach.go

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,35 @@ import (
1010
"encoding/binary"
1111
"os"
1212
_ "unsafe" // for go:linkname
13+
14+
"github.com/celzero/firestack/intra/log"
1315
)
1416

1517
const logdHdrLen = 11
1618

1719
var pid int
1820

21+
// pushing / pulling symbols work provided
22+
// -ldflags="checklinkname=0"
23+
24+
//go:linkname secureMode runtime.secureMode
25+
var secureMode bool
26+
27+
//go:linkname writeHeader runtime.writeHeader
28+
var writeHeader []byte
29+
30+
//go:linkname writeBuf runtime.writeBuf
31+
var writeBuf [1024]byte
32+
33+
//go:linkname logger runtime.logger
34+
var logger int32
35+
36+
//go:linkname writePos runtime.writePos
37+
var writePos int
38+
39+
//go:linkname writeFD runtime.writeFD
40+
var writeFD uintptr
41+
1942
func init() {
2043
// github.com/golang/go/issues/69868
2144
// Unfortunately, Android apps have AT_SECURE set
@@ -35,20 +58,26 @@ func init() {
3558
// explicitly enabled with RuntimeInitLogd()
3659
logger = 100
3760

61+
pid = os.Getpid()
62+
3863
// github.com/golang/go/blob/e2fef50def98/src/runtime/write_err_android.go#L13
3964
// actual writeHeader = []byte{6 /* ANDROID_LOG_ERROR */, 'G', 'o', 0}
4065
// Change level to assert in the hope that Android's DropBoxManager picks it up.
4166
// github.com/golang/go/issues/25035 / developer.android.com/reference/kotlin/android/util/Log#ASSERT:kotlin.Int
4267
writeHeader = []byte{7 /* ANDROID_LOG_ASSERT */, 'G', 'o', 'E', 'r', 'r', 0}
4368

69+
log.D("over: logd init start(%d) %d %d %s", writeFD, len(writeHeader), len(writeBuf), string(writeHeader))
70+
4471
RuntimeInitLogd()
4572

73+
log.D("over: logd init done(%d) %d %d %d %d", writeFD, len(writeHeader), len(writeBuf), writePos, logger)
74+
4675
// Since runtime's internal logd initialization is disabled, init writeBuf's writePos
4776
// to the end of our modified writeHeader. See: writeErr impl
4877
// github.com/golang/go/blob/e2fef50def98/src/runtime/write_err_android.go#L76-L89
4978
writePos = prepCrashLogHeader()
5079

51-
pid = os.Getpid()
80+
log.D("over: logd prep done(%d) %d %d %d %d", writeFD, len(writeHeader), len(writeBuf), writePos, logger)
5281
}
5382

5483
func SecureMode(new bool) (prev bool) {
@@ -176,21 +205,3 @@ func prepCrashLogHeader() int {
176205

177206
return logdHdrLen + len(writeHeader)
178207
}
179-
180-
// pushing / pulling symbols work provided
181-
// -ldflags="checklinkname=0"
182-
183-
//go:linkname secureMode runtime.secureMode
184-
var secureMode bool
185-
186-
//go:linkname writeHeader runtime.writeHeader
187-
var writeHeader []byte
188-
189-
//go:linkname writeBuf runtime.writeBuf
190-
var writeBuf [1024]byte
191-
192-
//go:linkname logger runtime.logger
193-
var logger int32
194-
195-
//go:linkname writePos runtime.writePos
196-
var writePos int

0 commit comments

Comments
 (0)