Re: [PATCH] Native spinlock support on RISC-V
От | Thomas Munro |
---|---|
Тема | Re: [PATCH] Native spinlock support on RISC-V |
Дата | |
Msg-id | CA+hUKGKH2Xg0GBqrBfT6qdxjXFpAWhCfC18bWROoqrZTwA_uBA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [PATCH] Native spinlock support on RISC-V (Thomas Munro <thomas.munro@gmail.com>) |
Список | pgsql-hackers |
On Wed, Nov 3, 2021 at 5:41 PM Thomas Munro <thomas.munro@gmail.com> wrote: > 'generic' is not a recognized processor for this target (ignoring processor) I still don't know what's wrong but I spent 20 minutes searching for more clues this morning... First, 'generic' is coming from LLVMGetHostCPUName(), and yet it's not accepted by LLVMCreateTargetMachine(). Ok then, let's try something else: $ clang12 --print-supported-cpus Target: riscv64-portbld-freebsd13.0 Thread model: posix InstalledDir: /usr/local/llvm12/bin Available CPUs for this target: generic-rv32 generic-rv64 rocket-rv32 rocket-rv64 sifive-7-rv32 sifive-7-rv64 sifive-e31 sifive-e76 sifive-u54 sifive-u74 So I hacked my copy of PostgreSQL thusly: + cpu = LLVMCreateMessage("generic-rv64"); ... and now I get: 2021-11-03 20:27:28.487 UTC [26880] FATAL: fatal llvm error: Relocation type not implemented yet! Taking that at face value, instead of LLVMRelocDefault, I tried a couple of other values like LLVMRelocDynamicNoPic, but same result. So I attached a debugger to see the stack producing the error, and huh, I see a clue that it's confusing this architecture with SystemZ (= IBM mainframe). (gdb) break fatal_llvm_error_handler Function "fatal_llvm_error_handler" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (fatal_llvm_error_handler) pending. (gdb) cont Continuing. Breakpoint 1, fatal_llvm_error_handler (user_data=0x0, reason="Relocation type not implemented yet!", gen_crash_diag=true) at llvmjit_error.cpp:147 147 ereport(FATAL, (gdb) bt #0 fatal_llvm_error_handler (user_data=0x0, reason="Relocation type not implemented yet!", gen_crash_diag=true) at llvmjit_error.cpp:147 #1 0x000000004dc3729a in llvm::report_fatal_error(llvm::Twine const&, bool) () from /usr/local/llvm12/lib/libLLVM-12.so #2 0x000000004dc371d0 in llvm::report_fatal_error(char const*, bool) () from /usr/local/llvm12/lib/libLLVM-12.so #3 0x000000004ef61010 in llvm::RuntimeDyldELF::resolveSystemZRelocation(llvm::SectionEntry const&, unsigned long, unsigned long, unsigned int, long) () from /usr/local/llvm12/lib/libLLVM-12.so #4 0x000000004ef547c6 in llvm::RuntimeDyldImpl::applyExternalSymbolRelocations(llvm::StringMap<llvm::JITEvaluatedSymbol, llvm::MallocAllocator>) () from /usr/local/llvm12/lib/libLLVM-12.so #5 0x000000004ef54fb4 in ?? () from /usr/local/llvm12/lib/libLLVM-12.so #6 0x000000004ef54be6 in llvm::RuntimeDyldImpl::finalizeAsync(std::__1::unique_ptr<llvm::RuntimeDyldImpl, std::__1::default_delete<llvm::RuntimeDyldImpl> >, llvm::unique_function<void (llvm::object::OwningBinary<llvm::object::ObjectFile>, std::__1::unique_ptr<llvm::RuntimeDyld::LoadedObjectInfo, std::__1::default_delete<llvm::RuntimeDyld::LoadedObjectInfo> >, llvm::Error)>, llvm::object::OwningBinary<llvm::object::ObjectFile>, std::__1::unique_ptr<llvm::RuntimeDyld::LoadedObjectInfo, std::__1::default_delete<llvm::RuntimeDyld::LoadedObjectInfo> >) () from /usr/local/llvm12/lib/libLLVM-12.so #7 0x000000004ef55e2a in llvm::jitLinkForORC(llvm::object::OwningBinary<llvm::object::ObjectFile>, llvm::RuntimeDyld::MemoryManager&, llvm::JITSymbolResolver&, bool, llvm::unique_function<llvm::Error (llvm::object::ObjectFile const&, llvm::RuntimeDyld::LoadedObjectInfo&, std::__1::map<llvm::StringRef, llvm::JITEvaluatedSymbol, std::__1::less<llvm::StringRef>, std::__1::allocator<std::__1::pair<llvm::StringRef const, llvm::JITEvaluatedSymbol> > >)>, llvm::unique_function<void (llvm::object::OwningBinary<llvm::object::ObjectFile>, std::__1::unique_ptr<llvm::RuntimeDyld::LoadedObjectInfo, std::__1::default_delete<llvm::RuntimeDyld::LoadedObjectInfo> >, llvm::Error)>) () from /usr/local/llvm12/lib/libLLVM-12.so #8 0x000000004ef421ea in llvm::orc::RTDyldObjectLinkingLayer::emit(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) () from /usr/local/llvm12/lib/libLLVM-12.so #9 0x000000004ef3e946 in llvm::orc::ObjectTransformLayer::emit(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) () from /usr/local/llvm12/lib/libLLVM-12.so #10 0x000000004ef25c0c in llvm::orc::IRCompileLayer::emit(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) () from /usr/local/llvm12/lib/libLLVM-12.so #11 0x000000004ef25fb2 in llvm::orc::IRTransformLayer::emit(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) () from /usr/local/llvm12/lib/libLLVM-12.so #12 0x000000004ef25fb2 in llvm::orc::IRTransformLayer::emit(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) () from /usr/local/llvm12/lib/libLLVM-12.so #13 0x000000004ef2a614 in llvm::orc::BasicIRLayerMaterializationUnit::materialize(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >) () from /usr/local/llvm12/lib/libLLVM-12.so #14 0x000000004ef08dc2 in ?? () from /usr/local/llvm12/lib/libLLVM-12.so #15 0x000000004ef0f61c in std::__1::__function::__func<void (*)(std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >, std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >), std::__1::allocator<void (*)(std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >, std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >)>, void (std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >, std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >)>::operator()(std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&, std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility> >&&) () from /usr/local/llvm12/lib/libLLVM-12.so #16 0x000000004ef09c12 in llvm::orc::ExecutionSession::dispatchOutstandingMUs() () from /usr/local/llvm12/lib/libLLVM-12.so #17 0x000000004ef0b684 in llvm::orc::ExecutionSession::OL_completeLookup(std::__1::unique_ptr<llvm::orc::InProgressLookupState, std::__1::default_delete<llvm::orc::InProgressLookupState> >, std::__1::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) () from /usr/local/llvm12/lib/libLLVM-12.so #18 0x000000004ef141ee in ?? () from /usr/local/llvm12/lib/libLLVM-12.so #19 0x000000004ef01c1e in llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::__1::unique_ptr<llvm::orc::InProgressLookupState, std::__1::default_delete<llvm::orc::InProgressLookupState> >, llvm::Error) () from /usr/local/llvm12/lib/libLLVM-12.so #20 0x000000004ef0096c in llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSy--Type <RET> for more, q to quit, c to continue without paging-- mbol> > >)>, std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) () from /usr/local/llvm12/lib/libLLVM-12.so #21 0x000000004ef09f8a in llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet const&, llvm::orc::LookupKind, llvm::orc::SymbolState, std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) () from /usr/local/llvm12/lib/libLLVM-12.so #22 0x000000004ef0a2ba in llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr, llvm::orc::SymbolState) () from /usr/local/llvm12/lib/libLLVM-12.so #23 0x000000004ef2b724 in llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::orc::SymbolStringPtr) () from /usr/local/llvm12/lib/libLLVM-12.so #24 0x000000004ef41364 in LLVMOrcLLJITLookup () from /usr/local/llvm12/lib/libLLVM-12.so #25 0x0000000041a67c06 in llvm_get_function (context=0x41f75530, funcname=0x41ff8070 "evalexpr_0_0") at llvmjit.c:311 #26 0x0000000041a73b9c in ExecRunCompiledExpr (state=0x41ff7770, econtext=0x41ff7470, isNull=0x3fffffd5b7) at llvmjit_expr.c:2402 #27 0x00000000004f70ea in ExecEvalExprSwitchContext (state=0x41ff7770, econtext=0x41ff7470, isNull=0x3fffffd5b7) at ../../../src/include/executor/executor.h:339 #28 ExecProject (projInfo=0x41ff7768) at ../../../src/include/executor/executor.h:373 #29 ExecResult (pstate=<optimized out>) at nodeResult.c:136 #30 0x00000000004c90b0 in ExecProcNode (node=0x41ff7358) at ../../../src/include/executor/executor.h:257 #31 ExecutePlan (estate=0x41ff7120, planstate=0x41ff7358, use_parallel_mode=<optimized out>, operation=<optimized out>, numberTuples=<optimized out>, direction=<optimized out>, dest=0x41ff5d80, execute_once=<optimized out>, sendTuples=<optimized out>) at execMain.c:1551 #32 standard_ExecutorRun (queryDesc=0x41e9c520, direction=<optimized out>, count=<optimized out>, execute_once=<optimized out>) at execMain.c:361 #33 0x000000000064e356 in PortalRunSelect (portal=0x41f24120, forward=<optimized out>, count=0, dest=<optimized out>) at pquery.c:921 #34 0x000000000064df50 in PortalRun (portal=0x41f24120, count=9223372036854775807, isTopLevel=true, run_once=<optimized out>, dest=0x41ff5d80, altdest=0x41ff5d80, qc=0x3fffffd9b8) at pquery.c:765 #35 0x000000000064d040 in exec_simple_query (query_string=0x41e1f120 "select 1 + 1;") at postgres.c:1214 #36 0x000000000064a674 in PostgresMain (dbname=<optimized out>, username=<optimized out>) at postgres.c:4313 #37 0x00000000005b62d6 in BackendRun (port=<optimized out>) at postmaster.c:4560 #38 0x00000000005b5ab2 in BackendStartup (port=0x41ec2000) at postmaster.c:4288 #39 ServerLoop () at postmaster.c:1801 #40 0x00000000005b2fec in PostmasterMain (argc=3, argv=0x3fffffeac0) at postmaster.c:1473 #41 0x000000000051d8ca in main (argc=3, argv=0x3fffffeac0) at main.c:198
В списке pgsql-hackers по дате отправления: