diff options
| author | Simon Atanasyan <simon@atanasyan.com> | 2016-03-01 18:38:05 +0000 |
|---|---|---|
| committer | Simon Atanasyan <simon@atanasyan.com> | 2016-03-01 18:38:05 +0000 |
| commit | f69c7e53822ecb998a5306410642691d5b70fd9b (patch) | |
| tree | a01e71a8b0a3bb83132c395bf7f29c5eb6cff29c /llvm | |
| parent | 7c4f25d2edc30ddb21754bdb772ab53904177ed2 (diff) | |
| download | bcm5719-llvm-f69c7e53822ecb998a5306410642691d5b70fd9b.tar.gz bcm5719-llvm-f69c7e53822ecb998a5306410642691d5b70fd9b.zip | |
[DebugInfo] Dump CIE augmentation data as a list of hex bytes
CIE augmentation data might contain non-printable characters.
The patch prints the data as a list of hex bytes.
Differential Revision: http://reviews.llvm.org/D17759
llvm-svn: 262361
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp | 9 | ||||
| -rwxr-xr-x | llvm/test/tools/llvm-objdump/Inputs/eh_frame.elf-mipsel | bin | 0 -> 7827 bytes | |||
| -rw-r--r-- | llvm/test/tools/llvm-objdump/eh_frame-arm64.test | 2 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-objdump/eh_frame-mipsel.test | 27 |
4 files changed, 35 insertions, 3 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp index 6d59a8e1d24..3d2b9e9a05e 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp +++ b/llvm/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 @@ public: (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"; } diff --git a/llvm/test/tools/llvm-objdump/Inputs/eh_frame.elf-mipsel b/llvm/test/tools/llvm-objdump/Inputs/eh_frame.elf-mipsel Binary files differnew file mode 100755 index 00000000000..64a5440a74e --- /dev/null +++ b/llvm/test/tools/llvm-objdump/Inputs/eh_frame.elf-mipsel diff --git a/llvm/test/tools/llvm-objdump/eh_frame-arm64.test b/llvm/test/tools/llvm-objdump/eh_frame-arm64.test index adfd4cc4f26..f6d2db88522 100644 --- a/llvm/test/tools/llvm-objdump/eh_frame-arm64.test +++ b/llvm/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 diff --git a/llvm/test/tools/llvm-objdump/eh_frame-mipsel.test b/llvm/test/tools/llvm-objdump/eh_frame-mipsel.test new file mode 100644 index 00000000000..0592c8c212e --- /dev/null +++ b/llvm/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 |

