diff --git a/_xtool/llcppsymg/internal/symg/parse.go b/_xtool/llcppsymg/internal/symg/parse.go index 9e1d3bf1..9076e19e 100644 --- a/_xtool/llcppsymg/internal/symg/parse.go +++ b/_xtool/llcppsymg/internal/symg/parse.go @@ -130,12 +130,15 @@ func (p *SymbolProcessor) beRecv(cur clang.Cursor) (ok bool, isPtr bool, typeNam // sqlite3_finalize -> .Close -> method // sqlite3_open -> Open -> function -func (p *SymbolProcessor) customGoName(mangled string) (goName string, isMethod bool, ok bool) { +func (p *SymbolProcessor) customGoName(mangled string) (goName string, isMethod bool, isIgnore bool, ok bool) { if customName, ok := p.customSymMap[mangled]; ok { + if customName == "-" { + return "-", false, true, true + } name, found := strings.CutPrefix(customName, ".") - return name, found, true + return name, found, false, true } - return "", false, false + return "", false, false, false } func (p *SymbolProcessor) genGoName(cursor clang.Cursor, symbolName string) string { @@ -148,7 +151,12 @@ func (p *SymbolProcessor) genGoName(cursor clang.Cursor, symbolName string) stri convertedName = name.GoName(originName, p.prefixes, p.inCurPkg(cursor)) } - customGoName, toMethod, isCustom := p.customGoName(symbolName) + customGoName, toMethod, isIgnore, isCustom := p.customGoName(symbolName) + + // Early return if symbol should be ignored + if isIgnore { + return customGoName + } // 1. for class method,gen method name if parent := cursor.SemanticParent(); parent.Kind == clang.CursorClassDecl { diff --git a/_xtool/llcppsymg/internal/symg/testdata/c/c.c b/_xtool/llcppsymg/internal/symg/testdata/c/c.c index afb73f89..1e8cfac3 100644 --- a/_xtool/llcppsymg/internal/symg/testdata/c/c.c +++ b/_xtool/llcppsymg/internal/symg/testdata/c/c.c @@ -10,6 +10,7 @@ Foo *Foo_ParseWithLength(const char *value, size_t buffer_length) {} Foo *Foo_ParseWithSize(const char *value, size_t buffer_length) {} Foo *Foo_ignoreFunc() {} +Foo *Foo_ignoreFunc2() {} // config Foo_ForBar to Bar,so Foo_Bar to Bar__1 void Foo_Bar() {} diff --git a/_xtool/llcppsymg/internal/symg/testdata/c/c.h b/_xtool/llcppsymg/internal/symg/testdata/c/c.h index c24f6f08..712fd2af 100644 --- a/_xtool/llcppsymg/internal/symg/testdata/c/c.h +++ b/_xtool/llcppsymg/internal/symg/testdata/c/c.h @@ -17,6 +17,9 @@ Foo *Foo_ParseWithLength(const char *value, size_t buffer_length); Foo *Foo_ParseWithSize(const char *value, size_t buffer_length); Foo *Foo_ignoreFunc(); +// https://github.com/goplus/llcppg/issues/522 +Foo *Foo_ignoreFunc2(); + // config Foo_ForBar to Bar,so Foo_Bar to Bar__1 void Foo_Bar(); diff --git a/_xtool/llcppsymg/internal/symg/testdata/c/darwin/libc.a b/_xtool/llcppsymg/internal/symg/testdata/c/darwin/libc.a index 878c0ee7..10fcde2c 100644 Binary files a/_xtool/llcppsymg/internal/symg/testdata/c/darwin/libc.a and b/_xtool/llcppsymg/internal/symg/testdata/c/darwin/libc.a differ diff --git a/_xtool/llcppsymg/internal/symg/testdata/c/expect.json b/_xtool/llcppsymg/internal/symg/testdata/c/expect.json index 40dd0442..f9b377db 100644 --- a/_xtool/llcppsymg/internal/symg/testdata/c/expect.json +++ b/_xtool/llcppsymg/internal/symg/testdata/c/expect.json @@ -73,5 +73,10 @@ "mangle": "Foo_ignoreFunc", "c++": "Foo_ignoreFunc()", "go": "-" + }, + { + "mangle": "Foo_ignoreFunc2", + "c++": "Foo_ignoreFunc2()", + "go": "-" } ] \ No newline at end of file diff --git a/_xtool/llcppsymg/internal/symg/testdata/c/linux/libc.a b/_xtool/llcppsymg/internal/symg/testdata/c/linux/libc.a index 560f8410..a1620192 100644 Binary files a/_xtool/llcppsymg/internal/symg/testdata/c/linux/libc.a and b/_xtool/llcppsymg/internal/symg/testdata/c/linux/libc.a differ diff --git a/_xtool/llcppsymg/internal/symg/testdata/c/llcppg.cfg b/_xtool/llcppsymg/internal/symg/testdata/c/llcppg.cfg index 202c3828..b6413d35 100644 --- a/_xtool/llcppsymg/internal/symg/testdata/c/llcppg.cfg +++ b/_xtool/llcppsymg/internal/symg/testdata/c/llcppg.cfg @@ -10,6 +10,7 @@ "Foo_Delete":"Delete", "Foo_ParseWithSize":".ParseWithSize", "Foo_ignoreFunc":"-", + "Foo_ignoreFunc2":"-", "Foo_ForBar":"Bar", "Foo_Bar2":"Bar2", "Foo_ForBar2":"Bar2",