[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