internal/cabi: support riscv64/riscv32 target-abi

This commit is contained in:
visualfc
2025-09-15 21:18:23 +08:00
parent 8bfe133bee
commit db28648d29
142 changed files with 93780 additions and 2580 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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)
}

View File

@@ -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)
}

View File

@@ -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)
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
}

View 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)
}

View File

@@ -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)
}