internal/cabi: support riscv64/riscv32 target-abi
This commit is contained in:
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/array_float32.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/array_float64.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/array_int16.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/array_int32.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/array_int64.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/array_int8.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
361
internal/cabi/_testdata/demo/array_pointer.go
Normal file
361
internal/cabi/_testdata/demo/array_pointer.go
Normal file
@@ -0,0 +1,361 @@
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const (
|
||||
LLGoFiles = "../wrap/array_pointer.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
func assert(info string, b bool) {
|
||||
if !b {
|
||||
printf(unsafe.StringData("Assertion failed: %s\n\000"), unsafe.StringData(info))
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
}
|
||||
|
||||
type array1 struct {
|
||||
x [1]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo1 C.demo1
|
||||
func cdemo1(a array1) array1
|
||||
|
||||
func demo1(a array1) array1 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array1{x: [1]pointer{func() pointer { var a int8 = 1; return &a}()}}
|
||||
assert("cdemo1\000", cdemo1(a) == a)
|
||||
assert("demo1\000", demo1(a) == a)
|
||||
}
|
||||
|
||||
type array2 struct {
|
||||
x [2]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo2 C.demo2
|
||||
func cdemo2(a array2) array2
|
||||
|
||||
func demo2(a array2) array2 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array2{x: [2]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}()}}
|
||||
assert("cdemo2\000", cdemo2(a) == a)
|
||||
assert("demo2\000", demo2(a) == a)
|
||||
}
|
||||
|
||||
type array3 struct {
|
||||
x [3]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo3 C.demo3
|
||||
func cdemo3(a array3) array3
|
||||
|
||||
func demo3(a array3) array3 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array3{x: [3]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}()}}
|
||||
assert("cdemo3\000", cdemo3(a) == a)
|
||||
assert("demo3\000", demo3(a) == a)
|
||||
}
|
||||
|
||||
type array4 struct {
|
||||
x [4]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo4 C.demo4
|
||||
func cdemo4(a array4) array4
|
||||
|
||||
func demo4(a array4) array4 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array4{x: [4]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}()}}
|
||||
assert("cdemo4\000", cdemo4(a) == a)
|
||||
assert("demo4\000", demo4(a) == a)
|
||||
}
|
||||
|
||||
type array5 struct {
|
||||
x [5]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo5 C.demo5
|
||||
func cdemo5(a array5) array5
|
||||
|
||||
func demo5(a array5) array5 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array5{x: [5]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}()}}
|
||||
assert("cdemo5\000", cdemo5(a) == a)
|
||||
assert("demo5\000", demo5(a) == a)
|
||||
}
|
||||
|
||||
type array6 struct {
|
||||
x [6]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo6 C.demo6
|
||||
func cdemo6(a array6) array6
|
||||
|
||||
func demo6(a array6) array6 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array6{x: [6]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}()}}
|
||||
assert("cdemo6\000", cdemo6(a) == a)
|
||||
assert("demo6\000", demo6(a) == a)
|
||||
}
|
||||
|
||||
type array7 struct {
|
||||
x [7]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo7 C.demo7
|
||||
func cdemo7(a array7) array7
|
||||
|
||||
func demo7(a array7) array7 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array7{x: [7]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}()}}
|
||||
assert("cdemo7\000", cdemo7(a) == a)
|
||||
assert("demo7\000", demo7(a) == a)
|
||||
}
|
||||
|
||||
type array8 struct {
|
||||
x [8]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo8 C.demo8
|
||||
func cdemo8(a array8) array8
|
||||
|
||||
func demo8(a array8) array8 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array8{x: [8]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}()}}
|
||||
assert("cdemo8\000", cdemo8(a) == a)
|
||||
assert("demo8\000", demo8(a) == a)
|
||||
}
|
||||
|
||||
type array9 struct {
|
||||
x [9]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo9 C.demo9
|
||||
func cdemo9(a array9) array9
|
||||
|
||||
func demo9(a array9) array9 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array9{x: [9]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}()}}
|
||||
assert("cdemo9\000", cdemo9(a) == a)
|
||||
assert("demo9\000", demo9(a) == a)
|
||||
}
|
||||
|
||||
type array10 struct {
|
||||
x [10]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo10 C.demo10
|
||||
func cdemo10(a array10) array10
|
||||
|
||||
func demo10(a array10) array10 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array10{x: [10]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}()}}
|
||||
assert("cdemo10\000", cdemo10(a) == a)
|
||||
assert("demo10\000", demo10(a) == a)
|
||||
}
|
||||
|
||||
type array11 struct {
|
||||
x [11]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo11 C.demo11
|
||||
func cdemo11(a array11) array11
|
||||
|
||||
func demo11(a array11) array11 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array11{x: [11]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}()}}
|
||||
assert("cdemo11\000", cdemo11(a) == a)
|
||||
assert("demo11\000", demo11(a) == a)
|
||||
}
|
||||
|
||||
type array12 struct {
|
||||
x [12]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo12 C.demo12
|
||||
func cdemo12(a array12) array12
|
||||
|
||||
func demo12(a array12) array12 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array12{x: [12]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}()}}
|
||||
assert("cdemo12\000", cdemo12(a) == a)
|
||||
assert("demo12\000", demo12(a) == a)
|
||||
}
|
||||
|
||||
type array13 struct {
|
||||
x [13]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo13 C.demo13
|
||||
func cdemo13(a array13) array13
|
||||
|
||||
func demo13(a array13) array13 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array13{x: [13]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}()}}
|
||||
assert("cdemo13\000", cdemo13(a) == a)
|
||||
assert("demo13\000", demo13(a) == a)
|
||||
}
|
||||
|
||||
type array14 struct {
|
||||
x [14]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo14 C.demo14
|
||||
func cdemo14(a array14) array14
|
||||
|
||||
func demo14(a array14) array14 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array14{x: [14]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}()}}
|
||||
assert("cdemo14\000", cdemo14(a) == a)
|
||||
assert("demo14\000", demo14(a) == a)
|
||||
}
|
||||
|
||||
type array15 struct {
|
||||
x [15]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo15 C.demo15
|
||||
func cdemo15(a array15) array15
|
||||
|
||||
func demo15(a array15) array15 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array15{x: [15]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}()}}
|
||||
assert("cdemo15\000", cdemo15(a) == a)
|
||||
assert("demo15\000", demo15(a) == a)
|
||||
}
|
||||
|
||||
type array16 struct {
|
||||
x [16]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo16 C.demo16
|
||||
func cdemo16(a array16) array16
|
||||
|
||||
func demo16(a array16) array16 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array16{x: [16]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}()}}
|
||||
assert("cdemo16\000", cdemo16(a) == a)
|
||||
assert("demo16\000", demo16(a) == a)
|
||||
}
|
||||
|
||||
type array17 struct {
|
||||
x [17]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo17 C.demo17
|
||||
func cdemo17(a array17) array17
|
||||
|
||||
func demo17(a array17) array17 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array17{x: [17]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}()}}
|
||||
assert("cdemo17\000", cdemo17(a) == a)
|
||||
assert("demo17\000", demo17(a) == a)
|
||||
}
|
||||
|
||||
type array18 struct {
|
||||
x [18]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo18 C.demo18
|
||||
func cdemo18(a array18) array18
|
||||
|
||||
func demo18(a array18) array18 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array18{x: [18]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}(), func() pointer { var a int8 = 18; return &a}()}}
|
||||
assert("cdemo18\000", cdemo18(a) == a)
|
||||
assert("demo18\000", demo18(a) == a)
|
||||
}
|
||||
|
||||
type array19 struct {
|
||||
x [19]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo19 C.demo19
|
||||
func cdemo19(a array19) array19
|
||||
|
||||
func demo19(a array19) array19 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array19{x: [19]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}(), func() pointer { var a int8 = 18; return &a}(), func() pointer { var a int8 = 19; return &a}()}}
|
||||
assert("cdemo19\000", cdemo19(a) == a)
|
||||
assert("demo19\000", demo19(a) == a)
|
||||
}
|
||||
|
||||
type array20 struct {
|
||||
x [20]pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo20 C.demo20
|
||||
func cdemo20(a array20) array20
|
||||
|
||||
func demo20(a array20) array20 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array20{x: [20]pointer{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}(), func() pointer { var a int8 = 18; return &a}(), func() pointer { var a int8 = 19; return &a}(), func() pointer { var a int8 = 20; return &a}()}}
|
||||
assert("cdemo20\000", cdemo20(a) == a)
|
||||
assert("demo20\000", demo20(a) == a)
|
||||
}
|
||||
@@ -1,359 +0,0 @@
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const (
|
||||
LLGoFiles = "../wrap/array_uintptr.c"
|
||||
)
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
func assert(info string, b bool) {
|
||||
if !b {
|
||||
printf(unsafe.StringData("Assertion failed: %s\n\000"), unsafe.StringData(info))
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
}
|
||||
|
||||
type array1 struct {
|
||||
x [1]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo1 C.demo1
|
||||
func cdemo1(a array1) array1
|
||||
|
||||
func demo1(a array1) array1 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array1{x: [1]uintptr{1}}
|
||||
assert("cdemo1\000", cdemo1(a) == a)
|
||||
assert("demo1\000", demo1(a) == a)
|
||||
}
|
||||
|
||||
type array2 struct {
|
||||
x [2]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo2 C.demo2
|
||||
func cdemo2(a array2) array2
|
||||
|
||||
func demo2(a array2) array2 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array2{x: [2]uintptr{1, 2}}
|
||||
assert("cdemo2\000", cdemo2(a) == a)
|
||||
assert("demo2\000", demo2(a) == a)
|
||||
}
|
||||
|
||||
type array3 struct {
|
||||
x [3]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo3 C.demo3
|
||||
func cdemo3(a array3) array3
|
||||
|
||||
func demo3(a array3) array3 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array3{x: [3]uintptr{1, 2, 3}}
|
||||
assert("cdemo3\000", cdemo3(a) == a)
|
||||
assert("demo3\000", demo3(a) == a)
|
||||
}
|
||||
|
||||
type array4 struct {
|
||||
x [4]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo4 C.demo4
|
||||
func cdemo4(a array4) array4
|
||||
|
||||
func demo4(a array4) array4 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array4{x: [4]uintptr{1, 2, 3, 4}}
|
||||
assert("cdemo4\000", cdemo4(a) == a)
|
||||
assert("demo4\000", demo4(a) == a)
|
||||
}
|
||||
|
||||
type array5 struct {
|
||||
x [5]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo5 C.demo5
|
||||
func cdemo5(a array5) array5
|
||||
|
||||
func demo5(a array5) array5 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array5{x: [5]uintptr{1, 2, 3, 4, 5}}
|
||||
assert("cdemo5\000", cdemo5(a) == a)
|
||||
assert("demo5\000", demo5(a) == a)
|
||||
}
|
||||
|
||||
type array6 struct {
|
||||
x [6]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo6 C.demo6
|
||||
func cdemo6(a array6) array6
|
||||
|
||||
func demo6(a array6) array6 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array6{x: [6]uintptr{1, 2, 3, 4, 5, 6}}
|
||||
assert("cdemo6\000", cdemo6(a) == a)
|
||||
assert("demo6\000", demo6(a) == a)
|
||||
}
|
||||
|
||||
type array7 struct {
|
||||
x [7]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo7 C.demo7
|
||||
func cdemo7(a array7) array7
|
||||
|
||||
func demo7(a array7) array7 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array7{x: [7]uintptr{1, 2, 3, 4, 5, 6, 7}}
|
||||
assert("cdemo7\000", cdemo7(a) == a)
|
||||
assert("demo7\000", demo7(a) == a)
|
||||
}
|
||||
|
||||
type array8 struct {
|
||||
x [8]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo8 C.demo8
|
||||
func cdemo8(a array8) array8
|
||||
|
||||
func demo8(a array8) array8 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array8{x: [8]uintptr{1, 2, 3, 4, 5, 6, 7, 8}}
|
||||
assert("cdemo8\000", cdemo8(a) == a)
|
||||
assert("demo8\000", demo8(a) == a)
|
||||
}
|
||||
|
||||
type array9 struct {
|
||||
x [9]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo9 C.demo9
|
||||
func cdemo9(a array9) array9
|
||||
|
||||
func demo9(a array9) array9 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array9{x: [9]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9}}
|
||||
assert("cdemo9\000", cdemo9(a) == a)
|
||||
assert("demo9\000", demo9(a) == a)
|
||||
}
|
||||
|
||||
type array10 struct {
|
||||
x [10]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo10 C.demo10
|
||||
func cdemo10(a array10) array10
|
||||
|
||||
func demo10(a array10) array10 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array10{x: [10]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}
|
||||
assert("cdemo10\000", cdemo10(a) == a)
|
||||
assert("demo10\000", demo10(a) == a)
|
||||
}
|
||||
|
||||
type array11 struct {
|
||||
x [11]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo11 C.demo11
|
||||
func cdemo11(a array11) array11
|
||||
|
||||
func demo11(a array11) array11 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array11{x: [11]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}}
|
||||
assert("cdemo11\000", cdemo11(a) == a)
|
||||
assert("demo11\000", demo11(a) == a)
|
||||
}
|
||||
|
||||
type array12 struct {
|
||||
x [12]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo12 C.demo12
|
||||
func cdemo12(a array12) array12
|
||||
|
||||
func demo12(a array12) array12 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array12{x: [12]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}}
|
||||
assert("cdemo12\000", cdemo12(a) == a)
|
||||
assert("demo12\000", demo12(a) == a)
|
||||
}
|
||||
|
||||
type array13 struct {
|
||||
x [13]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo13 C.demo13
|
||||
func cdemo13(a array13) array13
|
||||
|
||||
func demo13(a array13) array13 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array13{x: [13]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}}
|
||||
assert("cdemo13\000", cdemo13(a) == a)
|
||||
assert("demo13\000", demo13(a) == a)
|
||||
}
|
||||
|
||||
type array14 struct {
|
||||
x [14]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo14 C.demo14
|
||||
func cdemo14(a array14) array14
|
||||
|
||||
func demo14(a array14) array14 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array14{x: [14]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}}
|
||||
assert("cdemo14\000", cdemo14(a) == a)
|
||||
assert("demo14\000", demo14(a) == a)
|
||||
}
|
||||
|
||||
type array15 struct {
|
||||
x [15]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo15 C.demo15
|
||||
func cdemo15(a array15) array15
|
||||
|
||||
func demo15(a array15) array15 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array15{x: [15]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}
|
||||
assert("cdemo15\000", cdemo15(a) == a)
|
||||
assert("demo15\000", demo15(a) == a)
|
||||
}
|
||||
|
||||
type array16 struct {
|
||||
x [16]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo16 C.demo16
|
||||
func cdemo16(a array16) array16
|
||||
|
||||
func demo16(a array16) array16 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array16{x: [16]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}
|
||||
assert("cdemo16\000", cdemo16(a) == a)
|
||||
assert("demo16\000", demo16(a) == a)
|
||||
}
|
||||
|
||||
type array17 struct {
|
||||
x [17]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo17 C.demo17
|
||||
func cdemo17(a array17) array17
|
||||
|
||||
func demo17(a array17) array17 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array17{x: [17]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}}
|
||||
assert("cdemo17\000", cdemo17(a) == a)
|
||||
assert("demo17\000", demo17(a) == a)
|
||||
}
|
||||
|
||||
type array18 struct {
|
||||
x [18]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo18 C.demo18
|
||||
func cdemo18(a array18) array18
|
||||
|
||||
func demo18(a array18) array18 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array18{x: [18]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}}
|
||||
assert("cdemo18\000", cdemo18(a) == a)
|
||||
assert("demo18\000", demo18(a) == a)
|
||||
}
|
||||
|
||||
type array19 struct {
|
||||
x [19]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo19 C.demo19
|
||||
func cdemo19(a array19) array19
|
||||
|
||||
func demo19(a array19) array19 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array19{x: [19]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}}
|
||||
assert("cdemo19\000", cdemo19(a) == a)
|
||||
assert("demo19\000", demo19(a) == a)
|
||||
}
|
||||
|
||||
type array20 struct {
|
||||
x [20]uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo20 C.demo20
|
||||
func cdemo20(a array20) array20
|
||||
|
||||
func demo20(a array20) array20 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := array20{x: [20]uintptr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}}
|
||||
assert("cdemo20\000", cdemo20(a) == a)
|
||||
assert("demo20\000", demo20(a) == a)
|
||||
}
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/basic.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
@@ -90,14 +92,15 @@ func init() {
|
||||
assert("basic_float64\000", basic_float64(100) == 100)
|
||||
}
|
||||
|
||||
//go:linkname cbasic_uintptr C.basic_uintptr
|
||||
func cbasic_uintptr(a uintptr) uintptr
|
||||
//go:linkname cbasic_pointer C.basic_pointer
|
||||
func cbasic_pointer(a pointer) pointer
|
||||
|
||||
func basic_uintptr(a uintptr) uintptr {
|
||||
func basic_pointer(a pointer) pointer {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
assert("cbasic_uintptr\000", cbasic_uintptr(100) == 100)
|
||||
assert("basic_uintptr\000", basic_uintptr(100) == 100)
|
||||
var p int8
|
||||
assert("cbasic_pointer\000", cbasic_pointer(&p) == &p)
|
||||
assert("basic_pointer\000", basic_pointer(&p) == &p)
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_float32.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_float64.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_int16.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_int32.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_int64.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_int8.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ const (
|
||||
LLGoFiles = "../wrap/struct_mixed.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
@@ -110,7 +112,7 @@ func init() {
|
||||
|
||||
type point6 struct {
|
||||
x0 int8
|
||||
x1 uintptr
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo6 C.demo6
|
||||
@@ -121,7 +123,7 @@ func demo6(a point6) point6 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point6{1, 2}
|
||||
a := point6{1, func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo6\000", cdemo6(a) == a)
|
||||
assert("demo6\000", demo6(a) == a)
|
||||
}
|
||||
@@ -218,7 +220,7 @@ func init() {
|
||||
|
||||
type point12 struct {
|
||||
x0 int16
|
||||
x1 uintptr
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo12 C.demo12
|
||||
@@ -229,7 +231,7 @@ func demo12(a point12) point12 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point12{1, 2}
|
||||
a := point12{1, func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo12\000", cdemo12(a) == a)
|
||||
assert("demo12\000", demo12(a) == a)
|
||||
}
|
||||
@@ -326,7 +328,7 @@ func init() {
|
||||
|
||||
type point18 struct {
|
||||
x0 int32
|
||||
x1 uintptr
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo18 C.demo18
|
||||
@@ -337,7 +339,7 @@ func demo18(a point18) point18 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point18{1, 2}
|
||||
a := point18{1, func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo18\000", cdemo18(a) == a)
|
||||
assert("demo18\000", demo18(a) == a)
|
||||
}
|
||||
@@ -434,7 +436,7 @@ func init() {
|
||||
|
||||
type point24 struct {
|
||||
x0 int64
|
||||
x1 uintptr
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo24 C.demo24
|
||||
@@ -445,7 +447,7 @@ func demo24(a point24) point24 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point24{1, 2}
|
||||
a := point24{1, func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo24\000", cdemo24(a) == a)
|
||||
assert("demo24\000", demo24(a) == a)
|
||||
}
|
||||
@@ -542,7 +544,7 @@ func init() {
|
||||
|
||||
type point30 struct {
|
||||
x0 float32
|
||||
x1 uintptr
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo30 C.demo30
|
||||
@@ -553,7 +555,7 @@ func demo30(a point30) point30 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point30{1, 2}
|
||||
a := point30{1, func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo30\000", cdemo30(a) == a)
|
||||
assert("demo30\000", demo30(a) == a)
|
||||
}
|
||||
@@ -650,7 +652,7 @@ func init() {
|
||||
|
||||
type point36 struct {
|
||||
x0 float64
|
||||
x1 uintptr
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo36 C.demo36
|
||||
@@ -661,13 +663,13 @@ func demo36(a point36) point36 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point36{1, 2}
|
||||
a := point36{1, func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo36\000", cdemo36(a) == a)
|
||||
assert("demo36\000", demo36(a) == a)
|
||||
}
|
||||
|
||||
type point37 struct {
|
||||
x0 uintptr
|
||||
x0 pointer
|
||||
x1 int8
|
||||
}
|
||||
|
||||
@@ -679,13 +681,13 @@ func demo37(a point37) point37 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point37{1, 2}
|
||||
a := point37{func() pointer { var a int8 = 1; return &a}(), 2}
|
||||
assert("cdemo37\000", cdemo37(a) == a)
|
||||
assert("demo37\000", demo37(a) == a)
|
||||
}
|
||||
|
||||
type point38 struct {
|
||||
x0 uintptr
|
||||
x0 pointer
|
||||
x1 int16
|
||||
}
|
||||
|
||||
@@ -697,13 +699,13 @@ func demo38(a point38) point38 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point38{1, 2}
|
||||
a := point38{func() pointer { var a int8 = 1; return &a}(), 2}
|
||||
assert("cdemo38\000", cdemo38(a) == a)
|
||||
assert("demo38\000", demo38(a) == a)
|
||||
}
|
||||
|
||||
type point39 struct {
|
||||
x0 uintptr
|
||||
x0 pointer
|
||||
x1 int32
|
||||
}
|
||||
|
||||
@@ -715,13 +717,13 @@ func demo39(a point39) point39 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point39{1, 2}
|
||||
a := point39{func() pointer { var a int8 = 1; return &a}(), 2}
|
||||
assert("cdemo39\000", cdemo39(a) == a)
|
||||
assert("demo39\000", demo39(a) == a)
|
||||
}
|
||||
|
||||
type point40 struct {
|
||||
x0 uintptr
|
||||
x0 pointer
|
||||
x1 int64
|
||||
}
|
||||
|
||||
@@ -733,13 +735,13 @@ func demo40(a point40) point40 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point40{1, 2}
|
||||
a := point40{func() pointer { var a int8 = 1; return &a}(), 2}
|
||||
assert("cdemo40\000", cdemo40(a) == a)
|
||||
assert("demo40\000", demo40(a) == a)
|
||||
}
|
||||
|
||||
type point41 struct {
|
||||
x0 uintptr
|
||||
x0 pointer
|
||||
x1 float32
|
||||
}
|
||||
|
||||
@@ -751,13 +753,13 @@ func demo41(a point41) point41 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point41{1, 2}
|
||||
a := point41{func() pointer { var a int8 = 1; return &a}(), 2}
|
||||
assert("cdemo41\000", cdemo41(a) == a)
|
||||
assert("demo41\000", demo41(a) == a)
|
||||
}
|
||||
|
||||
type point42 struct {
|
||||
x0 uintptr
|
||||
x0 pointer
|
||||
x1 float64
|
||||
}
|
||||
|
||||
@@ -769,7 +771,7 @@ func demo42(a point42) point42 {
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point42{1, 2}
|
||||
a := point42{func() pointer { var a int8 = 1; return &a}(), 2}
|
||||
assert("cdemo42\000", cdemo42(a) == a)
|
||||
assert("demo42\000", demo42(a) == a)
|
||||
}
|
||||
|
||||
551
internal/cabi/_testdata/demo/struct_pointer.go
Normal file
551
internal/cabi/_testdata/demo/struct_pointer.go
Normal file
@@ -0,0 +1,551 @@
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const (
|
||||
LLGoFiles = "../wrap/struct_pointer.c"
|
||||
)
|
||||
|
||||
type pointer = *int8
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
func assert(info string, b bool) {
|
||||
if !b {
|
||||
printf(unsafe.StringData("Assertion failed: %s\n\000"), unsafe.StringData(info))
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
}
|
||||
|
||||
type point1 struct {
|
||||
x0 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo1 C.demo1
|
||||
func cdemo1(a point1) point1
|
||||
|
||||
func demo1(a point1) point1 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point1{func() pointer { var a int8 = 1; return &a}()}
|
||||
assert("cdemo1\000", cdemo1(a) == a)
|
||||
assert("demo1\000", demo1(a) == a)
|
||||
}
|
||||
|
||||
type point2 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo2 C.demo2
|
||||
func cdemo2(a point2) point2
|
||||
|
||||
func demo2(a point2) point2 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point2{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}()}
|
||||
assert("cdemo2\000", cdemo2(a) == a)
|
||||
assert("demo2\000", demo2(a) == a)
|
||||
}
|
||||
|
||||
type point3 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo3 C.demo3
|
||||
func cdemo3(a point3) point3
|
||||
|
||||
func demo3(a point3) point3 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point3{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}()}
|
||||
assert("cdemo3\000", cdemo3(a) == a)
|
||||
assert("demo3\000", demo3(a) == a)
|
||||
}
|
||||
|
||||
type point4 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo4 C.demo4
|
||||
func cdemo4(a point4) point4
|
||||
|
||||
func demo4(a point4) point4 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point4{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}()}
|
||||
assert("cdemo4\000", cdemo4(a) == a)
|
||||
assert("demo4\000", demo4(a) == a)
|
||||
}
|
||||
|
||||
type point5 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo5 C.demo5
|
||||
func cdemo5(a point5) point5
|
||||
|
||||
func demo5(a point5) point5 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point5{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}()}
|
||||
assert("cdemo5\000", cdemo5(a) == a)
|
||||
assert("demo5\000", demo5(a) == a)
|
||||
}
|
||||
|
||||
type point6 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo6 C.demo6
|
||||
func cdemo6(a point6) point6
|
||||
|
||||
func demo6(a point6) point6 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point6{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}()}
|
||||
assert("cdemo6\000", cdemo6(a) == a)
|
||||
assert("demo6\000", demo6(a) == a)
|
||||
}
|
||||
|
||||
type point7 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo7 C.demo7
|
||||
func cdemo7(a point7) point7
|
||||
|
||||
func demo7(a point7) point7 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point7{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}()}
|
||||
assert("cdemo7\000", cdemo7(a) == a)
|
||||
assert("demo7\000", demo7(a) == a)
|
||||
}
|
||||
|
||||
type point8 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo8 C.demo8
|
||||
func cdemo8(a point8) point8
|
||||
|
||||
func demo8(a point8) point8 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point8{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}()}
|
||||
assert("cdemo8\000", cdemo8(a) == a)
|
||||
assert("demo8\000", demo8(a) == a)
|
||||
}
|
||||
|
||||
type point9 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo9 C.demo9
|
||||
func cdemo9(a point9) point9
|
||||
|
||||
func demo9(a point9) point9 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point9{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}()}
|
||||
assert("cdemo9\000", cdemo9(a) == a)
|
||||
assert("demo9\000", demo9(a) == a)
|
||||
}
|
||||
|
||||
type point10 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo10 C.demo10
|
||||
func cdemo10(a point10) point10
|
||||
|
||||
func demo10(a point10) point10 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point10{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}()}
|
||||
assert("cdemo10\000", cdemo10(a) == a)
|
||||
assert("demo10\000", demo10(a) == a)
|
||||
}
|
||||
|
||||
type point11 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo11 C.demo11
|
||||
func cdemo11(a point11) point11
|
||||
|
||||
func demo11(a point11) point11 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point11{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}()}
|
||||
assert("cdemo11\000", cdemo11(a) == a)
|
||||
assert("demo11\000", demo11(a) == a)
|
||||
}
|
||||
|
||||
type point12 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo12 C.demo12
|
||||
func cdemo12(a point12) point12
|
||||
|
||||
func demo12(a point12) point12 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point12{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}()}
|
||||
assert("cdemo12\000", cdemo12(a) == a)
|
||||
assert("demo12\000", demo12(a) == a)
|
||||
}
|
||||
|
||||
type point13 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo13 C.demo13
|
||||
func cdemo13(a point13) point13
|
||||
|
||||
func demo13(a point13) point13 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point13{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}()}
|
||||
assert("cdemo13\000", cdemo13(a) == a)
|
||||
assert("demo13\000", demo13(a) == a)
|
||||
}
|
||||
|
||||
type point14 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo14 C.demo14
|
||||
func cdemo14(a point14) point14
|
||||
|
||||
func demo14(a point14) point14 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point14{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}()}
|
||||
assert("cdemo14\000", cdemo14(a) == a)
|
||||
assert("demo14\000", demo14(a) == a)
|
||||
}
|
||||
|
||||
type point15 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
x14 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo15 C.demo15
|
||||
func cdemo15(a point15) point15
|
||||
|
||||
func demo15(a point15) point15 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point15{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}()}
|
||||
assert("cdemo15\000", cdemo15(a) == a)
|
||||
assert("demo15\000", demo15(a) == a)
|
||||
}
|
||||
|
||||
type point16 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
x14 pointer
|
||||
x15 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo16 C.demo16
|
||||
func cdemo16(a point16) point16
|
||||
|
||||
func demo16(a point16) point16 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point16{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}()}
|
||||
assert("cdemo16\000", cdemo16(a) == a)
|
||||
assert("demo16\000", demo16(a) == a)
|
||||
}
|
||||
|
||||
type point17 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
x14 pointer
|
||||
x15 pointer
|
||||
x16 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo17 C.demo17
|
||||
func cdemo17(a point17) point17
|
||||
|
||||
func demo17(a point17) point17 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point17{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}()}
|
||||
assert("cdemo17\000", cdemo17(a) == a)
|
||||
assert("demo17\000", demo17(a) == a)
|
||||
}
|
||||
|
||||
type point18 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
x14 pointer
|
||||
x15 pointer
|
||||
x16 pointer
|
||||
x17 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo18 C.demo18
|
||||
func cdemo18(a point18) point18
|
||||
|
||||
func demo18(a point18) point18 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point18{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}(), func() pointer { var a int8 = 18; return &a}()}
|
||||
assert("cdemo18\000", cdemo18(a) == a)
|
||||
assert("demo18\000", demo18(a) == a)
|
||||
}
|
||||
|
||||
type point19 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
x14 pointer
|
||||
x15 pointer
|
||||
x16 pointer
|
||||
x17 pointer
|
||||
x18 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo19 C.demo19
|
||||
func cdemo19(a point19) point19
|
||||
|
||||
func demo19(a point19) point19 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point19{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}(), func() pointer { var a int8 = 18; return &a}(), func() pointer { var a int8 = 19; return &a}()}
|
||||
assert("cdemo19\000", cdemo19(a) == a)
|
||||
assert("demo19\000", demo19(a) == a)
|
||||
}
|
||||
|
||||
type point20 struct {
|
||||
x0 pointer
|
||||
x1 pointer
|
||||
x2 pointer
|
||||
x3 pointer
|
||||
x4 pointer
|
||||
x5 pointer
|
||||
x6 pointer
|
||||
x7 pointer
|
||||
x8 pointer
|
||||
x9 pointer
|
||||
x10 pointer
|
||||
x11 pointer
|
||||
x12 pointer
|
||||
x13 pointer
|
||||
x14 pointer
|
||||
x15 pointer
|
||||
x16 pointer
|
||||
x17 pointer
|
||||
x18 pointer
|
||||
x19 pointer
|
||||
}
|
||||
|
||||
//go:linkname cdemo20 C.demo20
|
||||
func cdemo20(a point20) point20
|
||||
|
||||
func demo20(a point20) point20 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point20{func() pointer { var a int8 = 1; return &a}(), func() pointer { var a int8 = 2; return &a}(), func() pointer { var a int8 = 3; return &a}(), func() pointer { var a int8 = 4; return &a}(), func() pointer { var a int8 = 5; return &a}(), func() pointer { var a int8 = 6; return &a}(), func() pointer { var a int8 = 7; return &a}(), func() pointer { var a int8 = 8; return &a}(), func() pointer { var a int8 = 9; return &a}(), func() pointer { var a int8 = 10; return &a}(), func() pointer { var a int8 = 11; return &a}(), func() pointer { var a int8 = 12; return &a}(), func() pointer { var a int8 = 13; return &a}(), func() pointer { var a int8 = 14; return &a}(), func() pointer { var a int8 = 15; return &a}(), func() pointer { var a int8 = 16; return &a}(), func() pointer { var a int8 = 17; return &a}(), func() pointer { var a int8 = 18; return &a}(), func() pointer { var a int8 = 19; return &a}(), func() pointer { var a int8 = 20; return &a}()}
|
||||
assert("cdemo20\000", cdemo20(a) == a)
|
||||
assert("demo20\000", demo20(a) == a)
|
||||
}
|
||||
@@ -1,549 +0,0 @@
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const (
|
||||
LLGoFiles = "../wrap/struct_uintptr.c"
|
||||
)
|
||||
|
||||
//go:linkname printf C.printf
|
||||
func printf(format *byte, __llgo_va_list ...any) int32
|
||||
|
||||
func assert(info string, b bool) {
|
||||
if !b {
|
||||
printf(unsafe.StringData("Assertion failed: %s\n\000"), unsafe.StringData(info))
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
}
|
||||
|
||||
type point1 struct {
|
||||
x0 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo1 C.demo1
|
||||
func cdemo1(a point1) point1
|
||||
|
||||
func demo1(a point1) point1 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point1{1}
|
||||
assert("cdemo1\000", cdemo1(a) == a)
|
||||
assert("demo1\000", demo1(a) == a)
|
||||
}
|
||||
|
||||
type point2 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo2 C.demo2
|
||||
func cdemo2(a point2) point2
|
||||
|
||||
func demo2(a point2) point2 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point2{1, 2}
|
||||
assert("cdemo2\000", cdemo2(a) == a)
|
||||
assert("demo2\000", demo2(a) == a)
|
||||
}
|
||||
|
||||
type point3 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo3 C.demo3
|
||||
func cdemo3(a point3) point3
|
||||
|
||||
func demo3(a point3) point3 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point3{1, 2, 3}
|
||||
assert("cdemo3\000", cdemo3(a) == a)
|
||||
assert("demo3\000", demo3(a) == a)
|
||||
}
|
||||
|
||||
type point4 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo4 C.demo4
|
||||
func cdemo4(a point4) point4
|
||||
|
||||
func demo4(a point4) point4 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point4{1, 2, 3, 4}
|
||||
assert("cdemo4\000", cdemo4(a) == a)
|
||||
assert("demo4\000", demo4(a) == a)
|
||||
}
|
||||
|
||||
type point5 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo5 C.demo5
|
||||
func cdemo5(a point5) point5
|
||||
|
||||
func demo5(a point5) point5 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point5{1, 2, 3, 4, 5}
|
||||
assert("cdemo5\000", cdemo5(a) == a)
|
||||
assert("demo5\000", demo5(a) == a)
|
||||
}
|
||||
|
||||
type point6 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo6 C.demo6
|
||||
func cdemo6(a point6) point6
|
||||
|
||||
func demo6(a point6) point6 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point6{1, 2, 3, 4, 5, 6}
|
||||
assert("cdemo6\000", cdemo6(a) == a)
|
||||
assert("demo6\000", demo6(a) == a)
|
||||
}
|
||||
|
||||
type point7 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo7 C.demo7
|
||||
func cdemo7(a point7) point7
|
||||
|
||||
func demo7(a point7) point7 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point7{1, 2, 3, 4, 5, 6, 7}
|
||||
assert("cdemo7\000", cdemo7(a) == a)
|
||||
assert("demo7\000", demo7(a) == a)
|
||||
}
|
||||
|
||||
type point8 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo8 C.demo8
|
||||
func cdemo8(a point8) point8
|
||||
|
||||
func demo8(a point8) point8 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point8{1, 2, 3, 4, 5, 6, 7, 8}
|
||||
assert("cdemo8\000", cdemo8(a) == a)
|
||||
assert("demo8\000", demo8(a) == a)
|
||||
}
|
||||
|
||||
type point9 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo9 C.demo9
|
||||
func cdemo9(a point9) point9
|
||||
|
||||
func demo9(a point9) point9 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point9{1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||
assert("cdemo9\000", cdemo9(a) == a)
|
||||
assert("demo9\000", demo9(a) == a)
|
||||
}
|
||||
|
||||
type point10 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo10 C.demo10
|
||||
func cdemo10(a point10) point10
|
||||
|
||||
func demo10(a point10) point10 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point10{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
|
||||
assert("cdemo10\000", cdemo10(a) == a)
|
||||
assert("demo10\000", demo10(a) == a)
|
||||
}
|
||||
|
||||
type point11 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo11 C.demo11
|
||||
func cdemo11(a point11) point11
|
||||
|
||||
func demo11(a point11) point11 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point11{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
||||
assert("cdemo11\000", cdemo11(a) == a)
|
||||
assert("demo11\000", demo11(a) == a)
|
||||
}
|
||||
|
||||
type point12 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo12 C.demo12
|
||||
func cdemo12(a point12) point12
|
||||
|
||||
func demo12(a point12) point12 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point12{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
|
||||
assert("cdemo12\000", cdemo12(a) == a)
|
||||
assert("demo12\000", demo12(a) == a)
|
||||
}
|
||||
|
||||
type point13 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo13 C.demo13
|
||||
func cdemo13(a point13) point13
|
||||
|
||||
func demo13(a point13) point13 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point13{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}
|
||||
assert("cdemo13\000", cdemo13(a) == a)
|
||||
assert("demo13\000", demo13(a) == a)
|
||||
}
|
||||
|
||||
type point14 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo14 C.demo14
|
||||
func cdemo14(a point14) point14
|
||||
|
||||
func demo14(a point14) point14 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point14{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
|
||||
assert("cdemo14\000", cdemo14(a) == a)
|
||||
assert("demo14\000", demo14(a) == a)
|
||||
}
|
||||
|
||||
type point15 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
x14 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo15 C.demo15
|
||||
func cdemo15(a point15) point15
|
||||
|
||||
func demo15(a point15) point15 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point15{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
|
||||
assert("cdemo15\000", cdemo15(a) == a)
|
||||
assert("demo15\000", demo15(a) == a)
|
||||
}
|
||||
|
||||
type point16 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
x14 uintptr
|
||||
x15 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo16 C.demo16
|
||||
func cdemo16(a point16) point16
|
||||
|
||||
func demo16(a point16) point16 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
|
||||
assert("cdemo16\000", cdemo16(a) == a)
|
||||
assert("demo16\000", demo16(a) == a)
|
||||
}
|
||||
|
||||
type point17 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
x14 uintptr
|
||||
x15 uintptr
|
||||
x16 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo17 C.demo17
|
||||
func cdemo17(a point17) point17
|
||||
|
||||
func demo17(a point17) point17 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point17{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
|
||||
assert("cdemo17\000", cdemo17(a) == a)
|
||||
assert("demo17\000", demo17(a) == a)
|
||||
}
|
||||
|
||||
type point18 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
x14 uintptr
|
||||
x15 uintptr
|
||||
x16 uintptr
|
||||
x17 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo18 C.demo18
|
||||
func cdemo18(a point18) point18
|
||||
|
||||
func demo18(a point18) point18 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point18{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
|
||||
assert("cdemo18\000", cdemo18(a) == a)
|
||||
assert("demo18\000", demo18(a) == a)
|
||||
}
|
||||
|
||||
type point19 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
x14 uintptr
|
||||
x15 uintptr
|
||||
x16 uintptr
|
||||
x17 uintptr
|
||||
x18 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo19 C.demo19
|
||||
func cdemo19(a point19) point19
|
||||
|
||||
func demo19(a point19) point19 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point19{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}
|
||||
assert("cdemo19\000", cdemo19(a) == a)
|
||||
assert("demo19\000", demo19(a) == a)
|
||||
}
|
||||
|
||||
type point20 struct {
|
||||
x0 uintptr
|
||||
x1 uintptr
|
||||
x2 uintptr
|
||||
x3 uintptr
|
||||
x4 uintptr
|
||||
x5 uintptr
|
||||
x6 uintptr
|
||||
x7 uintptr
|
||||
x8 uintptr
|
||||
x9 uintptr
|
||||
x10 uintptr
|
||||
x11 uintptr
|
||||
x12 uintptr
|
||||
x13 uintptr
|
||||
x14 uintptr
|
||||
x15 uintptr
|
||||
x16 uintptr
|
||||
x17 uintptr
|
||||
x18 uintptr
|
||||
x19 uintptr
|
||||
}
|
||||
|
||||
//go:linkname cdemo20 C.demo20
|
||||
func cdemo20(a point20) point20
|
||||
|
||||
func demo20(a point20) point20 {
|
||||
return a
|
||||
}
|
||||
|
||||
func init() {
|
||||
a := point20{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}
|
||||
assert("cdemo20\000", cdemo20(a) == a)
|
||||
assert("demo20\000", demo20(a) == a)
|
||||
}
|
||||
Reference in New Issue
Block a user