# 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
