Compilation fails on OpenBSD/mips64
brad0 opened this issue · 8 comments
Trying to build Boost 1.73 on OpenBSD/mips64 it fails to link the context library as shown..
"c++" -o "bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/libboost_context-mt.so.14.0" -Wl,-soname -Wl,libboost_context-mt.so.14.0 -shared -Wl,--start-group "bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/asm/make_mips64_n64_elf_gas.o" "bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/asm/jump_mips64_n64_elf_gas.o" "bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/asm/ontop_mips64_n64_elf_gas.o" "bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/posix/stack_traits.o" -Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -fPIC -pthread -fvisibility=hidden -fvisibility-inlines-hidden
/usr/bin/ld: bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/asm/make_mips64_n64_elf_gas.o: CALL16 reloc at 0x14 not against global symbol
bin.v2/libs/context/build/clang-linux-11.1.0/release/pch-off/threading-multi/visibility-hidden/asm/make_mips64_n64_elf_gas.o: could not read symbols: Bad value
c++: error: linker command failed with exit code 1 (use -v to see invocation)
I do not have access to a MIPS64 system so I can't debug/test it (code was contributed by another user) ... sorry.
I'm guessing this is clang+lld. There's a comment here:
https://github.com/boostorg/context/blob/develop/src/asm/make_mips64_n64_elf_gas.S#L86
I'm guessing this is clang+lld. There's a comment here:
We're currently utilizing clang + ld.bfd. We have been slowly converting to lld but powerpc and mips64 are still to go.
wait a minute... are you building with mips16?
wait a minute... are you building with mips16?
Hrmm? Only mips64.
Maybe patch out the entries in build/Jamfile.v2 .
edit: could also be a PIC problem. Who knows.
Could you please help take a look at which symbol it is calling? I have no clues.
It looks like with me pushing an update to Boost 1.76 that context now builds Ok on mips64.