Roger Pack via llvm-dev
2017-Jan-16 18:30 UTC
[llvm-dev] cross compile thread local not link?
As a note, using crystal to cross compile (uses llvm "emit object code" method): if I cross compile initially on OS X --target x86_64-unknown-windows-cygnus , I get this: .build/crystal_cyg.o:(.text+0x5c8): undefined reference to `_tls_index' .build/crystal_cyg.o:(.text+0x5c8): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `_tls_index' ... .build/crystal_cyg.o:(.text+0x7b07b3): undefined reference to `LLVMInitializeARMAsmPrinter' .build/crystal_cyg.o:(.text+0x959227): undefined reference to `LLVMSetModuleDataLayout' collect2: error: ld returned 1 exit status I believe this failure means that it is having some kind of link failure for "thread local storage" (AFAIK cygwin has no tls_index) so it's something of an incompatibility LLVM introduces [?] The LLVMInitializeARMAsmPrinter reference I assume means the llvm's were built with different options initially, and/or different versions, but I never got that far to resolve those. Similar thing if cross compiled initially on linux: .build/crystal_cyg.o:(.text+0x5c9): undefined reference to `__emutls_v.Thread::current:init' .build/crystal_cyg.o:(.text+0x5c9): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__emutls_v.Thread::current:init' .build/crystal_cyg.o:(.text+0x7aa3b4): undefined reference to `LLVMInitializeAArch64TargetInfo' ... Are these expected? Cheers!