Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
golang
/
1.22.0
/
src
/
cmd
/
cgo
/
internal
/
testsanitizers
/
testdata
/
Filename :
msan7.go
back
Copy
// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main // Test passing C struct to exported Go function. /* #include <stdint.h> #include <stdlib.h> // T is a C struct with alignment padding after b. // The padding bytes are not considered initialized by MSAN. // It is big enough to be passed on stack in C ABI (and least // on AMD64). typedef struct { char b; uintptr_t x, y; } T; extern void F(T); // Use weak as a hack to permit defining a function even though we use export. void CF(int x) __attribute__ ((weak)); void CF(int x) { T *t = malloc(sizeof(T)); t->b = (char)x; t->x = x; t->y = x; F(*t); } */ import "C" //export F func F(t C.T) { println(t.b, t.x, t.y) } func main() { C.CF(C.int(0)) }