summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2016-03-01 18:38:05 +0000
committerSimon Atanasyan <simon@atanasyan.com>2016-03-01 18:38:05 +0000
commitf69c7e53822ecb998a5306410642691d5b70fd9b (patch)
treea01e71a8b0a3bb83132c395bf7f29c5eb6cff29c /llvm
parent7c4f25d2edc30ddb21754bdb772ab53904177ed2 (diff)
downloadbcm5719-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.cpp9
-rwxr-xr-xllvm/test/tools/llvm-objdump/Inputs/eh_frame.elf-mipselbin0 -> 7827 bytes
-rw-r--r--llvm/test/tools/llvm-objdump/eh_frame-arm64.test2
-rw-r--r--llvm/test/tools/llvm-objdump/eh_frame-mipsel.test27
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
new file mode 100755
index 00000000000..64a5440a74e
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/eh_frame.elf-mipsel
Binary files differ
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
OpenPOWER on IntegriCloud