From 1ea952c9ffd767584c60a91d6f6d8ca603817c50 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 16 Mar 2020 08:14:39 +0100 Subject: pkg/compiler: calculate more precise sizes for arguments If we have: ioctl(fd fd, cmd int32) ioctl$FOO(fd fd, cmd const[FOO]) Currently we assume that cmd size in ioctl$FOO is sizeof(void*). However, we know that in ioctl it's specified as int32, so we can infer that the actual syscall size is 4. This massively reduces sizes of socket/setsockopt/getsockopt/ioctl and some other syscalls, which is good because we now use physical size in mutation/hints and some other places. This will also enable not morphing ioctl's into other ioctl's. Update #477 Update #502 --- sys/fuchsia/gen/amd64.go | 6 +++--- sys/fuchsia/gen/arm64.go | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'sys/fuchsia') diff --git a/sys/fuchsia/gen/amd64.go b/sys/fuchsia/gen/amd64.go index 523755247..ee86c8229 100644 --- a/sys/fuchsia/gen/amd64.go +++ b/sys/fuchsia/gen/amd64.go @@ -7089,7 +7089,7 @@ var syscalls_amd64 = []*Syscall{ }}, {Name: "zx_thread_read_state$0", CallName: "zx_thread_read_state", Args: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "zx_thread", FldName: "handle", TypeSize: 4}}, - &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 8}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 4}}}, &PtrType{TypeCommon{TypeName: "ptr", FldName: "buffer", TypeSize: 8}, &ArrayType{TypeCommon{TypeName: "array", TypeSize: 144, ArgDir: 1}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8, ArgDir: 1}}}, 1, 18, 18}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "len", TypeSize: 8}}, BitSize: 8, Path: []string{"buffer"}}, }}, @@ -7108,7 +7108,7 @@ var syscalls_amd64 = []*Syscall{ }}, {Name: "zx_thread_write_state$0", CallName: "zx_thread_write_state", Args: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "zx_thread", FldName: "handle", TypeSize: 4}}, - &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 8}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 4}}}, &PtrType{TypeCommon{TypeName: "ptr", FldName: "buffer", TypeSize: 8}, &ArrayType{TypeCommon{TypeName: "array", TypeSize: 144}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8}}}, 1, 18, 18}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "len", TypeSize: 8}}, BitSize: 8, Path: []string{"buffer"}}, }}, @@ -7475,4 +7475,4 @@ var consts_amd64 = []ConstValue{ {Name: "fuchsia_power_Status_OK"}, } -const revision_amd64 = "0246d352fea863da96a885f340a5b13a9b741cdd" +const revision_amd64 = "01d1f2350d7c83f7ad219975ca337bfad4aaadf5" diff --git a/sys/fuchsia/gen/arm64.go b/sys/fuchsia/gen/arm64.go index 27a429b92..2db5fa3b4 100644 --- a/sys/fuchsia/gen/arm64.go +++ b/sys/fuchsia/gen/arm64.go @@ -7089,7 +7089,7 @@ var syscalls_arm64 = []*Syscall{ }}, {Name: "zx_thread_read_state$0", CallName: "zx_thread_read_state", Args: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "zx_thread", FldName: "handle", TypeSize: 4}}, - &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 8}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 4}}}, &PtrType{TypeCommon{TypeName: "ptr", FldName: "buffer", TypeSize: 8}, &ArrayType{TypeCommon{TypeName: "array", TypeSize: 144, ArgDir: 1}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8, ArgDir: 1}}}, 1, 18, 18}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "len", TypeSize: 8}}, BitSize: 8, Path: []string{"buffer"}}, }}, @@ -7108,7 +7108,7 @@ var syscalls_arm64 = []*Syscall{ }}, {Name: "zx_thread_write_state$0", CallName: "zx_thread_write_state", Args: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "zx_thread", FldName: "handle", TypeSize: 4}}, - &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 8}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "kind", TypeSize: 4}}}, &PtrType{TypeCommon{TypeName: "ptr", FldName: "buffer", TypeSize: 8}, &ArrayType{TypeCommon{TypeName: "array", TypeSize: 144}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8}}}, 1, 18, 18}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize", FldName: "len", TypeSize: 8}}, BitSize: 8, Path: []string{"buffer"}}, }}, @@ -7475,4 +7475,4 @@ var consts_arm64 = []ConstValue{ {Name: "fuchsia_power_Status_OK"}, } -const revision_arm64 = "8269e2f2a47f7746691962e284c4299cfe4bcae7" +const revision_arm64 = "0b12855de96876bdb3b2df33f3a3debcd9f74b2c" -- cgit mrf-deployment