[llvm-pdbutil] Add the ability to dump raw bytes from the file.

Normally we can only make sense of the content of a PDB in terms
of streams and blocks, but in some cases it may be useful to dump
bytes at a specific absolute file offset.  For example, if you
know that some interesting data is at a particular location and
you want to see some surrounding data.

llvm-svn: 306146
diff --git a/llvm/test/DebugInfo/PDB/pdbdump-raw-bytes.test b/llvm/test/DebugInfo/PDB/pdbdump-raw-bytes.test
new file mode 100644
index 0000000..2c5c96c
--- /dev/null
+++ b/llvm/test/DebugInfo/PDB/pdbdump-raw-bytes.test
@@ -0,0 +1,15 @@
+; RUN: llvm-pdbutil bytes -byte-range=20-60 %p/Inputs/empty.pdb | FileCheck --check-prefix=VALID %s

+; RUN: not llvm-pdbutil bytes -byte-range=100-20 %p/Inputs/empty.pdb 2>&1 | FileCheck --check-prefix=INVALID %s

+; RUN: not llvm-pdbutil bytes -byte-range=100000-200000 %p/Inputs/empty.pdb 2>&1 | FileCheck --check-prefix=INVALID-RANGE %s

+

+

+VALID:                               MSF Bytes

+VALID-NEXT: ============================================================

+VALID-NEXT:  Bytes (

+VALID-NEXT:    0014: 372E3030 0D0A1A44 53000000 00100000 02000000 19000000 88000000 00000000  |7.00...DS.......................|

+VALID-NEXT:    0034: 18000000 00000000 00                                                     |.........|

+VALID-NEXT:  )

+

+INVALID: llvm-pdbutil: Invalid byte range specified.  Max < Min

+

+INVALID-RANGE: llvm-pdbutil: Invalid byte range specified.  Requested byte larger than file size