[PATCH] D17759: [DebugInfo] Dump CIE augmentation data as a list of hex bytes
Pete Cooper via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 1 09:46:18 PST 2016
Hi Simon
Any idea what the non-LLVM objdump/dwarfdump would print in this case?
Either way, LGTM as this is an improvement over the current code.
Thanks,
Pete
> On Mar 1, 2016, at 2:01 AM, Simon Atanasyan <simon at atanasyan.com> wrote:
>
> atanasyan created this revision.
> atanasyan added reviewers: rafael, pete.
> atanasyan added a subscriber: llvm-commits.
> atanasyan set the repository for this revision to rL LLVM.
>
> CIE augmentation data might contain non-printable characters. The patch prints the data as a list of hex bytes.
>
> Repository:
> rL LLVM
>
> http://reviews.llvm.org/D17759
>
> Files:
> lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
> test/tools/llvm-objdump/Inputs/eh_frame.elf-mipsel
> test/tools/llvm-objdump/eh_frame-arm64.test
> test/tools/llvm-objdump/eh_frame-mipsel.test
>
> Index: test/tools/llvm-objdump/eh_frame-mipsel.test
> ===================================================================
> --- /dev/null
> +++ test/tools/llvm-objdump/eh_frame-mipsel.test
> @@ -0,0 +1,27 @@
> +# RUN: llvm-objdump -dwarf=frames %p/Inputs/eh_frame.elf-mipsel | FileCheck %s
> +
> +# CHECK: .eh_frame contents:
> +
> +# CHECK: 00000000 00000018 ffffffff CIE
> +# CHECK: Version: 1
> +# CHECK: Augmentation: "zPLR"
> +# CHECK: Code alignment factor: 1
> +# CHECK: Data alignment factor: -4
> +# CHECK: Return address column: 31
> +# CHECK: Augmentation data: 80 90 0B 41 00 00 0B
> +
> +# CHECK: DW_CFA_def_cfa: reg29 +0
> +
> +# CHECK: 0000001c 00000018 00000020 FDE cie=00000020 pc=00400890...004008dc
> +# CHECK: DW_CFA_advance_loc: 4
> +# CHECK: DW_CFA_def_cfa_offset: +24
> +# CHECK: DW_CFA_advance_loc: 4
> +# CHECK: DW_CFA_offset: reg31 -4
> +# CHECK: DW_CFA_nop:
> +
> +# CHECK: 00000038 00000000 ffffffff CIE
> +# CHECK: Version: 0
> +# CHECK: Augmentation: ""
> +# CHECK: Code alignment factor: 0
> +# CHECK: Data alignment factor: 0
> +# CHECK: Return address column: 0
> Index: test/tools/llvm-objdump/eh_frame-arm64.test
> ===================================================================
> --- test/tools/llvm-objdump/eh_frame-arm64.test
> +++ test/tools/llvm-objdump/eh_frame-arm64.test
> @@ -8,7 +8,7 @@
> # CHECK: Code alignment factor: 1
> # CHECK: Data alignment factor: -8
> # CHECK: Return address column: 30
> -# CHECK: Augmentation data:
> +# CHECK: Augmentation data: 10
>
> # CHECK: DW_CFA_def_cfa: reg31 +0
>
> Index: lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
> ===================================================================
> --- lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
> +++ lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
> @@ -12,6 +12,7 @@
> #include "llvm/ADT/DenseMap.h"
> #include "llvm/ADT/Optional.h"
> #include "llvm/ADT/SmallString.h"
> +#include "llvm/ADT/StringExtras.h"
> #include "llvm/Support/Casting.h"
> #include "llvm/Support/DataTypes.h"
> #include "llvm/Support/Dwarf.h"
> @@ -244,8 +245,12 @@
> (int32_t)DataAlignmentFactor);
> OS << format(" Return address column: %d\n",
> (int32_t)ReturnAddressRegister);
> - if (!AugmentationData.empty())
> - OS << " Augmentation data: " << AugmentationData << "\n";
> + if (!AugmentationData.empty()) {
> + OS << " Augmentation data: ";
> + for (uint8_t Byte : AugmentationData)
> + OS << ' ' << hexdigit(Byte >> 4) << hexdigit(Byte & 0xf);
> + OS << "\n";
> + }
> OS << "\n";
> }
>
>
>
> <D17759.49467.patch>
More information about the llvm-commits
mailing list