NAME=Resolve all symbols on a stripped linux go1.18 binary
FILE=bins/golang/example-server-1.18-stripped
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
ilq
EOF
EXPECT=<<EOF
4759
0x0063dfdc str.server.crt
0x0063e01e str.Reading_server_certificate:__s
0x0063e1d1 str.https:__localhost:8000
0x0063e20e str.Failed_get:__s
0x0063e2e4 str.Failed_reading_response_body:__s
0x0063e3af str.Got_response__d:__s__s
0x0063e49b str.version
0x0063e4ac str.HTTP_version
0x0063e566 str.
HEAD
0x63f4be 4 4 flag
0x63f4c4 4 4 sort
0x63f4ca 4 4 sync
0x63f4d0 4 4 *int
0x63f4d6 4 4 AAAA
0x63f4dc 4 4 Addr
0x63f4e2 4 4 Args
0x63f4e8 4 4 Atim
0x63f4ee 4 4 Attr
0x63f4f4 4 4 Back
TAIL
0x6a6d1d 2 2 HT
0x6a7847 10 10 server.crt
0x6ab8fb 23 23 Got response %d: %s %s\n
0x6af1a8 32 32 Failed reading response body: %s
0x6a8859 14 14 Failed get: %s
0x6ab4eb 22 22 https://localhost:8000
0x6ae630 30 30 Reading server certificate: %s
0x6a6b9f 7 7 version
0x6a7efb 2 2 HT
0x6a7efb 12 12 HTTP version
12759
bufio
bytes
compress/flate
compress/gzip
container/list
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/ed25519
crypto/ed25519/internal/edwards25519
crypto/ed25519/internal/edwards25519/field
crypto/elliptic
crypto/elliptic/internal/fiat
crypto/elliptic/internal/nistec
crypto/hmac
crypto/internal/randutil
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/tls
crypto/x509
crypto/x509/pkix
encoding/asn1
encoding/base64
encoding/binary
encoding/hex
encoding/pem
errors
flag
fmt
golang.org/x/crypto/chacha20
golang.org/x/crypto/chacha20poly1305
golang.org/x/crypto/cryptobyte
golang.org/x/crypto/curve25519
golang.org/x/crypto/curve25519/internal/field
golang.org/x/crypto/hkdf
golang.org/x/crypto/internal/poly1305
golang.org/x/net/dns/dnsmessage
golang.org/x/net/http/httpguts
golang.org/x/net/http/httpproxy
golang.org/x/net/http2
golang.org/x/net/http2/hpack
golang.org/x/net/idna
golang.org/x/sys/cpu
golang.org/x/text/secure/bidirule
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
hash/crc32
internal/bytealg
internal/cpu
internal/fmtsort
internal/godebug
internal/intern
internal/itoa
internal/oserror
internal/poll
internal/reflectlite
internal/singleflight
internal/syscall/unix
internal/testlog
io
io/fs
io/ioutil
libc.so.6
log
math
math/big
math/rand
mime
mime/multipart
net
net/http
net/http/internal
net/http/internal/ascii
net/netip
net/textproto
net/url
os
path
path/filepath
reflect
runtime
runtime/debug
runtime/internal/atomic
runtime/internal/sys
runtime/internal/syscall
sort
strconv
strings
sync
sync/atomic
syscall
time
unicode
unicode/utf16
unicode/utf8
x_cgo_munmap
EOF
RUN

NAME=Resolve all symbols on a stripped linux go1.16 binary
FILE=bins/golang/example-server-1.16-stripped
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
ilq
EOF
EXPECT=<<EOF
4657
0x0066d583 str.server.crt
0x0066d5f3 str.Reading_server_certificate:__s
0x0066d722 str.https:__localhost:8000
0x0066d77c str.Failed_get:__s
0x0066d863 str.Failed_reading_response_body:__s
0x0066d9a3 str.Got_response__d:__s__s
0x0066db8c str.version
0x0066dbaa str.HTTP_version
0x0066dc76 str.
0x0066e68d str.Addr
;-- str.flag:
;-- str.sort:
;-- str.sync:
HEAD
0x66e6cb 4 4 flag
0x66e6d3 4 4 sort
0x66e6db 4 4 sync
0x66e6e2 4 4 *int
0x66e6e9 4 4 AAAA
0x66e6f0 4 4 Addr
0x66e6f7 4 4 Args
0x66e6fe 4 4 Atim
0x66e705 4 4 Attr
0x66e70c 4 4 Back
TAIL
0x5 22 22 \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff
0x6f10e1 25 25 http2: Request.URI is nil
0x6ec547 10 10 server.crt
0x6f0013 22 22 https://localhost:8000
0x6f03f7 23 23 Got response %d: %s %s\n
0x6f397b 32 32 Failed reading response body: %s
0x6ed500 14 14 Failed get: %s
0x6f2e40 30 30 Reading server certificate: %s
0x6eb88e 7 7 version
0x6ecbc3 12 12 HTTP version
12866
bufio
bytes
compress/flate
compress/gzip
container/list
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/ed25519
crypto/ed25519/internal/edwards25519
crypto/elliptic
crypto/hmac
crypto/internal/randutil
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/tls
crypto/x509
crypto/x509/pkix
encoding/asn1
encoding/base64
encoding/binary
encoding/hex
encoding/pem
errors
flag
fmt
golang.org/x/crypto/chacha20
golang.org/x/crypto/chacha20poly1305
golang.org/x/crypto/cryptobyte
golang.org/x/crypto/curve25519
golang.org/x/crypto/hkdf
golang.org/x/crypto/poly1305
golang.org/x/net/dns/dnsmessage
golang.org/x/net/http/httpguts
golang.org/x/net/http/httpproxy
golang.org/x/net/http2
golang.org/x/net/http2/hpack
golang.org/x/net/idna
golang.org/x/sys/cpu
golang.org/x/text/secure/bidirule
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
hash/crc32
internal/bytealg
internal/cpu
internal/fmtsort
internal/oserror
internal/poll
internal/reflectlite
internal/singleflight
internal/syscall/unix
internal/testlog
io
io/fs
io/ioutil
libc.so.6
libpthread.so.0
log
math
math/big
math/rand
mime
mime/multipart
net
net/http
net/http/internal
net/textproto
net/url
os
path
path/filepath
reflect
runtime
runtime/debug
runtime/internal/atomic
runtime/internal/sys
sort
strconv
strings
sync
sync/atomic
syscall
time
unicode
unicode/utf16
unicode/utf8
EOF
RUN

NAME=Resolve all symbols on a stripped linux go1.12 binary
FILE=bins/golang/example-server-1.12-stripped
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
ilq
EOF
EXPECT=<<EOF
5406
0x0065d876 str.server.crt
0x0065d8e0 str.Reading_server_certificate:__s
0x0065da03 str.https:__localhost:8000
0x0065da57 str.Failed_get:__s
0x0065db5a str.Failed_reading_response_body:__s
0x0065dca5 str.Got_response__d:__s__s
0x0065de6d str.version
0x0065de8a str.HTTP_version
0x0065dfe6 str.
HEAD
0x65f99f 4 4 flag
0x65f9a7 4 4 hash
0x65f9af 4 4 sort
0x65f9b7 4 4 sync
0x65f9bf 4 4 time
0x65f9c6 4 4 *int
0x65f9cd 4 4 AAAA
0x65f9d4 4 4 Addr
0x65f9db 4 4 Args
0x65f9e2 4 4 Atim
TAIL
0x705389 56 56 http2: request body larger than specified content length
0x6fc61a 25 25 http2: Request.URI is nil
0x6f8031 10 10 server.crt
0x6fb5da 22 22 https://localhost:8000
0x6fb9a8 23 23 Got response %d: %s %s\n
0x6fecea 32 32 Failed reading response body: %s
0x6f8e6f 14 14 Failed get: %s
0x6fe2c3 30 30 Reading server certificate: %s
0x6f7521 7 7 version
0x6f85b4 12 12 HTTP version
12219
bufio
bytes
compress/flate
compress/gzip
container/list
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/elliptic
crypto/hmac
crypto/internal/randutil
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/subtle
crypto/tls
crypto/x509
crypto/x509/pkix
encoding/asn1
encoding/base64
encoding/binary
encoding/hex
encoding/pem
errors
flag
fmt
go
golang.org/x/net/http/httpguts
golang.org/x/net/http2
golang.org/x/net/http2/hpack
golang.org/x/net/idna
golang.org/x/text/secure/bidirule
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
hash
hash/crc32
internal/bytealg
internal/cpu
internal/fmtsort
internal/poll
internal/singleflight
internal/syscall/unix
internal/testlog
internal/x/crypto/chacha20poly1305
internal/x/crypto/cryptobyte
internal/x/crypto/curve25519
internal/x/crypto/hkdf
internal/x/crypto/internal/chacha20
internal/x/crypto/poly1305
internal/x/net/dns/dnsmessage
internal/x/net/http/httpguts
internal/x/net/http/httpproxy
internal/x/net/http2/hpack
internal/x/net/idna
internal/x/text/secure/bidirule
internal/x/text/transform
internal/x/text/unicode/bidi
internal/x/text/unicode/norm
io
io/ioutil
libc.so.6
libpthread.so.0
log
math
math/big
math/rand
mime
mime/multipart
mime/quotedprintable
net
net/http
net/http/httptrace
net/http/internal
net/textproto
net/url
os
path
path/filepath
reflect
runtime
runtime/cgo
runtime/debug
runtime/internal/atomic
sort
strconv
strings
sync
sync/atomic
syscall
time
unicode
unicode/utf8
EOF
RUN

NAME=Resolve all symbols on a linux go1.16 binary (arm32)
FILE=bins/golang/btcctl-linux-armv7-v0.22.0-beta
TIMEOUT=1200
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
ilq
EOF
EXPECT=<<EOF
5124
0x00270aac str.Failed_to_read_data_from_stdin:__v
0x00270d70 str.s_command:__v
0x00270db8 str.1.0
0x002710ec str.Failed_to_unmarshal_result:__v
0x0027124c str.Failed_to_format_result:__v
0x0027140c str.s_command:__v__code:__s
0x002714b0 str.The___s__command_can_only_be_used_via_websockets
0x00271580 str.Unrecognized_command___s
0x00271608 str.No_command_specified
0x0027186c str.Chain_Server_Commands:DEBUG_HTTP2
0x0027187c str.Wallet_Server_Commands____wallet_:
0x00271bbc str.cannot_use__wallet_with__regtest__btcwallet_not_yet_compatible_with_regtest
0x00271e10 str.localhost
0x00272018 str.Use__s__h_to_show_options
0x002720ec str.btcwallet.conf
0x00272188 str.Error_creating_a_default_config_file:__v
0x00272618 str.s:_Multiple_network_params_can_t_be_used_together____choose_one
0x0027271c str.Error_parsing_config_file:__v
0x002727f8 str.btcd.conf
0x00272c0c str.m___s_rpcuser_____s
0x00272c60 str.m___s_rpcpass_____s
0x00272cb4 str.m___s_notls__0_1___:_s
0x00272e4c str.rpcuser__s_rpcpass__s
0x00272edc str.notls__s
0x00273460 str.http
0x0027347c str.:
0x00273514 str.POST
0x00273574 str.Content_Type
0x002735b4 str.application_json
0x0027373c str.error_reading_json_reply:__v
0x00273834 str.d__s
0x002738bc str.s
0x00273a58 str.https
0x00273b18 str.d._d._d
0x00273b50 str.beta
0x00273c20 str.s__s
0x00273d74 str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0x00273efc str.linux
0x00273f0c str.btcd
0x00273f50 str.linux
0x00273f60 str.btcctl
0x00273fa4 str.linux
0x00273fb4 str.btcwallet
0x0027401c str.btcctl.conf
0x00274090 str.rpc.cert
0x00274104 str.rpc.cert
HEAD
0x280a6f 4 4 main
0x280a77 4 4 sort
0x280a7f 4 4 sync
0x280a87 4 4 time
0x280a8e 4 4 *int
0x280a95 4 4 AAAA
0x280a9c 4 4 Add2
0x280aa3 4 4 Addr
0x280aaa 4 4 Args
0x280ab1 4 4 Atim
TAIL
0x2e9fd2 5 5 %s+%s
0x2fe095 63 63 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-
0x2e9e6b 5 5 btcdc
0x2e9e6b 4 4 btcd
0x2ea4ca 5 5 btcct
0x2ea4ca 6 6 btcctl
0x2eb50f 5 5 btcwa
0x2eb50f 9 9 btcwallet
0x2ec40d 11 11 btcctl.conf
0x2eb053 8 8 rpc.cert
14315
bufio
bytes
compress/flate
compress/gzip
compress/zlib
container/list
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/ed25519
crypto/ed25519/internal/edwards25519
crypto/elliptic
crypto/hmac
crypto/internal/randutil
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/tls
crypto/x509
crypto/x509/pkix
encoding/asn1
encoding/base64
encoding/binary
encoding/hex
encoding/json
encoding/pem
errors
fmt
github.com/btcsuite/btcd/btcec
github.com/btcsuite/btcd/btcjson
github.com/btcsuite/btcd/chaincfg
github.com/btcsuite/btcd/chaincfg/chainhash
github.com/btcsuite/btcd/txscript
github.com/btcsuite/btcd/wire
github.com/btcsuite/btclog
github.com/btcsuite/btcutil
github.com/btcsuite/btcutil/base58
github.com/btcsuite/go-socks/socks
github.com/jessevdk/go-flags
golang.org/x/crypto/chacha20
golang.org/x/crypto/chacha20poly1305
golang.org/x/crypto/cryptobyte
golang.org/x/crypto/curve25519
golang.org/x/crypto/hkdf
golang.org/x/crypto/poly1305
golang.org/x/crypto/ripemd160
golang.org/x/net/dns/dnsmessage
golang.org/x/net/http/httpguts
golang.org/x/net/http/httpproxy
golang.org/x/net/http2/hpack
golang.org/x/net/idna
golang.org/x/text/secure/bidirule
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
hash/adler32
hash/crc32
internal/bytealg
internal/cpu
internal/fmtsort
internal/oserror
internal/poll
internal/reflectlite
internal/singleflight
internal/syscall/unix
internal/testlog
io
io/fs
io/ioutil
log
math
math/big
math/bits
math/rand
mime
mime/multipart
net
net/http
net/http/internal
net/textproto
net/url
os
os/user
path
path/filepath
reflect
regexp
regexp/syntax
runtime
runtime/debug
runtime/internal/atomic
sort
strconv
strings
sync
sync/atomic
syscall
time
unicode
unicode/utf16
unicode/utf8
EOF
RUN

NAME=Resolve all symbols on a linux go1.16 binary (arm64)
FILE=bins/golang/btcctl-linux-arm64-v0.22.0-beta
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
EOF
EXPECT=<<EOF
5070
0x0026b000 str.s_command:__v
0x0026b04c str.1.0
0x0026b310 str.tls:_invalid_server_key_share
0x0026b314 str.Failed_to_unmarshal_result:__v
0x0026b444 str.Failed_to_format_result:__v
0x0026b5dc str.s_command:__v__code:__s
0x0026b730 str.Failed_to_read_data_from_stdin:__v
0x0026b884 str.Not_enough_lines_provided_on_stdin
0x0026b998 str.The___s__command_can_only_be_used_via_websockets
0x0026b9d0 str.Specify__l_to_list_available_commands
0x0026ba70 str.Unrecognized_command___s
0x0026baa8 str.Specify__l_to_list_available_commands
0x0026bb00 str.No_command_specified
0x0026bc28 str.Chain_Server_Commands:DEBUG_HTTP2
0x0026bc3c str.Wallet_Server_Commands____wallet_:
0x0026bf1c str.testnet3
0x0026bf40 str.18334
0x0026c030 str.simnet
0x0026c054 str.18556
0x0026c064 str.regtest
0x0026c084 str.18334
0x0026c090 str.cannot_use__wallet_with__regtest__btcwallet_not_yet_compatible_with_regtest
0x0026c100 str.8334
0x0026c2c8 str.localhost
0x0026c2d0 str.localhost
0x0026c520 str.Use__s__h_to_show_options
0x0026c5f4 str.btcwallet.conf
0x0026c688 str.Error_creating_a_default_config_file:__v
0x0026c8ac str.testnet3
0x0026c8b4 str.mainnet
0x0026c8c4 str.simnet
0x0026c8d4 str.regtest
0x0026cad4 str.loadConfig
0x0026cae0 str.profilealloc_called_without_a_P_or_outside_bootstrapping
0x0026cae4 str.s:_Multiple_network_params_can_t_be_used_together____choose_one
0x0026cbd0 str.tls:_invalid_server_key_share
0x0026cbd4 str.Error_parsing_config_file:__v
0x0026ccb8 str.btcd.conf
0x0026cd6c str.version
0x0026cec4 str.The_special_parameter_____indicates_that_a_parameter_should_be_read_from_the_next_unread_line_from_standard_input.
0x0026d0a8 str.m___s_rpcuser_____s
0x0026d0fc str.m___s_rpcpass_____s
0x0026d150 str.m___s_notls__0_1___:_s
0x0026d2e0 str.rpcuser__s_rpcpass__s
0x0026d368 str.notls__s
0x0026d900 str.http
0x0026d908 str.https
0x0026d90c str.http
0x0026d928 str.:
0x0026d9c4 str.POST
0x0026da28 str.Content_Type
0x0026da70 str.application_json
0x0026dbe8 str.error_reading_json_reply:__v
0x0026dcec str.d__s
0x0026dd70 str.s
0x0026df84 str.d._d._d
0x0026dfc0 str.beta
0x0026e0a0 str.s__s
0x0026e1dc str.profilealloc_called_without_a_P_or_outside_bootstrapping
0x0026e1e0 str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0x0026e370 str.linux
0x0026e384 str.btcd
0x0026e3d0 str.linux
0x0026e3e4 str.btcctl
0x0026e430 str.linux
0x0026e444 str.btcwallet
0x0026e4b8 str.btcctl.conf
0x0026e53c str.rpc.cert
0x0026e5c0 str.rpc.cert
HEAD
0x270767 4 4 main
0x27076f 4 4 sort
0x270777 4 4 sync
0x27077f 4 4 time
0x270786 4 4 *int
0x27078d 4 4 AAAA
0x270794 4 4 Add2
0x27079b 4 4 Addr
0x2707a2 4 4 Args
0x2707a9 4 4 Atim
TAIL
0x306b9a 5 5 %s+%s
0x31abbf 63 63 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-
0x306a26 5 5 btcdc
0x306a26 4 4 btcd
0x30708d 5 5 btcct
0x30708d 6 6 btcctl
0x308060 5 5 btcwa
0x308060 9 9 btcwallet
0x308f22 11 11 btcctl.conf
0x307bd6 8 8 rpc.cert
14368
EOF
RUN

NAME=Resolve all symbols on a stripped mach0 go1.18 binary (arm64)
FILE=bins/golang/hello.mach0.stripped
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ sym.go.runtime.panicwrap ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
izq~ slice bounds out of range
iI~compiler
ilq
EOF
EXPECT=<<EOF
1429
0x100006dd8 str.value_method
0x100006e48 str.called_using_nil
0x100006e64 str.pointer
0x100006eac str.panicwrap:_no___in
0x1000076d0 str.internal_error___misuse_of_itab
HEAD
0x1001822b3 46 46 \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff
0x10008b966 31 31 fmt: unknown base; can't happen
0x100087f8a 11 11 unreachable
0x10008e827 71 71 too many concurrent operations on a single file or socket (max 1048575)
0x10008a75e 25 25 inconsistent poll.fdMutex
0x10008b332 29 29 reflect: Elem of invalid type
0x10008b740 30 30 reflect: Len of non-array type
0x100087ddd 11 11 Hello Rizin
0x1000879fd 9 9 invalid n
0x10008880c 15 15 invalid argSize
TAIL
0x100088c1d 10 10 0123456789
0x100088c1d 17 17 0123456789abcdefx
0x100087058 5 5 <nil>
0x100087277 6 6 String
0x10008707b 5 5 Error
0x1000875ed 8 8 GoString
0x100087217 6 6 Format
0x1000872ad 6 6 []byte
0x10008ca10 36 36 syntax error scanning complex number
0x10008b454 29 29 syntax error scanning boolean
1709
0x10008bada 31 31 slice bounds out of range [:%x]
0x10008babb 31 31 slice bounds out of range [%x:]
0x10008be19 32 32 slice bounds out of range [::%x]
0x10008bdf9 32 32 slice bounds out of range [:%x:]
0x10008bdd9 32 32 slice bounds out of range [%x::]
0x10008dbfa 46 46 slice bounds out of range [:%x] with length %y
0x10008ddcf 48 48 slice bounds out of range [:%x] with capacity %y
0x10008c235 33 33 slice bounds out of range [%x:%y]
0x10008dd40 47 47 slice bounds out of range [::%x] with length %y
0x10008dfe8 49 49 slice bounds out of range [::%x] with capacity %y
0x10008c5a0 34 34 slice bounds out of range [:%x:%y]
0x10008c57e 34 34 slice bounds out of range [%x:%y:]
0x10008a871 25 25 slice bounds out of range
compiler go1.18 (cmd -compiler=gc CGO_ENABLED=1 CGO_CFLAGS= CGO_CPPFLAGS= CGO_CXXFLAGS= CGO_LDFLAGS= GOARCH=arm64 GOOS=darwin)
/usr/lib/libSystem.B.dylib
errors
fmt
go
internal/bytealg
internal/cpu
internal/fmtsort
internal/itoa
internal/oserror
internal/poll
internal/reflectlite
internal/syscall/unix
internal/testlog
io
io/fs
os
path
reflect
runtime
runtime/debug
sort
strconv
sync
sync/atomic
syscall
time
unicode
unicode/utf8
EOF
RUN

NAME=Resolve all symbols on a stripped PE go1.12 binary (x64)
FILE=bins/golang/hello_go_strip.exe
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
iI~compiler
ilq
EOF
EXPECT=<<EOF
1788
0x004a699b str.hello__hacktivity
0x004a69d5 str.reflect.__funcTypeFixed64_.AssignableTo
HEAD
0x4a7323 5 4 sort
0x4a732b 5 4 sync
0x4a7333 5 4 time
0x4a733a 4 4 *int
0x4a7341 4 4 Addr
0x4a7348 4 4 Bits
0x4a734f 4 4 Bool
0x4a7356 4 4 Call
0x4a735d 4 4 Data
0x4a7364 4 4 Elem
TAIL
0x4cc34c 11 11 /dev/stderr
0x4d4101 55 55 os: invalid use of WriteAt on file opened with O_APPEND
0x4cd67f 17 17 0123456789abcdefx
0x4cd66e 17 17 0123456789ABCDEFX
0x4cb67c 5 5 <nil>
0x4cb8cc 6 6 []byte
0x4cf0eb 23 23 <invalid reflect.Value>
0x4d247e 36 36 syntax error scanning complex number
0x4d0da9 29 29 syntax error scanning boolean
0x4cdc0f 18 18 hello, hacktivity\n
9570
compiler go1.15 Linker 03.00
errors
fmt
go
internal/bytealg
internal/cpu
internal/fmtsort
internal/oserror
internal/poll
internal/reflectlite
internal/syscall/windows
internal/syscall/windows/registry
internal/syscall/windows/sysdll
io
kernel32.dll
math
os
reflect
runtime
runtime/debug
runtime/internal/atomic
runtime/internal/sys
sort
strconv
sync
sync/atomic
syscall
time
unicode
unicode/utf16
unicode/utf8
EOF
RUN

NAME=Parse Golang 1.18 BuildInfo ELF
FILE=bins/golang/GoReSym_118_tip_stripped
CMDS=iI~compiler
EXPECT=<<EOF
compiler devel go1.18-2d1d548 Tue Dec 21 03:55:43 2021 +0000 (path github.com/stevemk14ebr/GoReSym mod github.com/stevemk14ebr/GoReSym (devel)  dep golang.org/x/arch v0.0.0-20201008161808-52c3e6f60cff h1:XmKBi9R6duxOB3lfc72wyrwiOY7X2Jl1wuI+RFOyMDE= -compiler=gc -ldflags=-s -w CGO_ENABLED=1 CGO_CFLAGS= CGO_CPPFLAGS= CGO_CXXFLAGS= CGO_LDFLAGS= GOARCH=amd64 GOOS=linux GOAMD64=v1 vcs=git vcs.revision=4bd670890aee5a14e36be1a72d19ca8573f2433b vcs.time=2021-12-06T17:40:21Z vcs.modified=true)
EOF
RUN


NAME=Parse Golang 1.18 MIPS BE Strings
FILE=bins/golang/go-re-sample-linux-mips
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x000be5ec      lui   v1, 0xd ; 0xd3417 ; "foogc gp in intmapnilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFLisu"
| 0x000be670      lui   at, 0xd ; 0xd3860 ; "enableerrno objectselectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs dying="
| 0x000be6a8      lui   v1, 0xd ; 0xd3503 ; "nameprofroots + sbrktrueuint  -%s ...\n MB,  and  max= ms,  ptr  tab= top=(nil), fp:1562578125<nil>AdlamBamumBatakBuhidDograErro"
| 0x000be700      lui   v0, 0xd ; 0xd340e ; "barendfinfoogc gp in intmapnilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOG"
| 0x000be784      lui   at, 0xd ; 0xd360f ; "levellink lo   mheappanicpc   r0   r1   r10  r11  r12  r13  r14  r15  r16  r17  r18  r19  r2   r20  r21  r22  r23  r24  r25  r26"
| 0x000be7dc      lui   v0, 0xf ; 0xd914e ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x000be8e4      lui   v0, 0xf ; 0xd54fc ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x000be940      lui   v0, 0xf ; 0xd3aae ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= pointer stack=[ status ) errno=48828125"
| 0x000be9d4      lui   a0, 0xf ; 0xd38af ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000beab8      lui   v0, 0xf ; 0xd550c ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x000beb14      lui   v0, 0xf ; 0xd3ca6 ; "  enable: (forced) B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ runtime= "
| 0x000beb9c      lui   v0, 0xf ; 0xd38a8 ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x000bec38      lui   a0, 0xf ; 0xd38af ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000becbc      lui   at, 0xf ; 0xd914e ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Parse Golang 1.18 MIPS LE Strings
FILE=bins/golang/go-re-sample-linux-mipsle
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x000be5d0      lui   v1, 0xd ; 0xd3416 ; "foogc gp in intmapnilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFLisu"
| 0x000be654      lui   at, 0xd ; 0xd385f ; "enableerrno objectselectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs dying="
| 0x000be68c      lui   v1, 0xd ; 0xd3502 ; "nameprofroots + sbrktrueuint  -%s ...\n MB,  and  max= ms,  ptr  tab= top=(nil), fp:1562578125<nil>AdlamBamumBatakBuhidDograErro"
| 0x000be6e4      lui   v0, 0xd ; 0xd340d ; "barendfinfoogc gp in intmapnilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOG"
| 0x000be768      lui   at, 0xd ; 0xd360e ; "levellink lo   mheappanicpc   r0   r1   r10  r11  r12  r13  r14  r15  r16  r17  r18  r19  r2   r20  r21  r22  r23  r24  r25  r26"
| 0x000be7c0      lui   v0, 0xf ; 0xd914d ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x000be8c8      lui   v0, 0xf ; 0xd54fb ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x000be924      lui   v0, 0xf ; 0xd3aad ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= pointer stack=[ status ) errno=48828125"
| 0x000be9b8      lui   a0, 0xf ; 0xd38ae ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000bea9c      lui   v0, 0xf ; 0xd550b ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x000beaf8      lui   v0, 0xf ; 0xd3ca5 ; "  enable: (forced) B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ runtime= "
| 0x000beb7c      lui   v0, 0xf ; 0xd38a7 ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x000bec18      lui   a0, 0xf ; 0xd38ae ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000bec9c      lui   at, 0xf ; 0xd914d ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Parse Golang 1.18 MIPS64 BE Strings
FILE=bins/golang/go-re-sample-linux-mips64
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x000c0378      lui   v1, 0xe ; 0xe7d69 ; "foogc gp in intmapmsanilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFL"
| 0x000c040c      lui   at, 0xf ; 0xe81b6 ; "enableerrno objectselectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs dying="
| 0x000c0448      lui   v1, 0xe ; 0xe7e54 ; "nameprofroots + sbrktrueuint  -%s ...\n MB,  and  cnt= max= ms,  ptr  tab= top=(nil), fp:1562578125<nil>AdlamBamumBatakBuhidDogr"
| 0x000c04a8      lui   v0, 0xe ; 0xe7d60 ; "barendfinfoogc gp in intmapmsanilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDash"
| 0x000c053c      lui   at, 0xe ; 0xe7f65 ; "levellink lo   mheappanicpc   r0   r1   r10  r11  r12  r13  r14  r15  r16  r17  r18  r19  r2   r20  r21  r22  r23  r24  r25  r26"
| 0x000c05a0      lui   v0, 0x11 ; 0xedacb ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x000c06c4      lui   v0, 0x11 ; 0xe9e6b ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x000c0730      lui   v0, 0x11 ; 0xe8404 ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= packed= pointer stack=[ status ) errno="
| 0x000c07dc      lui   at, 0x11 ; 0xe8205 ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000c08d8      lui   v0, 0x11 ; 0xe9e7b ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x000c0944      lui   v0, 0x11 ; 0xe8604 ; "  enable: (forced) -> node= B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ "
| 0x000c09e4      lui   v0, 0x11 ; 0xe81fe ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x000c0a98      lui   at, 0x11 ; 0xe8205 ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000c0b34      lui   at, 0x11 ; 0xedacb ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Parse Golang 1.18 MIPS64 LE Strings
FILE=bins/golang/go-re-sample-linux-mips64le
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x000c0360      lui   v1, 0xe ; 0xe7d6b ; "foogc gp in intmapmsanilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFL"
| 0x000c03f4      lui   at, 0xf ; 0xe81b8 ; "enableerrno objectselectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs dying="
| 0x000c0430      lui   v1, 0xe ; 0xe7e56 ; "nameprofroots + sbrktrueuint  -%s ...\n MB,  and  cnt= max= ms,  ptr  tab= top=(nil), fp:1562578125<nil>AdlamBamumBatakBuhidDogr"
| 0x000c0490      lui   v0, 0xe ; 0xe7d62 ; "barendfinfoogc gp in intmapmsanilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDash"
| 0x000c0524      lui   at, 0xe ; 0xe7f67 ; "levellink lo   mheappanicpc   r0   r1   r10  r11  r12  r13  r14  r15  r16  r17  r18  r19  r2   r20  r21  r22  r23  r24  r25  r26"
| 0x000c0588      lui   v0, 0x11 ; 0xedacd ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x000c06ac      lui   v0, 0x11 ; 0xe9e6d ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x000c0718      lui   v0, 0x11 ; 0xe8406 ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= packed= pointer stack=[ status ) errno="
| 0x000c07c4      lui   at, 0x11 ; 0xe8207 ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000c08c0      lui   v0, 0x11 ; 0xe9e7d ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x000c092c      lui   v0, 0x11 ; 0xe8606 ; "  enable: (forced) -> node= B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ "
| 0x000c09c8      lui   v0, 0x11 ; 0xe8200 ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x000c0a7c      lui   at, 0x11 ; 0xe8207 ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x000c0b18      lui   at, 0x11 ; 0xedacd ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Parse Golang 1.18 PPC64 BE Strings
FILE=bins/golang/go-re-sample-linux-ppc64
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x00099f7c      lis   r5, 0xb ; 0xb7d3f ; "foogc gp in intmapnilobjpc=ptrscvµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFL"
| 0x00099fec      lis   r4, 0xc ; 0xb8198 ; "enableerrno objectpower9selectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs "
| 0x0009a00c      lis   r4, 0xb ; go-re-sample.go:12 ; 0xb7e32 ; "nameprofroots + sbrktrueuint  -%s ...\n MB,  and  cnt= max= ms,  ptr  tab= top=(nil), fp:1562578125<nil>AdlamBamumBatakBuhidDogr"
| 0x0009a050      lis   r9, 0xb ; 0xb7d36 ; "barendfinfoogc gp in intmapnilobjpc=ptrscvµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDash"
| 0x0009a0c0      lis   r4, 0xb ; 0xb7f48 ; "levellink mheappanicpc   r0   r1   r10  r11  r12  r13  r14  r15  r16  r17  r18  r19  r2   r20  r21  r22  r23  r24  r25  r26  r27"
| 0x0009a108      lis   r9, 0xd ; 0xbd867 ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x0009a1cc      lis   r8, 0xd ; 0xb9bf0 ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x0009a218      lis   r8, 0xd ; 0xb83ec ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= packed= pointer stack=[ status ) errno="
| 0x0009a290      lis   r7, 0xd ; 0xb81ed ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x0009a330      lis   r8, 0xd ; 0xb9c00 ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x0009a37c      lis   r8, 0xd ; 0xb85f0 ; "  enable: (forced) -> node= B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ "
| 0x0009a3f4      lis   r8, 0xd ; 0xb81e6 ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x0009a470      lis   r7, 0xd ; 0xb81ed ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x0009a4cc      lis   r8, 0xd ; 0xbd867 ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Parse Golang 1.18 PPC64 LE Strings
FILE=bins/golang/go-re-sample-linux-ppc64le
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x00099eac      lis   r5, 0xb ; 0xb7d60 ; "foogc gp in intmapnilobjpc=ptrscvµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFL"
| 0x00099f1c      lis   r4, 0xc ; 0xb81b9 ; "enableerrno objectpower9selectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs "
| 0x00099f3c      lis   r4, 0xb ; go-re-sample.go:12 ; 0xb7e53 ; "nameprofroots + sbrktrueuint  -%s ...\n MB,  and  cnt= max= ms,  ptr  tab= top=(nil), fp:1562578125<nil>AdlamBamumBatakBuhidDogr"
| 0x00099f80      lis   r9, 0xb ; 0xb7d57 ; "barendfinfoogc gp in intmapnilobjpc=ptrscvµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDash"
| 0x00099ff0      lis   r4, 0xb ; 0xb7f69 ; "levellink mheappanicpc   r0   r1   r10  r11  r12  r13  r14  r15  r16  r17  r18  r19  r2   r20  r21  r22  r23  r24  r25  r26  r27"
| 0x0009a038      lis   r9, 0xd ; 0xbd845 ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x0009a0f0      lis   r8, 0xd ; 0xb9bf3 ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x0009a13c      lis   r8, 0xd ; 0xb840d ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= packed= pointer stack=[ status ) errno="
| 0x0009a1b4      lis   r7, 0xd ; 0xb820e ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x0009a248      lis   r8, 0xd ; 0xb9c03 ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x0009a294      lis   r8, 0xd ; 0xb8610 ; "  enable: (forced) -> node= B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ "
| 0x0009a308      lis   r8, 0xd ; 0xb8207 ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x0009a384      lis   r7, 0xd ; 0xb820e ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x0009a3e0      lis   r8, 0xd ; 0xbd845 ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Parse Golang 1.18 riscv64 Strings
FILE=bins/golang/go-re-sample-linux-riscv64
CMDS=<<EOF
aalg
s main
e asm.cmt.col=0
pdr~"
EOF
EXPECT=<<EOF
| 0x00099898      auipc t2, 0x1e ; 0xb7b60 ; "foogc gp in intmapnilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOGCLEAFLisu"
| 0x00099910      auipc t0, 0x1e ; 0xb7f74 ; "enableerrno objectselectstringstructsweep sysmontimersuint16uint32uint64  name:  tail: (scan  (scan) MB in  Value> allocs dying="
| 0x00099944      auipc t2, 0x1e ; 0xb7c70 ; "namepc  profra  roots + s0  s1  s10 s11 s2  s3  s4  s5  s6  s7  s8  s9  sbrksp  t0  t1  t2  t3  t4  t5  t6  tp  trueuint  -%s .."
| 0x00099998      auipc t2, 0x1e ; 0xb7b57 ; "barendfinfoogc gp in intmapnilobjpc=ptrµsμs <== at  fp= is  lr: of  on  pc= sp: sp=) = ) m=+Inf,r2=-Inf3125: p=AhomChamDashGOG"
| 0x00099a10      auipc t0, 0x1e ; 0xb7dd8 ; "levelmheappanicscav schedsleepslicesudogsweeptracetrap:uint8valuewrite B ->  Value addr= alloc base  code= ctxt: curg= free  goi"
| 0x00099a60      auipc t1, 0x3e ; 0xbd602 ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
| 0x00099b4c      auipc t1, 0x3e ; 0xb99cd ; "subcommand 'bar'subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABC"
| 0x00099ba4      auipc t1, 0x3e ; 0xb81c2 ; "  level: bytes,  etypes  is not  maxpc=  mcount= minLC=  minutes nalloc= newval= nfreed= packed= pointer stack=[ status ) errno="
| 0x00099c30      auipc s0, 0x3e ; 0xb7fc3 ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x00099cf8      auipc t1, 0x3e ; 0xb99dd ; "subcommand 'foo'time: bad [0-9]*workbuf is empty spinningthreads=, 0, {interval: {, p.searchAddr = 0123456789ABCDEFX0123456789ab"
| 0x00099d50      auipc t1, 0x3e ; 0xb83c2 ; "  enable: (forced) -> node= B exp.)  B work ( blocked= in use)\n lockedg= lockedm= m->curg= marked   method:  ms cpu,  not in [ "
| 0x00099dd0      auipc t1, 0x3e ; 0xb7fbc ; "  name:  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=,"
| 0x00099e64      auipc s0, 0x3e ; 0xb7fc3 ; "  tail: (scan  (scan) MB in  Value> allocs dying= locks= m->g0= nmsys= pad1=  pad2=  s=nil\n text=  zombie% CPU ((PANIC=, goid=,"
| 0x00099edc      auipc t0, 0x3e ; 0xbd602 ; "expected 'foo' or 'bar' subcommandsfile type does not support deadlinefindrunnable: netpoll with spinninggreyobject: obj not poi"
EOF
RUN

NAME=Resolve all symbols on a stripped windows go1.21 binary
FILE=bins/golang/go-re-sample-windows-amd64-go121.exe
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
EOF
EXPECT=<<EOF
1604
0x00490237 str.foo
0x00490292 str.enable
0x004902a0 str.enable
0x004902b0 str.name
0x004902c0 str.name
0x004902f2 str.bar
0x0049034d str.level
0x0049035b str.level
0x00490448 str.subcommand__bar
0x00490495 str.level:
0x0049051d str.tail:
0x004905c2 str.subcommand__foo
0x00490615 str.enable:
0x00490692 str.name:
0x0049071e str.tail:
0x00490780 str.expected__foo__or__bar__subcommands
HEAD
0x4911d6 4 4 tls\b
0x491244 4 4 flag
0x49124a 5 4 Name
0x491250 4 4 keys
0x491256 4 4 Args
0x49125c 4 4 Bool
0x491262 4 4 Func
0x491268 4 4 Init
0x49126e 4 4 NArg
0x491274 5 4 Uint
TAIL
0x4b2609 27 27 flag needs an argument: -%s
0x4b3a8f 33 33 invalid value %q for flag -%s: %v
0x4b25ee 27 27 invalid boolean flag %s: %v
0x4b4325 36 36 invalid boolean value %q for -%s: %v
0x4b3e4c 34 34 flag provided but not defined: -%s
0x4ae39e 3 3 foo
0x4ae4d9 5 5 level
0x4ae5d3 6 6 enable
0x4ae40d 4 4 name
0x4ae3a1 3 3 bar
20681
EOF
RUN

NAME=Resolve all symbols on a stripped linux go1.21 binary
FILE=bins/golang/go-re-sample-linux-amd64-go121
CMDS=<<EOF
aalg
fl~sym.go.~?
pdfs @ main ~str.
# Attempt to get some reference strings when the count changes with izq.
echo HEAD
izq~:..10
echo TAIL
izq~:-10..
izq~?
EOF
EXPECT=<<EOF
1587
0x004875b7 str.foo
0x00487612 str.enable
0x00487620 str.enable
0x00487630 str.name
0x00487640 str.name
0x00487672 str.bar
0x004876cd str.level
0x004876db str.level
0x004877c8 str.subcommand__bar
0x00487815 str.level:
0x0048789d str.tail:
0x00487942 str.subcommand__foo
0x00487995 str.enable:
0x00487a12 str.name:
0x00487a9e str.tail:
0x00487b00 str.expected__foo__or__bar__subcommands
HEAD
0x488211 4 4 flag
0x488217 4 4 Name
0x48821d 4 4 keys
0x488223 4 4 Args
0x488229 4 4 Bool
0x48822f 4 4 Func
0x488235 4 4 Init
0x48823b 4 4 NArg
0x488241 4 4 Uint
0x488247 4 4 name
TAIL
0x4a6752 27 27 flag needs an argument: -%s
0x4a7bf3 33 33 invalid value %q for flag -%s: %v
0x4a6737 27 27 invalid boolean flag %s: %v
0x4a84a8 36 36 invalid boolean value %q for -%s: %v
0x4a7ff2 34 34 flag provided but not defined: -%s
0x4a2cde 3 3 foo
0x4a2e19 5 5 level
0x4a2f0e 6 6 enable
0x4a2d4d 4 4 name
0x4a2ce1 3 3 bar
3249
EOF
RUN
