[PATCH] D149058: [BPF][DebugInfo] Use .BPF.ext for line info when DWARF is not available

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 12 23:15:47 PDT 2023


MaskRay added a comment.

In D149058#4495477 <https://reviews.llvm.org/D149058#4495477>, @eddyz87 wrote:

> In D149058#4495293 <https://reviews.llvm.org/D149058#4495293>, @MaskRay wrote:
>
>> The test has good test coverage for the regular code path, but the error code paths need the unittest.
>
> Actually, I think there are test cases for each error message parser can currently produce...
>
> I want to push the patch below to the main branch.
> I tested it locally and -Wunaligned-access does catch the issue with `Obj` and `Storage`.
> What do you think?
>
>   diff --git a/llvm/unittests/DebugInfo/BTF/BTFParserTest.cpp b/llvm/unittests/DebugInfo/BTF/BTFParserTest.cpp
>   index 097d6205adec..041933deb4ec 100644
>   --- a/llvm/unittests/DebugInfo/BTF/BTFParserTest.cpp
>   +++ b/llvm/unittests/DebugInfo/BTF/BTFParserTest.cpp
>   @@ -44,11 +44,11 @@ namespace {
>    // modified before a call to `makeObj()` to test parser with invalid
>    // input, etc.
>    
>   +struct MockData1 {
>    // Use "pragma pack" to model .BTF & .BTF.ext sections content using
>    // 'struct' objects. This pragma is supported by CLANG, GCC & MSVC,
>    // which matters for LLVM CI.
>    #pragma pack(push, 1)
>   -struct MockData1 {
>      struct B {
>        BTF::Header Header = {};
>        // no types
>   @@ -99,6 +99,7 @@ struct MockData1 {
>          Header.LineInfoLen = sizeof(Lines);
>        }
>      } Ext;
>   +#pragma pack(pop)
>    
>      int BTFSectionLen = sizeof(BTF);
>      int ExtSectionLen = sizeof(Ext);
>   @@ -143,7 +144,6 @@ Sections:
>        return *Obj.get();
>      }
>    };
>   -#pragma pack(pop)
>    
>    TEST(BTFParserTest, simpleCorrectInput) {
>      BTFParser BTF;
>   diff --git a/llvm/unittests/DebugInfo/BTF/CMakeLists.txt b/llvm/unittests/DebugInfo/BTF/CMakeLists.txt
>   index b425e46b9f0c..8cd4b793a741 100644
>   --- a/llvm/unittests/DebugInfo/BTF/CMakeLists.txt
>   +++ b/llvm/unittests/DebugInfo/BTF/CMakeLists.txt
>   @@ -10,4 +10,11 @@ add_llvm_unittest(DebugInfoBTFTests
>    
>    target_link_libraries(DebugInfoBTFTests PRIVATE LLVMTestingSupport)
>    
>   +# Packed structures are used in the test. Asan/UBsan can catch
>   +# unaligned access errors, but such builds take significant time.
>   +# Use clang's -Wunaligned-access to get a heads-up.
>   +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
>   +  set_source_files_properties(BTFParserTest.cpp PROPERTIES COMPILE_FLAGS -Wunaligned-access)
>   +endif()
>   +
>    set_property(TARGET DebugInfoBTFTests PROPERTY FOLDER "Tests/UnitTests/DebugInfoTests")

llvm-project is conservative on library/unittest specific cflags. If this `#pragma` shuffling fixes the issue (`-fsanitize=alignment` implied by `-fsanitize=undefined`), push just this part.
`-fsanitize=alignment` is unrelated to asan.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D149058/new/

https://reviews.llvm.org/D149058



More information about the llvm-commits mailing list