labath added a comment. I think we're getting pretty close. I have a couple of extra comments inline, but they're all pretty minor, I hope. I'd just like to add some more tests, per our discussion on the IRC, and I have some doubts about what exactly is the test you've written actually testing, which I'd like to clarify...
================ Comment at: lldb/CMakeLists.txt:101 - set(LLDB_TEST_DEPS lldb) + set(LLDB_TEST_DEPS lldb llvm-nm llvm-strip) ---------------- It looks like you're already adding these in `lldb/lit/CMakeLists.txt`. Does it need to be in both? ================ Comment at: lldb/include/lldb/Host/LZMA.h:24-25 + +llvm::Error getUncompressedSize(llvm::ArrayRef<uint8_t> InputBuffer, + uint64_t &uncompressedSize); + ---------------- Now that the vector is auto-resized, do you think it's still useful to expose the `getUncompressedSize` function as public api? If yes, then please change it to return Expected<uint64_t>. (returning Expected would be nice even for a private api, but there it's less important...) ================ Comment at: lldb/lit/Breakpoint/Inputs/minidebuginfo-lib.h:1 +// This function will be embedded within the .dynsym section. +int multiplyByThree(int num); ---------------- Hmm... so, what is the exact scenario you want to test here? This function will end up in the dynsym section of the main executable, but it will be an *undefined* symbol there. Undefined symbols are ignored in the gnu_debugdata logic. The symbol will be *defined* in the dynsym section of the shared library, but you're not debugdata-ing that one. While this scenario might be interesting to test, I am not sure if that's the one you actually intended... PS: If you want to create a file with both dynsym, and non-dynsym defined symbols, you don't have to resort to using shared libraries to achieve that. A suitable combination of -rdynamic and visibility("hidden") will achieve that too. For example the following line: ``` clang -x c - <<<'__attribute__((visibility("hidden"))) int in_symtab() { return 42; } int in_dynsym() { return 47; } int main() { return in_symtab()+in_dynsym(); }' -rdynamic ``` will generate a file where the in_symtab function will only be present in the symtab, and in_dynsym will be in the dynsym section (until you apply the debug-data magic, it will be in the symtab too)... ================ Comment at: lldb/lit/Breakpoint/minidebuginfo.test:32 + +# RUN: llvm-objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=keep_symbols %t.debug %t.mini_debuginfo + ---------------- Shouldn't this be `%t.keep_symbols`? Typo ? ================ Comment at: lldb/lit/lit.cfg.py:102 + +if config.lldb_enable_lzma == "ON": + config.available_features.add('lzma') ---------------- you should apply `llvm_canonicalize_cmake_booleans` to the value of LLDB_ENABLE_LZMA at the cmake level. Otherwise, this will blow up if someone types `-DLLDB_ENABLE_LZMA=On` ================ Comment at: lldb/source/Host/common/LZMA.cpp:72-82 + auto opts = lzma_stream_flags{}; + if (InputBuffer.size() < LZMA_STREAM_HEADER_SIZE) { + return llvm::createStringError( + llvm::inconvertibleErrorCode(), + "size of xz-compressed blob (%lu bytes) is smaller than the " + "LZMA_STREAM_HEADER_SIZE (%lu bytes)", + InputBuffer.size(), LZMA_STREAM_HEADER_SIZE); ---------------- too much auto ================ Comment at: lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp:1886 + section->GetSectionData(data); + llvm::ArrayRef<uint8_t> compressedData(data.GetDataStart(), data.GetByteSize()); + llvm::SmallVector<uint8_t, 0> uncompressedData; ---------------- You don't need the temporary ArrayRef. You can just pass `data.GetData()` directly.. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D66791/new/ https://reviews.llvm.org/D66791 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits