cpp/llvm; os.Args; build: add llvm.BinDir to PATH

This commit is contained in:
xushiwei
2024-07-15 00:22:10 +08:00
parent 9156466351
commit cbe190fa70
9 changed files with 210 additions and 6 deletions

View File

@@ -0,0 +1,34 @@
package main
import (
"fmt"
"os"
"unsafe"
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/cpp/llvm"
)
func Demangle(mangledName string) *c.Char {
if ret := llvm.ItaniumDemangle(mangledName, true); ret != nil {
return ret
}
if ret := llvm.RustDemangle(mangledName); ret != nil {
return ret
}
return llvm.MicrosoftDemangle(mangledName, nil, nil, 0)
}
func main() {
if len(os.Args) != 2 {
fmt.Fprintln(os.Stderr, "Usage: demangle symbol")
return
}
mangledName := os.Args[1]
if name := Demangle(mangledName); name != nil {
c.Printf(c.Str("%s\n"), name)
c.Free(unsafe.Pointer(name))
} else {
fmt.Fprintln(os.Stderr, "Failed to demangle")
}
}