Commit Graph

170 Commits

Author SHA1 Message Date
xgopilot
88d32c9930 fix(ssa): correct PkgPath for interface metadata in cross-package conversions
Fixes #1370 - Segmentation Fault When Calling Interface Private Methods Cross-Package

This commit fixes a critical bug where interface metadata's PkgPath was incorrectly
set when converting concrete type pointers to interfaces with private methods across
package boundaries.

Problem:
- When a concrete type pointer was converted to an interface with private methods
  in a package different from the interface definition package, the compiler
  incorrectly set the interface metadata's PkgPath to the current compilation
  package instead of the interface definition package
- This caused the runtime to only fill exported methods in the itab, leaving
  private method slots as NULL (0x0), resulting in segmentation faults

Solution:
- Modified abiInterfaceOf() in ssa/abitype.go to extract the package path from
  the interface's private methods (if any)
- Use that package path instead of the current compilation package path
- Fall back to current package path only if all methods are exported

Changes:
- ssa/abitype.go: Use abi.PathOf() to get correct package path
- ssa/interface.go: Refactor to simplify interface type handling
- Added comprehensive test cases and demos for go/types, go/token, and go/ast
- Updated all test outputs to reflect correct interface metadata generation

This fix resolves segmentation faults when using Go standard library interfaces
and user-defined interfaces with private methods across package boundaries.

Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: luoliwoshang <51194195+luoliwoshang@users.noreply.github.com>
2025-10-30 06:24:23 +00:00
xgopilot
2b92b527e1 fix: resolve compilation errors in maphash demo
- Fix line 67: Change unused variable 'n' to blank identifier '_'
- Fix line 102: Correct WriteByte call to expect only error return value
  (WriteByte returns only error, not (int, error))

These fixes resolve the compilation errors reported by the CI.

Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: luoliwoshang <luoliwoshang@users.noreply.github.com>
2025-10-14 10:33:30 +00:00
xgopilot
ed3176a6cc test: expand maphash demo with comprehensive API coverage
- Add tests for all major hash/maphash public APIs:
  * Hash basics (WriteString, Sum64, Reset)
  * MakeSeed and SetSeed functionality
  * Write methods (Write, WriteByte, WriteString)
  * Bytes and String convenience functions
- Use panic() for unexpected errors instead of silent failures
- Add proper error checking and validation
- Document Comparable/WriteComparable limitations in overlay

Note: Comparable() and WriteComparable() are not yet supported and will
panic with 'intrinsic' error as they require runtime intrinsic support.

Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: luoliwoshang <luoliwoshang@users.noreply.github.com>
2025-10-14 10:18:28 +00:00
xgopilot
8aadfde64a style: apply linter fixes to maphash test
Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: luoliwoshang <luoliwoshang@users.noreply.github.com>
Co-authored-by: xgopilot <noreply@goplus.org>
2025-10-14 07:11:42 +00:00
xgopilot
441b4b15a8 test: add hash/maphash demo test case
Add test case in _demo/go/maphash to verify hash/maphash functionality
with the new runtime.rand and runtime.memhash support.

Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: luoliwoshang <luoliwoshang@users.noreply.github.com>
Co-authored-by: xgopilot <noreply@goplus.org>
2025-10-14 07:11:17 +00:00
visualfc
ccaf59ec62 runtime/internal/lib/reflect: fix Field closure kind to func 2025-09-26 10:27:56 +08:00
Haolan
e84f859d6c fix: unexpected string 2025-09-15 11:04:30 +08:00
Haolan
4b2e1e777c chore: move _embdemo to _demo 2025-09-15 10:57:31 +08:00
Haolan
e4f77f00a6 ci: fix clite init() causing linting failure 2025-09-14 23:06:09 +08:00
xushiwei
a202b484a9 Merge pull request #1285 from cpunion/impl-build-mode
Implement llgo build mode support
2025-09-14 10:30:47 +08:00
Li Jie
cc65ee18b5 full test params passing of exported functions 2025-09-12 10:08:01 +08:00
Li Jie
c3b674d804 add export demo and test 2025-09-11 14:08:52 +08:00
Li Jie
64df39b3c5 reorganize: consolidate demo directories
- Consolidate _demo, _pydemo, _embdemo into single _demo directory structure
- Organize demos by language: _demo/{go,py,c,embed}/
- Categorize demos based on imports:
- Python library demos (py imports) → _demo/py/
- C/C++ library demos (c/cpp imports) → _demo/c/
- Go-specific demos → _demo/go/
- Embedded demos → _demo/embed/
- Move C-related demos (asm*, cabi*, cgo*, linkname, targetsbuild) from go/ to c/
- Update all path references in README.md and GitHub workflows
- Improve demo organization and navigation as requested in #1256

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-09 15:06:55 +08:00
xushiwei
6144987f06 Merge pull request #1224 from luoliwoshang/instr/asmfull
cl(feat): llgo.asm implement tinygo.AsmFull
2025-08-28 11:41:31 +08:00
visualfc
69fe6d6377 runtime/internal/lib/os: fix readdir for darwin-amd64 2025-08-26 22:23:30 +08:00
xushiwei
d87deebbef Merge pull request #1231 from visualfc/cabi_alloca
internal/cabi: fix llvm.alloca for callInsrt
2025-08-24 08:38:02 +08:00
visualfc
cd69092a60 internal/cabi: fix llvm.alloca for callInsrt 2025-08-22 19:16:06 +08:00
Li Jie
3ce63965bf refine build.sh and CI 2025-08-22 08:54:55 +08:00
Li Jie
ad8aa6ac1a add __dynamic_loader into targetsbuild for nintendo switch 2025-08-22 08:42:01 +08:00
Li Jie
d3d39876d3 report llvm-target/cpu empty warning in all targets check 2025-08-22 07:41:59 +08:00
Li Jie
90a16e8c90 add handleInterrupt into _demo/targetsbuild 2025-08-22 07:39:18 +08:00
Li Jie
ea6266c79f add _demo/targetsbuld/build-all.sh to check all targets 2025-08-22 07:09:42 +08:00
Li Jie
077f114373 _demo/empty -> _demo/targetsbuild 2025-08-22 07:09:42 +08:00
luoliwoshang
d548671b91 test:linux with leaq to confirm asmFull 2025-08-21 23:44:46 +08:00
luoliwoshang
ef1f2bce49 test:linux asmFull function test 2025-08-21 23:44:46 +08:00
luoliwoshang
b428a8af08 test:asmFull function test 2025-08-21 23:44:46 +08:00
Li Jie
2f8f85a404 filter out failed targets in ci 2025-08-21 22:20:46 +08:00
Li Jie
87c50cf22a _demo/empty exports Reset_Handler and handleHardFault (to compatible with tinygo) 2025-08-21 22:18:14 +08:00
Li Jie
2eb7d542d2 targets supports code-model, target-abi, relocation-model 2025-08-21 20:43:43 +08:00
Li Jie
c414add29f update targets tests 2025-08-21 19:51:20 +08:00
luoliwoshang
1d76f515e0 internal/build:support relocatable lib 2025-08-19 22:48:23 +08:00
xushiwei
cbac24cf97 Merge pull request #1188 from visualfc/cabi
cabi transform
2025-08-19 14:56:10 +08:00
luoliwoshang
a148964878 feat:llgo.Asm
test:asm test with `nop`
2025-08-17 16:50:16 +08:00
visualfc
7b36cca86b _demo/cabi: abi test demo 2025-08-12 09:46:03 +08:00
visualfc
56f90dbcf9 ssa: fix TypeAssert check null 2025-08-08 12:11:17 +08:00
xushiwei
1f94cfbe57 Merge pull request #1173 from luoliwoshang/os/direntNamePtr
os:direntNamePtr for array
2025-08-07 16:59:56 +08:00
Li Jie
6f829d0d43 add empty demo for build -target tests 2025-07-30 20:16:29 +08:00
luoliwoshang
417a5692e3 os:direntNamePtr for array 2025-06-26 11:44:40 +08:00
luoliwoshang
9001cdb8f2 test:lib/cpp test 2025-06-11 21:11:21 +08:00
luoliwoshang
701568e011 internal:forkAndExecInChild chdir 2025-06-05 18:54:25 +08:00
xushiwei
ab15f30b13 _demo: hello 2025-04-26 22:55:46 +08:00
Li Jie
3a883b8821 upgrade to github.com/goplus/lib v0.2.0 2025-04-08 19:32:26 +08:00
Li Jie
f0ade21155 update docs and CI 2025-04-08 11:12:59 +08:00
Li Jie
c8d791f206 fix llgo test unit test 2025-04-03 16:32:46 +08:00
Li Jie
ed366568b4 move out c/cpp/py 2025-04-03 16:26:11 +08:00
visualfc
00e3b6b5a0 _demo/defer 2025-02-27 14:38:25 +08:00
Li Jie
22f4924d8e runtime: safe mutex initialization 2025-02-16 20:52:22 +08:00
Li Jie
8116d34a60 runtime: runtime.Callers, runtime.CallersFrames 2025-02-15 11:18:03 +08:00
Li Jie
2d06dc5cfe demo: call println, c.Printf, fmt.Println 2025-02-14 19:02:35 +08:00
Li Jie
946f304bb2 compiler: add go test command 2025-02-13 15:47:13 +08:00