[llvm] r373278 - DebugInfo: Add parsing support for debug_loc base address specifiers

Diana Picus via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 1 02:26:58 PDT 2019


Hi David,

I moved this test to the X86 directory since it's using an x86 triple
and therefore breaking non-x86 buildbots. Just FYI :)

Cheers,
Diana

On Tue, 1 Oct 2019 at 02:27, David Blaikie via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> Author: dblaikie
> Date: Mon Sep 30 17:29:13 2019
> New Revision: 373278
>
> URL: http://llvm.org/viewvc/llvm-project?rev=373278&view=rev
> Log:
> DebugInfo: Add parsing support for debug_loc base address specifiers
>
> Added:
>     llvm/trunk/test/tools/llvm-dwarfdump/debug_loc_base_address.s
> Modified:
>     llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
>     llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp
>
> Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h?rev=373278&r1=373277&r2=373278&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h (original)
> +++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h Mon Sep 30 17:29:13 2019
> @@ -68,7 +68,7 @@ public:
>    /// Return the location list at the given offset or nullptr.
>    LocationList const *getLocationListAtOffset(uint64_t Offset) const;
>
> -  static Expected<LocationList>
> +  Expected<LocationList>
>    parseOneLocationList(const DWARFDataExtractor &Data, uint64_t *Offset);
>  };
>
>
> Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp?rev=373278&r1=373277&r2=373278&view=diff
> ==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp Mon Sep 30 17:29:13 2019
> @@ -101,6 +101,7 @@ DWARFDebugLoc::parseOneLocationList(cons
>
>      if (Error Err = C.takeError())
>        return std::move(Err);
> +
>      // The end of any given location list is marked by an end of list entry,
>      // which consists of a 0 for the beginning address offset and a 0 for the
>      // ending address offset.
> @@ -109,9 +110,12 @@ DWARFDebugLoc::parseOneLocationList(cons
>        return LL;
>      }
>
> -    unsigned Bytes = Data.getU16(C);
> -    // A single location description describing the location of the object...
> -    Data.getU8(C, E.Loc, Bytes);
> +    if (E.Begin != (AddressSize == 4 ? -1U : -1ULL)) {
> +      unsigned Bytes = Data.getU16(C);
> +      // A single location description describing the location of the object...
> +      Data.getU8(C, E.Loc, Bytes);
> +    }
> +
>      LL.Entries.push_back(std::move(E));
>    }
>  }
>
> Added: llvm/trunk/test/tools/llvm-dwarfdump/debug_loc_base_address.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwarfdump/debug_loc_base_address.s?rev=373278&view=auto
> ==============================================================================
> --- llvm/trunk/test/tools/llvm-dwarfdump/debug_loc_base_address.s (added)
> +++ llvm/trunk/test/tools/llvm-dwarfdump/debug_loc_base_address.s Mon Sep 30 17:29:13 2019
> @@ -0,0 +1,34 @@
> +# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o %t.o
> +# RUN: llvm-dwarfdump --debug-loc %t.o | FileCheck %s
> +
> +# CHECK:         .debug_loc contents:
> +# CHECK-NEXT:    0x00000000:
> +# CHECK-NEXT:    [0xffffffffffffffff, 0x000000000000002a):
> +# CHECK-NEXT:    [0x0000000000000003, 0x0000000000000007): DW_OP_consts +3, DW_OP_stack_value
> +
> +       .section        .debug_loc,"", at progbits
> +       .quad   0xffffffffffffffff
> +       .quad   42
> +       .quad   3
> +       .quad   7
> +       .short  3                       # Loc expr size
> +       .byte   17                      # DW_OP_consts
> +       .byte   3                       # 3
> +       .byte   159                     # DW_OP_stack_value
> +       .quad   0
> +       .quad   0
> +       .section        .debug_abbrev,"", at progbits
> +       .byte   1                       # Abbreviation Code
> +       .byte   17                      # DW_TAG_compile_unit
> +       .byte   0                       # DW_CHILDREN_no
> +       .byte   0                       # EOM(1)
> +       .byte   0                       # EOM(2)
> +       .byte   0                       # EOM(3)
> +       .section        .debug_info,"", at progbits
> +       .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
> +.Ldebug_info_start0:
> +       .short  4                       # DWARF version number
> +       .long   .debug_abbrev           # Offset Into Abbrev. Section
> +       .byte   8                       # Address Size (in bytes)
> +       .byte   1                       # Abbrev [1] DW_TAG_compile_unit
> +.Ldebug_info_end0:
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list