[PATCH] D98305: [JITLink] Introduce generic x86-64 support by refactoring MachO/x86-64.
Nathaniel McVicar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 14 18:24:36 PDT 2021
NathanielMcVicar added a comment.
I believe this change, or one of the subsequent ones (I can't find them on Differential, sorry), broke a test on the Windows Debug build.
Failed Tests (1):
LLVM :: ExecutionEngine/JITLink/X86/ELF_skip_debug_sections.s
Here's the trace:
E:\llvm-project-merge\build_windows>"e:\llvm-project-merge\build_windows\bin\llvm-jitlink.exe" "-debug-only=jitlink" "-noexec" "E:\llvm-project-merge\build_windows\test\ExecutionEngine\JITLink\X86\Output\ELF_skip_debug_sections.s.tmp"
Building jitlink graph for new input E:\llvm-project-merge\build_windows\test\ExecutionEngine\JITLink\X86\Output\ELF_skip_debug_sections.s.tmp...
Creating normalized sections...
.strtab: 0x0000000000000000 -- 0x00000000000000ab, align: 1 Flags: 0x0
.text: 0x0000000000000000 -- 0x0000000000000016, align: 16 Flags: 0x6
.debug_str is a debug section: No graph section will be created.
.debug_abbrev is a debug section: No graph section will be created.
.debug_info is a debug section: No graph section will be created.
.rela.debug_info: 0x0000000000000000 -- 0x0000000000000150, align: 8 Flags: 0x0
.comment: 0x0000000000000000 -- 0x0000000000000020, align: 1 Flags: 0x30
.debug_line is a debug section: No graph section will be created.
.rela.debug_line: 0x0000000000000000 -- 0x0000000000000018, align: 8 Flags: 0x0
.eh_frame: 0x0000000000000000 -- 0x0000000000000040, align: 8 Flags: 0x2
.rela.eh_frame: 0x0000000000000000 -- 0x0000000000000030, align: 8 Flags: 0x0
.symtab: 0x0000000000000000 -- 0x00000000000000c0, align: 8 Flags: 0x0
Creating normalized symbols...
value = 0x0000000000000000, type = 0x00, binding = 0x00, size = 0x0000000000000000, info = 0x00 :
value = 0x0000000000000000, type = 0x04, binding = 0x00, size = 0x0000000000000000, info = 0x04 :ELF_skip_debug_sections.c
value = 0x0000000000000000, type = 0x03, binding = 0x00, size = 0x0000000000000000, info = 0x03 :
value = 0x0000000000000000, type = 0x03, binding = 0x00, size = 0x0000000000000000, info = 0x03 :
value = 0x0000000000000000, type = 0x03, binding = 0x00, size = 0x0000000000000000, info = 0x03 :
value = 0x0000000000000000, type = 0x03, binding = 0x00, size = 0x0000000000000000, info = 0x03 :
value = 0x0000000000000000, type = 0x02, binding = 0x01, size = 0x0000000000000006, info = 0x12 :foo
value = 0x0000000000000010, type = 0x02, binding = 0x01, size = 0x0000000000000006, info = 0x12 :main
Creating graph symbols...
Processing symbol section .symtab:
at index 2
foo at index 6
main at index 7
Adding relocations
Adding relocations from section .rela.debug_info
Target is dwarf section .debug_info. Skipping.
Adding relocations from section .rela.debug_line
Target is dwarf section .debug_line. Skipping.
Adding relocations from section .rela.eh_frame
For target section .eh_frame
Relocation Type: 2
Name: R_X86_64_PC32
Processing relocation at 0x0000000000000020
edge at 0x0000000000000020: 0x0000000000000000 + 0x20 -- PCRel32 -> .text
Relocation Type: 2
Name: R_X86_64_PC32
Processing relocation at 0x0000000000000034
edge at 0x0000000000000034: 0x0000000000000000 + 0x34 -- PCRel32 -> .text + 16
Starting link phase 1 for graph E:\llvm-project-merge\build_windows\test\ExecutionEngine\JITLink\X86\Output\ELF_skip_debug_sections.s.tmp
EHFrameSplitter: Processing .eh_frame...
Processing block at 0x0000000000000000
Processing CFI record at 0x0000000000000000
Extracted 0x0000000000000000 -- 0x00000018: size = 0x00000018, content, align = 8, align-ofs = 0, section = .eh_frame
Processing CFI record at 0x0000000000000018
Extracted 0x0000000000000018 -- 0x0000002c: size = 0x00000014, content, align = 8, align-ofs = 0, section = .eh_frame
Processing CFI record at 0x000000000000002c
Extracted 0x000000000000002c -- 0x00000040: size = 0x00000014, content, align = 8, align-ofs = 4, section = .eh_frame
EHFrameEdgeFixer: Processing .eh_frame...
Processing block at 0x0000000000000000
Processing CFI record at 0x0000000000000000
Record is CIE
Processing block at 0x0000000000000018
Processing CFI record at 0x0000000000000018
Record is FDE
Adding edge at 0x000000000000001c to CIE at: 0x0000000000000000
Already has edge at 0x0000000000000020 to PC at 0x0000000000000000
Adding keep-alive edge from target at 0x0000000000000000 to FDE at 0x0000000000000018
Record does not have LSDA field.
Processing block at 0x000000000000002c
Processing CFI record at 0x000000000000002c
Record is FDE
Adding edge at 0x0000000000000030 to CIE at: 0x0000000000000000
Already has edge at 0x0000000000000034 to PC at 0x0000000000000000 + 0x0000000000000010
Adding keep-alive edge from target at 0x0000000000000000 to FDE at 0x000000000000002c
Record does not have LSDA field.
EHFrameNullTerminator adding null terminator to .eh_frame
Link graph "E:\llvm-project-merge\build_windows\test\ExecutionEngine\JITLink\X86\Output\ELF_skip_debug_sections.s.tmp" pre-pruning:
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: e:\\llvm-project-merge\\build_windows\\bin\\llvm-jitlink.exe -debug-only=jitlink -noexec E:\\llvm-project-merge\\build_windows\\test\\ExecutionEngine\\JITLink\\X86\\Output\\ELF_skip_debug_sections.s.tmp
#0 0x00007ff7a1cbb55e std::_Debug_lt_pred<<lambda_7aeefcb115b0a8ce43b4c96fdac18921> &,llvm::jitlink::Symbol * &,llvm::jitlink::Symbol * &,0> C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29910\include\xutility:1626:0
#1 0x00007ff7a1cbccc0 std::_Insertion_sort_unchecked<llvm::jitlink::Symbol * *,<lambda_7aeefcb115b0a8ce43b4c96fdac18921> > C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29910\include\algorithm:7361:0
#2 0x00007ff7a1cc0a8c std::_Sort_unchecked<llvm::jitlink::Symbol * *,<lambda_7aeefcb115b0a8ce43b4c96fdac18921> > C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29910\include\algorithm:7486:0
#3 0x00007ff7a1cc487e std::sort<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<llvm::jitlink::Symbol *> > >,<lambda_7aeefcb115b0a8ce43b4c96fdac18921> > C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29910\include\algorithm:7516:0
#4 0x00007ff7a1cc47a1 llvm::sort<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<llvm::jitlink::Symbol *> > >,<lambda_7aeefcb115b0a8ce43b4c96fdac18921> > E:\llvm-project-merge\llvm\include\llvm\ADT\STLExtras.h:1449:0
#5 0x00007ff7a1cc436b llvm::sort<std::vector<llvm::jitlink::Symbol *,std::allocator<llvm::jitlink::Symbol *> > &,<lambda_7aeefcb115b0a8ce43b4c96fdac18921> > E:\llvm-project-merge\llvm\include\llvm\ADT\STLExtras.h:1454:0
#6 0x00007ff7a1cb6822 llvm::jitlink::LinkGraph::dump(class llvm::raw_ostream &) E:\llvm-project-merge\llvm\lib\ExecutionEngine\JITLink\JITLink.cpp:252:0
#7 0x00007ff7a1d35ca3 llvm::jitlink::JITLinkerBase::linkPhase1(class std::unique_ptr<class llvm::jitlink::JITLinkerBase, struct std::default_delete<class llvm::jitlink::JITLinkerBase>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\JITLink\JITLinkGeneric.cpp:35:0
#8 0x00007ff7a1ce238d llvm::jitlink::JITLinker<class llvm::jitlink::ELFJITLinker_x86_64>::link<class std::unique_ptr<class llvm::jitlink::JITLinkContext, struct std::default_delete<class llvm::jitlink::JITLinkContext>>, class std::unique_ptr<class llvm::jitlink::LinkGraph, struct std::default_delete<class llvm::jitlink::LinkGraph>>, struct llvm::jitlink::PassConfiguration>(class std::unique_ptr<class llvm::jitlink::JITLinkContext, struct std::default_delete<class llvm::jitlink::JITLinkContext>> &&, class std::unique_ptr<class llvm::jitlink::LinkGraph, struct std::default_delete<class llvm::jitlink::LinkGraph>> &&, struct llvm::jitlink::PassConfiguration &&) E:\llvm-project-merge\llvm\lib\ExecutionEngine\JITLink\JITLinkGeneric.h:140:0
#9 0x00007ff7a1cd46d6 llvm::jitlink::link_ELF_x86_64(class std::unique_ptr<class llvm::jitlink::LinkGraph, struct std::default_delete<class llvm::jitlink::LinkGraph>>, class std::unique_ptr<class llvm::jitlink::JITLinkContext, struct std::default_delete<class llvm::jitlink::JITLinkContext>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\JITLink\ELF_x86_64.cpp:931:0
#10 0x00007ff7a1cd0411 llvm::jitlink::link_ELF(class std::unique_ptr<class llvm::jitlink::LinkGraph, struct std::default_delete<class llvm::jitlink::LinkGraph>>, class std::unique_ptr<class llvm::jitlink::JITLinkContext, struct std::default_delete<class llvm::jitlink::JITLinkContext>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\JITLink\ELF.cpp:81:0
#11 0x00007ff7a1cb7ff0 llvm::jitlink::link(class std::unique_ptr<class llvm::jitlink::LinkGraph, struct std::default_delete<class llvm::jitlink::LinkGraph>>, class std::unique_ptr<class llvm::jitlink::JITLinkContext, struct std::default_delete<class llvm::jitlink::JITLinkContext>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\JITLink\JITLink.cpp:409:0
#12 0x00007ff7a219660f llvm::orc::ObjectLinkingLayer::emit(class std::unique_ptr<class llvm::orc::MaterializationResponsibility, struct std::default_delete<class llvm::orc::MaterializationResponsibility>>, class std::unique_ptr<class llvm::MemoryBuffer, struct std::default_delete<class llvm::MemoryBuffer>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\ObjectLinkingLayer.cpp:602:0
#13 0x00007ff7a218dfa8 llvm::orc::BasicObjectLayerMaterializationUnit::materialize(class std::unique_ptr<class llvm::orc::MaterializationResponsibility, struct std::default_delete<class llvm::orc::MaterializationResponsibility>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Layer.cpp:205:0
#14 0x00007ff7a210da99 llvm::orc::MaterializationTask::run(void) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:1760:0
#15 0x00007ff7a2185d8d llvm::orc::ExecutionSession::runOnCurrentThread(class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>>) E:\llvm-project-merge\llvm\include\llvm\ExecutionEngine\Orc\Core.h:1429:0
#16 0x00007ff7a211c098 llvm::detail::UniqueFunctionBase<void, class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>>>::CallImpl<void (__cdecl *)(class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>>)>(void *, class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>> &) E:\llvm-project-merge\llvm\include\llvm\ADT\FunctionExtras.h:206:0
#17 0x00007ff7a215c008 llvm::unique_function<(class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>>)>::operator()(class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>>) E:\llvm-project-merge\llvm\include\llvm\ADT\FunctionExtras.h:367:0
#18 0x00007ff7a217332c llvm::orc::ExecutionSession::dispatchTask(class std::unique_ptr<class llvm::orc::Task, struct std::default_delete<class llvm::orc::Task>>) E:\llvm-project-merge\llvm\include\llvm\ExecutionEngine\Orc\Core.h:1419:0
#19 0x00007ff7a210f147 llvm::orc::ExecutionSession::dispatchOutstandingMUs(void) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:2035:0
#20 0x00007ff7a2110edf llvm::orc::ExecutionSession::OL_completeLookup(class std::unique_ptr<class llvm::orc::InProgressLookupState, struct std::default_delete<class llvm::orc::InProgressLookupState>>, class std::shared_ptr<class llvm::orc::AsynchronousSymbolQuery>, class std::function<(class llvm::DenseMap<class llvm::orc::JITDylib *, class llvm::DenseSet<class llvm::orc::SymbolStringPtr, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>>, struct llvm::DenseMapInfo<class llvm::orc::JITDylib *>, struct llvm::detail::DenseMapPair<class llvm::orc::JITDylib *, class llvm::DenseSet<class llvm::orc::SymbolStringPtr, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>>>> const &)>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:2565:0
#21 0x00007ff7a2171408 llvm::orc::InProgressFullLookupState::complete(class std::unique_ptr<class llvm::orc::InProgressLookupState, struct std::default_delete<class llvm::orc::InProgressLookupState>>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:550:0
#22 0x00007ff7a2110995 llvm::orc::ExecutionSession::OL_applyQueryPhase1(class std::unique_ptr<class llvm::orc::InProgressLookupState, struct std::default_delete<class llvm::orc::InProgressLookupState>>, class llvm::Error) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:2321:0
#23 0x00007ff7a210e6c1 llvm::orc::ExecutionSession::lookup(enum llvm::orc::LookupKind, class std::vector<struct std::pair<class llvm::orc::JITDylib *, enum llvm::orc::JITDylibLookupFlags>, class std::allocator<struct std::pair<class llvm::orc::JITDylib *, enum llvm::orc::JITDylibLookupFlags>>> const &, class llvm::orc::SymbolLookupSet, enum llvm::orc::SymbolState, class llvm::unique_function<(class llvm::Expected<class llvm::DenseMap<class llvm::orc::SymbolStringPtr, class llvm::JITEvaluatedSymbol, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>, struct llvm::detail::DenseMapPair<class llvm::orc::SymbolStringPtr, class llvm::JITEvaluatedSymbol>>>)>, class std::function<(class llvm::DenseMap<class llvm::orc::JITDylib *, class llvm::DenseSet<class llvm::orc::SymbolStringPtr, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>>, struct llvm::DenseMapInfo<class llvm::orc::JITDylib *>, struct llvm::detail::DenseMapPair<class llvm::orc::JITDylib *, class llvm::DenseSet<class llvm::orc::SymbolStringPtr, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>>>> const &)>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:1925:0
#24 0x00007ff7a210e8a3 llvm::orc::ExecutionSession::lookup(class std::vector<struct std::pair<class llvm::orc::JITDylib *, enum llvm::orc::JITDylibLookupFlags>, class std::allocator<struct std::pair<class llvm::orc::JITDylib *, enum llvm::orc::JITDylibLookupFlags>>> const &, class llvm::orc::SymbolLookupSet const &, enum llvm::orc::LookupKind, enum llvm::orc::SymbolState, class std::function<(class llvm::DenseMap<class llvm::orc::JITDylib *, class llvm::DenseSet<class llvm::orc::SymbolStringPtr, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>>, struct llvm::DenseMapInfo<class llvm::orc::JITDylib *>, struct llvm::detail::DenseMapPair<class llvm::orc::JITDylib *, class llvm::DenseSet<class llvm::orc::SymbolStringPtr, struct llvm::DenseMapInfo<class llvm::orc::SymbolStringPtr>>>> const &)>) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:1966:0
#25 0x00007ff7a210eb10 llvm::orc::ExecutionSession::lookup(class std::vector<struct std::pair<class llvm::orc::JITDylib *, enum llvm::orc::JITDylibLookupFlags>, class std::allocator<struct std::pair<class llvm::orc::JITDylib *, enum llvm::orc::JITDylibLookupFlags>>> const &, class llvm::orc::SymbolStringPtr, enum llvm::orc::SymbolState) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:1987:0
#26 0x00007ff7a210ed8a llvm::orc::ExecutionSession::lookup(class llvm::ArrayRef<class llvm::orc::JITDylib *>, class llvm::orc::SymbolStringPtr, enum llvm::orc::SymbolState) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:1999:0
#27 0x00007ff7a210ee69 llvm::orc::ExecutionSession::lookup(class llvm::ArrayRef<class llvm::orc::JITDylib *>, class llvm::StringRef, enum llvm::orc::SymbolState) E:\llvm-project-merge\llvm\lib\ExecutionEngine\Orc\Core.cpp:2005:0
#28 0x00007ff7a1b9b192 getMainEntryPoint E:\llvm-project-merge\llvm\tools\llvm-jitlink\llvm-jitlink.cpp:1320:0
#29 0x00007ff7a1b9b72e main E:\llvm-project-merge\llvm\tools\llvm-jitlink\llvm-jitlink.cpp:1369:0
#30 0x00007ff7a32f7139 invoke_main D:\a01\_work\26\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79:0
#31 0x00007ff7a32f701e __scrt_common_main_seh D:\a01\_work\26\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0
#32 0x00007ff7a32f6ede __scrt_common_main D:\a01\_work\26\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331:0
#33 0x00007ff7a32f71ce mainCRTStartup D:\a01\_work\26\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0
#34 0x00007ffc92777034 (C:\WINDOWS\System32\KERNEL32.DLL+0x17034)
#35 0x00007ffc92cc2651 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x52651)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98305/new/
https://reviews.llvm.org/D98305
More information about the llvm-commits
mailing list