cgo: full supports cgo preambles and auto compile c files

This commit is contained in:
Li Jie
2024-11-14 16:13:13 +08:00
parent 89b111edca
commit a64f4219e9
16 changed files with 588 additions and 53 deletions

View File

@@ -420,6 +420,8 @@ const (
llgoCgoGoBytes = llgoCgoBase + 0x4
llgoCgoCMalloc = llgoCgoBase + 0x5
llgoCgoCheckPointer = llgoCgoBase + 0x6
llgoCgoCgocall = llgoCgoBase + 0x7
llgoCgoUse = llgoCgoBase + 0x8
llgoAtomicOpLast = llgoAtomicOpBase + int(llssa.OpUMin)
)
@@ -433,15 +435,16 @@ func (p *context) funcName(fn *ssa.Function, ignore bool) (*types.Package, strin
orgName = funcName(pkg, origin, true)
} else {
fname := fn.Name()
if fname == "_cgoCheckPointer" {
if checkCgo(fname) {
return nil, fname, llgoInstr
}
if strings.HasPrefix(fname, "_Cfunc_") {
if _, ok := llgoInstrs[fname]; ok {
return nil, fname, llgoInstr
}
fname = fname[7:]
return nil, fname, cFunc
// fname = fname[7:]
// fn.WriteTo(os.Stdout)
// return nil, fname, cFunc
}
if fnPkg := fn.Pkg; fnPkg != nil {
pkg = fnPkg.Pkg