[PATCH] D95354: [yaml2obj] - Refine how we set the sh_link field. NFCI.
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 26 02:04:18 PST 2021
grimar added a comment.
In D95354#2522343 <https://reviews.llvm.org/D95354#2522343>, @jhenderson wrote:
> In D95354#2522323 <https://reviews.llvm.org/D95354#2522323>, @grimar wrote:
>
>> It turns out this wasn't NFC, one of LLDB test cases started to crash.
>> I've fixed it in rG2a33b092f5b175a21680b3980ff2019bc1c65b12 <https://reviews.llvm.org/rG2a33b092f5b175a21680b3980ff2019bc1c65b12>.
>>
>> The difference was that before this patch we set the `sh_link` for symbol tables basing on their names (E.g ".symtab"),
>> now we set this field basing on section types (e.g SHT_SYMTAB).
>> The mentioned test case has a `.text` section of type `SHT_SYMTAB` and it did not expect to see a sh_link field set it seeems.
>
> Based on my casual reading of that test, I wonder if you found a bug in the tool there - it looks like the intent is for section types to trump section names, which surely should mean the use of sh_link would be correctin this case? Perhaps we should highlight this to the LLDB developers (pinging @JDevlieghere for example).
Yeah, thanks! I was a bit too focused on fixing the BB ASAP and watching on it :)
FTR, the crash dump was:
******************** TEST 'lldb-shell :: ObjectFile/ELF/section-types-edgecases.yaml' FAILED ********************
Script:
--
: 'RUN: at line 5'; /home/worker/2.0.1/lldb-x86_64-debian/build/bin/yaml2obj /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/Shell/ObjectFile/ELF/section-types-edgecases.yaml -o /home/worker/2.0.1/lldb-x86_64-debian/build/tools/lldb/test/ObjectFile/ELF/Output/section-types-edgecases.yaml.tmp
: 'RUN: at line 6'; /home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test object-file /home/worker/2.0.1/lldb-x86_64-debian/build/tools/lldb/test/ObjectFile/ELF/Output/section-types-edgecases.yaml.tmp | /home/worker/2.0.1/lldb-x86_64-debian/build/bin/FileCheck /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/Shell/ObjectFile/ELF/section-types-edgecases.yaml
--
Exit Code: 2
Command Output (stderr):
--
#0 0x0000000000532803 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x532803)
#1 0x00000000005305bc llvm::sys::RunSignalHandlers() (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x5305bc)
#2 0x0000000000532bb6 SignalHandler(int) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x532bb6)
#3 0x00007f5fafb5b730 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12730)
#4 0x0000000000945802 ObjectFileELF::ParseSymbolTable(lldb_private::Symtab*, unsigned long, lldb_private::Section*) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x945802)
#5 0x0000000000946d79 ObjectFileELF::GetSymtab() (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x946d79)
#6 0x0000000000a3d057 SymbolFileDWARFDebugMap::InitOSO() (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0xa3d057)
#7 0x0000000000a3db99 SymbolFileDWARFDebugMap::CalculateNumCompileUnits() (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0xa3db99)
#8 0x00000000006b2402 lldb_private::SymbolFile::GetNumCompileUnits() (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x6b2402)
#9 0x0000000000a3db69 SymbolFileDWARFDebugMap::CalculateAbilities() (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0xa3db69)
#10 0x00000000006b2179 lldb_private::SymbolFile::FindPlugin(std::shared_ptr<lldb_private::ObjectFile>) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x6b2179)
#11 0x00000000006b3564 lldb_private::SymbolVendor::AddSymbolFileRepresentation(std::shared_ptr<lldb_private::ObjectFile> const&) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x6b3564)
#12 0x00000000006b344c lldb_private::SymbolVendor::FindPlugin(std::shared_ptr<lldb_private::Module> const&, lldb_private::Stream*) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x6b344c)
#13 0x00000000005aea45 lldb_private::Module::GetSymbolFile(bool, lldb_private::Stream*) (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x5aea45)
#14 0x00000000004c8df8 main (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x4c8df8)
#15 0x00007f5faf0d209b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409b)
#16 0x00000000004c468a _start (/home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test+0x4c468a)
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/worker/2.0.1/lldb-x86_64-debian/build/bin/lldb-test object-file /home/worker/2.0.1/lldb-x86_64-debian/build/tools/lldb/test/ObjectFile/ELF/Output/section-types-edgecases.yaml.tmp
FileCheck error: '<stdin>' is empty.
FileCheck command line: /home/worker/2.0.1/lldb-x86_64-debian/build/bin/FileCheck /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/Shell/ObjectFile/ELF/section-types-edgecases.yaml
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95354/new/
https://reviews.llvm.org/D95354
More information about the llvm-commits
mailing list