Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ld.lld: error: undefined symbol: __rc4 to __rc24 #450

Closed
danacr opened this issue Feb 25, 2024 · 3 comments
Closed

ld.lld: error: undefined symbol: __rc4 to __rc24 #450

danacr opened this issue Feb 25, 2024 · 3 comments

Comments

@danacr
Copy link

danacr commented Feb 25, 2024

Hello,

When trying to use llvm-mos to port tinygo to the 6502 (tinygo-org/tinygo#4051) I started encountering the following issues. Could you please let us know why are these function called for a program that just prints a string?

package main

func main() {
	println("hello world")
}
❯ ../tinygo/build/tinygo build -target=6502 main.go
tinygo:ld.lld: error: undefined symbol: __rc4
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced 67 more times

tinygo:ld.lld: error: undefined symbol: __rc5
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:35 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:35)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_store_2)
>>> referenced 43 more times

tinygo:ld.lld: error: undefined symbol: __rc3
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:35 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:35)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_store_2)
>>> referenced by atomics_critical.go:42 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:42)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced 24 more times

tinygo:ld.lld: error: undefined symbol: __rc2
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced by atomics_critical.go:27 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:27)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_load_2)
>>> referenced 160 more times

tinygo:ld.lld: error: undefined symbol: __rc6
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_store_2)
>>> referenced by atomics_critical.go:35 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:35)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_store_2)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced 46 more times

tinygo:ld.lld: error: undefined symbol: __rc7
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced by atomics_critical.go:43 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:43)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced by atomics_critical.go:57 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:57)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_compare_exchange_2)
>>> referenced 30 more times

tinygo:ld.lld: error: undefined symbol: __rc9
>>> referenced by atomics_critical.go:42 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:42)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced 13 more times

tinygo:ld.lld: error: undefined symbol: __rc8
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS16)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_compare_exchange_2)
>>> referenced 24 more times

tinygo:ld.lld: error: undefined symbol: __rc10
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_compare_exchange_4)
>>> referenced 16 more times

tinygo:ld.lld: error: undefined symbol: __rc11
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:132 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:132)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(__atomic_compare_exchange_4)
>>> referenced 14 more times

tinygo:ld.lld: error: undefined symbol: __rc12
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced 20 more times

tinygo:ld.lld: error: undefined symbol: __rc13
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced 5 more times

tinygo:ld.lld: error: undefined symbol: __rc14
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced 4 more times

tinygo:ld.lld: error: undefined symbol: __rc15
>>> referenced by atomics_critical.go:131 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:131)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS32)
>>> referenced 4 more times

tinygo:ld.lld: error: undefined symbol: __rc16
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced 9 more times

tinygo:ld.lld: error: undefined symbol: __rc20
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced 19 more times

tinygo:ld.lld: error: undefined symbol: __rc21
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced 12 more times

tinygo:ld.lld: error: undefined symbol: __rc22
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced 2 more times

tinygo:ld.lld: error: undefined symbol: __rc23
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced 2 more times

tinygo:ld.lld: error: undefined symbol: __rc24
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:220 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:220)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced by atomics_critical.go:0 (/Users/danacristinii/Dev/tinygo/src/runtime/atomics_critical.go:0)
>>>               /Users/danacristinii/Library/Caches/tinygo/thinlto/llvmcache-E8123ADB7ED4283A7ED80802A183CCC09DF85A56:(runtime.doAtomicCAS64)
>>> referenced 2 more times

tinygo:ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
failed to run tool: ld.lld
error: failed to link /var/folders/_j/3mkdqkjj3hscfyn2rvv6bss40000gn/T/tinygo3932693917/main: exit status 1
@asiekierka
Copy link
Contributor

The undefined symbol: __rc24 errors refer to the imaginary registers mechanism. They are necessary to run any code compiled with LLVM-MOS, and should be provided by the linker script for the specific platform you're targeting - https://github.com/llvm-mos/llvm-mos-sdk has the entire default apparatus for doing so.

@danacr
Copy link
Author

danacr commented Feb 25, 2024

thank you very much @asiekierka for the information! will get back to it :)

@danacr danacr closed this as completed Feb 25, 2024
@johnwbyrd
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants