Skip to content

Commit c02a814

Browse files
authored
internal/wasm-tools, syscall: update to [email protected] (#4577)
* internal/wasm-tools, internal/cm: update wasm-tools-go to v0.3.1 and regenerate bindings * syscall: use new (cm.Result).Result() method instead of OK() and Err()
1 parent 5862b48 commit c02a814

File tree

4 files changed

+90
-86
lines changed

4 files changed

+90
-86
lines changed

internal/wasm-tools/go.mod

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module github.com/tinygo-org/tinygo/internal/tools
22

33
go 1.22.4
44

5-
require github.com/bytecodealliance/wasm-tools-go v0.3.0
5+
require github.com/bytecodealliance/wasm-tools-go v0.3.1
66

77
require (
88
github.com/coreos/go-semver v0.3.1 // indirect
@@ -12,8 +12,7 @@ require (
1212
github.com/regclient/regclient v0.7.1 // indirect
1313
github.com/sirupsen/logrus v1.9.3 // indirect
1414
github.com/ulikunitz/xz v0.5.12 // indirect
15-
github.com/urfave/cli/v3 v3.0.0-alpha9 // indirect
16-
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
15+
github.com/urfave/cli/v3 v3.0.0-alpha9.2 // indirect
1716
golang.org/x/mod v0.21.0 // indirect
1817
golang.org/x/sys v0.26.0 // indirect
1918
)

internal/wasm-tools/go.sum

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
github.com/bytecodealliance/wasm-tools-go v0.3.0 h1:9aeDFYpbi3gtIW/nJCH+P+LhFMqezGoOfzqbUZLadho=
2-
github.com/bytecodealliance/wasm-tools-go v0.3.0/go.mod h1:VY+9FlpLi6jnhCrZLkyJjF9rjU4aEekgaRTk28MS2JE=
1+
github.com/bytecodealliance/wasm-tools-go v0.3.1 h1:9Q9PjSzkbiVmkUvZ7nYCfJ02mcQDBalxycA3s8g7kR4=
2+
github.com/bytecodealliance/wasm-tools-go v0.3.1/go.mod h1:vNAQ8DAEp6xvvk+TUHah5DslLEa76f4H6e737OeaxuY=
33
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
44
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
55
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -23,14 +23,12 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
2323
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
2424
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
2525
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
26-
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
27-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
26+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
27+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
2828
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
2929
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
30-
github.com/urfave/cli/v3 v3.0.0-alpha9 h1:P0RMy5fQm1AslQS+XCmy9UknDXctOmG/q/FZkUFnJSo=
31-
github.com/urfave/cli/v3 v3.0.0-alpha9/go.mod h1:0kK/RUFHyh+yIKSfWxwheGndfnrvYSmYFVeKCh03ZUc=
32-
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
33-
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
30+
github.com/urfave/cli/v3 v3.0.0-alpha9.2 h1:CL8llQj3dGRLVQQzHxS+ZYRLanOuhyK1fXgLKD+qV+Y=
31+
github.com/urfave/cli/v3 v3.0.0-alpha9.2/go.mod h1:FnIeEMYu+ko8zP1F9Ypr3xkZMIDqW3DR92yUtY39q1Y=
3432
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
3533
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
3634
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=

src/internal/cm/result.go

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ func (r *result[Shape, OK, Err]) Err() *Err {
7171
return (*Err)(unsafe.Pointer(&r.data))
7272
}
7373

74+
// Result returns (OK, zero value of Err, false) if r represents the OK case,
75+
// or (zero value of OK, Err, true) if r represents the error case.
76+
// This does not have a pointer receiver, so it can be chained.
77+
func (r result[Shape, OK, Err]) Result() (ok OK, err Err, isErr bool) {
78+
if r.isErr {
79+
return ok, *(*Err)(unsafe.Pointer(&r.data)), true
80+
}
81+
return *(*OK)(unsafe.Pointer(&r.data)), err, false
82+
}
83+
7484
// This function is sized so it can be inlined and optimized away.
7585
func (r *result[Shape, OK, Err]) validate() {
7686
var shape Shape

src/syscall/libc_wasip2.go

+72-75
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ func readStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
162162
}
163163

164164
libcErrno = 0
165-
result := stream.in.BlockingRead(uint64(count))
166-
if err := result.Err(); err != nil {
165+
list, err, isErr := stream.in.BlockingRead(uint64(count)).Result()
166+
if isErr {
167167
if err.Closed() {
168168
libcErrno = 0
169169
return 0
@@ -174,9 +174,7 @@ func readStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
174174
return -1
175175
}
176176

177-
dst := unsafe.Slice(buf, count)
178-
list := result.OK()
179-
copy(dst, list.Slice())
177+
copy(unsafe.Slice(buf, count), list.Slice())
180178
return int(list.Len())
181179
}
182180

@@ -202,8 +200,8 @@ func writeStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
202200
if len > remaining {
203201
len = remaining
204202
}
205-
result := stream.out.BlockingWriteAndFlush(cm.ToList(src[:len]))
206-
if err := result.Err(); err != nil {
203+
_, err, isErr := stream.out.BlockingWriteAndFlush(cm.ToList(src[:len])).Result()
204+
if isErr {
207205
if err.Closed() {
208206
libcErrno = 0
209207
return 0
@@ -248,13 +246,13 @@ func pread(fd int32, buf *byte, count uint, offset int64) int {
248246
return -1
249247
}
250248

251-
result := streams.d.Read(types.FileSize(count), types.FileSize(offset))
252-
if err := result.Err(); err != nil {
253-
libcErrno = errorCodeToErrno(*err)
249+
listEOF, err, isErr := streams.d.Read(types.FileSize(count), types.FileSize(offset)).Result()
250+
if isErr {
251+
libcErrno = errorCodeToErrno(err)
254252
return -1
255253
}
256254

257-
list := result.OK().F0
255+
list := listEOF.F0
258256
copy(unsafe.Slice(buf, count), list.Slice())
259257

260258
// TODO(dgryski): EOF bool is ignored?
@@ -285,14 +283,14 @@ func pwrite(fd int32, buf *byte, count uint, offset int64) int {
285283
return -1
286284
}
287285

288-
result := streams.d.Write(cm.NewList(buf, count), types.FileSize(offset))
289-
if err := result.Err(); err != nil {
286+
n, err, isErr := streams.d.Write(cm.NewList(buf, count), types.FileSize(offset)).Result()
287+
if isErr {
290288
// TODO(dgryski):
291-
libcErrno = errorCodeToErrno(*err)
289+
libcErrno = errorCodeToErrno(err)
292290
return -1
293291
}
294292

295-
return int(*result.OK())
293+
return int(n)
296294
}
297295

298296
// ssize_t lseek(int fd, off_t offset, int whence);
@@ -321,12 +319,12 @@ func lseek(fd int32, offset int64, whence int) int64 {
321319
case 1: // SEEK_CUR
322320
stream.offset += offset
323321
case 2: // SEEK_END
324-
result := stream.d.Stat()
325-
if err := result.Err(); err != nil {
326-
libcErrno = errorCodeToErrno(*err)
322+
stat, err, isErr := stream.d.Stat().Result()
323+
if isErr {
324+
libcErrno = errorCodeToErrno(err)
327325
return -1
328326
}
329-
stream.offset = int64(result.OK().Size) + offset
327+
stream.offset = int64(stat.Size) + offset
330328
}
331329

332330
return int64(stream.offset)
@@ -439,9 +437,9 @@ func mkdir(pathname *byte, mode uint32) int32 {
439437
return -1
440438
}
441439

442-
result := dir.d.CreateDirectoryAt(relPath)
443-
if err := result.Err(); err != nil {
444-
libcErrno = errorCodeToErrno(*err)
440+
_, err, isErr := dir.d.CreateDirectoryAt(relPath).Result()
441+
if isErr {
442+
libcErrno = errorCodeToErrno(err)
445443
return -1
446444
}
447445

@@ -459,9 +457,9 @@ func rmdir(pathname *byte) int32 {
459457
return -1
460458
}
461459

462-
result := dir.d.RemoveDirectoryAt(relPath)
463-
if err := result.Err(); err != nil {
464-
libcErrno = errorCodeToErrno(*err)
460+
_, err, isErr := dir.d.RemoveDirectoryAt(relPath).Result()
461+
if isErr {
462+
libcErrno = errorCodeToErrno(err)
465463
return -1
466464
}
467465

@@ -486,9 +484,9 @@ func rename(from, to *byte) int32 {
486484
return -1
487485
}
488486

489-
result := fromDir.d.RenameAt(fromRelPath, toDir.d, toRelPath)
490-
if err := result.Err(); err != nil {
491-
libcErrno = errorCodeToErrno(*err)
487+
_, err, isErr := fromDir.d.RenameAt(fromRelPath, toDir.d, toRelPath).Result()
488+
if isErr {
489+
libcErrno = errorCodeToErrno(err)
492490
return -1
493491
}
494492

@@ -520,9 +518,9 @@ func symlink(from, to *byte) int32 {
520518

521519
// TODO(dgryski): check fromDir == toDir?
522520

523-
result := fromDir.d.SymlinkAt(fromRelPath, toRelPath)
524-
if err := result.Err(); err != nil {
525-
libcErrno = errorCodeToErrno(*err)
521+
_, err, isErr := fromDir.d.SymlinkAt(fromRelPath, toRelPath).Result()
522+
if isErr {
523+
libcErrno = errorCodeToErrno(err)
526524
return -1
527525
}
528526

@@ -554,9 +552,9 @@ func link(from, to *byte) int32 {
554552

555553
// TODO(dgryski): check fromDir == toDir?
556554

557-
result := fromDir.d.LinkAt(0, fromRelPath, toDir.d, toRelPath)
558-
if err := result.Err(); err != nil {
559-
libcErrno = errorCodeToErrno(*err)
555+
_, err, isErr := fromDir.d.LinkAt(0, fromRelPath, toDir.d, toRelPath).Result()
556+
if isErr {
557+
libcErrno = errorCodeToErrno(err)
560558
return -1
561559
}
562560

@@ -587,9 +585,9 @@ func fsync(fd int32) int32 {
587585
return -1
588586
}
589587

590-
result := streams.d.SyncData()
591-
if err := result.Err(); err != nil {
592-
libcErrno = errorCodeToErrno(*err)
588+
_, err, isErr := streams.d.SyncData().Result()
589+
if isErr {
590+
libcErrno = errorCodeToErrno(err)
593591
return -1
594592
}
595593

@@ -607,13 +605,12 @@ func readlink(pathname *byte, buf *byte, count uint) int {
607605
return -1
608606
}
609607

610-
result := dir.d.ReadLinkAt(relPath)
611-
if err := result.Err(); err != nil {
612-
libcErrno = errorCodeToErrno(*err)
608+
s, err, isErr := dir.d.ReadLinkAt(relPath).Result()
609+
if isErr {
610+
libcErrno = errorCodeToErrno(err)
613611
return -1
614612
}
615613

616-
s := *result.OK()
617614
size := uintptr(count)
618615
if size > uintptr(len(s)) {
619616
size = uintptr(len(s))
@@ -634,9 +631,9 @@ func unlink(pathname *byte) int32 {
634631
return -1
635632
}
636633

637-
result := dir.d.UnlinkFileAt(relPath)
638-
if err := result.Err(); err != nil {
639-
libcErrno = errorCodeToErrno(*err)
634+
_, err, isErr := dir.d.UnlinkFileAt(relPath).Result()
635+
if isErr {
636+
libcErrno = errorCodeToErrno(err)
640637
return -1
641638
}
642639

@@ -661,13 +658,13 @@ func stat(pathname *byte, dst *Stat_t) int32 {
661658
return -1
662659
}
663660

664-
result := dir.d.StatAt(0, relPath)
665-
if err := result.Err(); err != nil {
666-
libcErrno = errorCodeToErrno(*err)
661+
stat, err, isErr := dir.d.StatAt(0, relPath).Result()
662+
if isErr {
663+
libcErrno = errorCodeToErrno(err)
667664
return -1
668665
}
669666

670-
setStatFromWASIStat(dst, result.OK())
667+
setStatFromWASIStat(dst, &stat)
671668

672669
return 0
673670
}
@@ -690,13 +687,13 @@ func fstat(fd int32, dst *Stat_t) int32 {
690687
libcErrno = EBADF
691688
return -1
692689
}
693-
result := stream.d.Stat()
694-
if err := result.Err(); err != nil {
695-
libcErrno = errorCodeToErrno(*err)
690+
stat, err, isErr := stream.d.Stat().Result()
691+
if isErr {
692+
libcErrno = errorCodeToErrno(err)
696693
return -1
697694
}
698695

699-
setStatFromWASIStat(dst, result.OK())
696+
setStatFromWASIStat(dst, &stat)
700697

701698
return 0
702699
}
@@ -745,13 +742,13 @@ func lstat(pathname *byte, dst *Stat_t) int32 {
745742
return -1
746743
}
747744

748-
result := dir.d.StatAt(0, relPath)
749-
if err := result.Err(); err != nil {
750-
libcErrno = errorCodeToErrno(*err)
745+
stat, err, isErr := dir.d.StatAt(0, relPath).Result()
746+
if isErr {
747+
libcErrno = errorCodeToErrno(err)
751748
return -1
752749
}
753750

754-
setStatFromWASIStat(dst, result.OK())
751+
setStatFromWASIStat(dst, &stat)
755752

756753
return 0
757754
}
@@ -981,25 +978,25 @@ func open(pathname *byte, flags int32, mode uint32) int32 {
981978
pflags &^= types.PathFlagsSymlinkFollow
982979
}
983980

984-
result := dir.d.OpenAt(pflags, relPath, oflags, dflags)
985-
if err := result.Err(); err != nil {
986-
libcErrno = errorCodeToErrno(*err)
981+
descriptor, err, isErr := dir.d.OpenAt(pflags, relPath, oflags, dflags).Result()
982+
if isErr {
983+
libcErrno = errorCodeToErrno(err)
987984
return -1
988985
}
989986

990987
stream := wasiFile{
991-
d: *result.OK(),
988+
d: descriptor,
992989
oflag: flags,
993990
refs: 1,
994991
}
995992

996993
if flags&(O_WRONLY|O_APPEND) == (O_WRONLY | O_APPEND) {
997-
result := stream.d.Stat()
998-
if err := result.Err(); err != nil {
999-
libcErrno = errorCodeToErrno(*err)
994+
stat, err, isErr := stream.d.Stat().Result()
995+
if isErr {
996+
libcErrno = errorCodeToErrno(err)
1000997
return -1
1001998
}
1002-
stream.offset = int64(result.OK().Size)
999+
stream.offset = int64(stat.Size)
10031000
}
10041001

10051002
libcfd := findFreeFD()
@@ -1112,13 +1109,13 @@ func fdopendir(fd int32) unsafe.Pointer {
11121109
return nil
11131110
}
11141111

1115-
result := stream.d.ReadDirectory()
1116-
if err := result.Err(); err != nil {
1117-
libcErrno = errorCodeToErrno(*err)
1112+
dir, err, isErr := stream.d.ReadDirectory().Result()
1113+
if isErr {
1114+
libcErrno = errorCodeToErrno(err)
11181115
return nil
11191116
}
11201117

1121-
return unsafe.Pointer(&libc_DIR{d: *result.OK()})
1118+
return unsafe.Pointer(&libc_DIR{d: dir})
11221119
}
11231120

11241121
// int fdclosedir(DIR *);
@@ -1153,13 +1150,13 @@ func readdir(dirp unsafe.Pointer) *Dirent {
11531150
return nil
11541151
}
11551152

1156-
result := dir.d.ReadDirectoryEntry()
1157-
if err := result.Err(); err != nil {
1158-
libcErrno = errorCodeToErrno(*err)
1153+
someEntry, err, isErr := dir.d.ReadDirectoryEntry().Result()
1154+
if isErr {
1155+
libcErrno = errorCodeToErrno(err)
11591156
return nil
11601157
}
11611158

1162-
entry := result.OK().Some()
1159+
entry := someEntry.Some()
11631160
if entry == nil {
11641161
libcErrno = 0
11651162
return nil
@@ -1311,9 +1308,9 @@ func chdir(name *byte) int {
13111308
return -1
13121309
}
13131310

1314-
result := dir.d.OpenAt(types.PathFlagsSymlinkFollow, rel, types.OpenFlagsDirectory, types.DescriptorFlagsRead)
1315-
if err := result.Err(); err != nil {
1316-
libcErrno = errorCodeToErrno(*err)
1311+
_, err, isErr := dir.d.OpenAt(types.PathFlagsSymlinkFollow, rel, types.OpenFlagsDirectory, types.DescriptorFlagsRead).Result()
1312+
if isErr {
1313+
libcErrno = errorCodeToErrno(err)
13171314
return -1
13181315
}
13191316

0 commit comments

Comments
 (0)