summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj/ELF/string-dump.test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-readobj/ELF/string-dump.test')
-rw-r--r--llvm/test/tools/llvm-readobj/ELF/string-dump.test75
1 files changed, 75 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/ELF/string-dump.test b/llvm/test/tools/llvm-readobj/ELF/string-dump.test
new file mode 100644
index 00000000000..cfd9a03ed6c
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/ELF/string-dump.test
@@ -0,0 +1,75 @@
+# Check the dumping of a section as strings.
+# RUN: yaml2obj %s > %t
+
+# RUN: llvm-readobj --string-dump=.strings \
+# RUN: --string-dump=.not_null_terminated %t > %t.readobj.out
+# RUN: FileCheck %s --input-file=%t.readobj.out
+
+# Also test the different ways --string-dump can be specified, i.e. as a short
+# flag (-p), with different prefix modes (-p .foo, -p=.foo, -p.foo), and with
+# the value being a index section number instead of a section name.
+# RUN: llvm-readobj -p=.strings -p=.not_null_terminated %t > %t.readobj.1
+# RUN: llvm-readobj -p.strings -p.strings -p.not_null_terminated %t > %t.readobj.2
+# RUN: llvm-readobj --string-dump=1 --string-dump=2 %t > %t.readobj.3
+# RUN: llvm-readobj -p1 -p1 -p2 %t > %t.readobj.4
+# RUN: llvm-readobj -p=1 -p=2 %t > %t.readobj.5
+
+# RUN: cmp %t.readobj.out %t.readobj.1
+# RUN: cmp %t.readobj.out %t.readobj.2
+# RUN: cmp %t.readobj.out %t.readobj.3
+# RUN: cmp %t.readobj.out %t.readobj.4
+# RUN: cmp %t.readobj.out %t.readobj.5
+
+# Run readelf flag tests with an additional flag, --file-header, so we can test
+# -p grouped with something.
+# RUN: llvm-readelf --file-header --string-dump=.strings \
+# RUN: --string-dump=.not_null_terminated %t > %t.readelf.out
+# RUN: FileCheck %s --input-file=%t.readelf.out
+
+# RUN: llvm-readelf -h -p=.strings -p=.not_null_terminated %t > %t.readelf.1
+# RUN: llvm-readelf -p.strings -hp.not_null_terminated %t > %t.readelf.2
+# RUN: llvm-readelf -h --string-dump=1 --string-dump=2 %t > %t.readelf.3
+# RUN: llvm-readelf -hp1 -p2 %t > %t.readelf.4
+# RUN: llvm-readelf -hp 1 -p.not_null_terminated %t > %t.readelf.5
+# RUN: llvm-readelf -p=1 -hp=2 %t > %t.readelf.6
+
+# RUN: cmp %t.readelf.out %t.readelf.1
+# RUN: cmp %t.readelf.out %t.readelf.2
+# RUN: cmp %t.readelf.out %t.readelf.3
+# RUN: cmp %t.readelf.out %t.readelf.4
+# RUN: cmp %t.readelf.out %t.readelf.5
+# RUN: cmp %t.readelf.out %t.readelf.6
+
+# CHECK: String dump of section '.strings':
+# CHECK-NEXT: [ 0] here
+# CHECK-NEXT: [ 5] are
+# CHECK-NEXT: [ 9] some
+# CHECK-NEXT: [ e] strings
+# CHECK-EMPTY:
+# CHECK-NEXT: String dump of section '.not_null_terminated':
+# CHECK-NEXT: [ 0] no
+# CHECK-NEXT: [ 3] null{{$}}
+# CHECK-NOT: {{.}}
+
+# RUN: llvm-readobj --string-dump=does_not_exist %t 2>&1 | FileCheck -DFILE=%t %s --check-prefix=WARN1
+# RUN: llvm-readobj --string-dump=42 %t 2>&1 | FileCheck %s -DFILE=%t --check-prefix=WARN2
+
+# RUN: llvm-readelf --string-dump=does_not_exist %t 2>&1 | FileCheck -DFILE=%t %s --check-prefix=WARN1
+# RUN: llvm-readelf --string-dump=42 %t 2>&1 | FileCheck %s -DFILE=%t --check-prefix=WARN2
+
+# WARN1: warning: '[[FILE]]': could not find section 'does_not_exist'
+# WARN2: warning: '[[FILE]]': could not find section 42
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .strings
+ Type: SHT_PROGBITS
+ Content: 686572650061726500736f6d6500737472696e677300
+ - Name: .not_null_terminated
+ Type: SHT_PROGBITS
+ Content: 6e6f006e756c6c
OpenPOWER on IntegriCloud