build: link globals importpath.name=value

This commit is contained in:
visualfc
2025-05-24 19:11:18 +08:00
parent e68355d94f
commit 4726e824a0
6 changed files with 230 additions and 39 deletions

View File

@@ -788,6 +788,27 @@ func (p Package) InitDebug(name, pkgPath string, positioner Positioner) {
p.cu = p.di.createCompileUnit(name, pkgPath)
}
func (p Package) createGlobalStr(v string) (ret llvm.Value) {
if ret, ok := p.strs[v]; ok {
return ret
}
prog := p.Prog
if v != "" {
typ := llvm.ArrayType(prog.tyInt8(), len(v))
global := llvm.AddGlobal(p.mod, typ, "")
global.SetInitializer(prog.ctx.ConstString(v, false))
global.SetLinkage(llvm.PrivateLinkage)
global.SetGlobalConstant(true)
global.SetUnnamedAddr(true)
global.SetAlignment(1)
ret = llvm.ConstInBoundsGEP(typ, global, []llvm.Value{prog.Val(0).impl})
} else {
ret = llvm.ConstNull(prog.CStr().ll)
}
p.strs[v] = ret
return
}
// -----------------------------------------------------------------------------
/*