## Test how llvm-readobj/llvm-readelf tools handle invalid SHT_GNU_verdef sections.

## Check that we report a warning when sh_link references a non-existent section.

# RUN: yaml2obj %s --docnum=1 -DLINK=0xFF -o %t1
# RUN: llvm-readobj -V %t1 2>&1 | FileCheck %s --check-prefix=INVALID-LINK-LLVM --implicit-check-not="warning:" -DFILE=%t1
# RUN: llvm-readelf -V %t1 2>&1 | FileCheck %s --check-prefix=INVALID-LINK-GNU --implicit-check-not="warning:" -DFILE=%t1

# INVALID-LINK-LLVM: warning: '[[FILE]]': invalid section linked to SHT_GNU_verdef section with index 1: invalid section index: 255

# INVALID-LINK-GNU:      Version definition section '.gnu.version_d' contains 0 entries:
# INVALID-LINK-GNU:      warning: '[[FILE]]': invalid section linked to SHT_GNU_verdef section with index 1: invalid section index: 255
# INVALID-LINK-GNU-NEXT:  Addr: 0000000000000000  Offset: 0x000040  Link: 255 (<corrupt>)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:    .gnu.version_d
    Type:    SHT_GNU_verdef
    Link:    [[LINK]]
    Entries: []

## Check that we report a warning when the sh_link field of a SHT_GNU_verdef section references a non-string table section.

# RUN: yaml2obj %s --docnum=1 -DLINK=0x0 -o %t2
# RUN: llvm-readobj -V %t2 2>&1 | FileCheck %s --check-prefix=INVALID-STRING-TABLE -DFILE=%t2
# RUN: llvm-readelf -V %t2 2>&1 | FileCheck %s --check-prefix=INVALID-STRING-TABLE -DFILE=%t2

# INVALID-STRING-TABLE: warning: '[[FILE]]': invalid string table linked to SHT_GNU_verdef section with index 1: invalid sh_type for string table section [index 0]: expected SHT_STRTAB, but got SHT_NULL

## Check that we report a warning when we can't read the content of the SHT_GNU_verdef section.

# RUN: yaml2obj %s --docnum=2 -DSHOFFSET=0xFFFFFFFF -o %t3
# RUN: llvm-readobj -V %t3 2>&1 | FileCheck %s --check-prefix=INVALID-DATA -DFILE=%t3
# RUN: llvm-readelf -V %t3 2>&1 | FileCheck %s --check-prefix=INVALID-DATA -DFILE=%t3

# INVALID-DATA: warning: '[[FILE]]': cannot read content of SHT_GNU_verdef section with index 1: section [index 1] has a sh_offset (0xffffffff) + sh_size (0x0) that is greater than the file size (0x230)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:     .gnu.version_d
    Type:     SHT_GNU_verdef
    Entries:  []
    ShOffset: [[SHOFFSET=<none>]]
    ShName:   [[SHNAME=<none>]]
  - Name:   .dynstr
    Type:   SHT_STRTAB
    ShName: [[DYNSTRNAME=<none>]]
DynamicSymbols:
  - Name: foo

## Check that llvm-readelf reports a warning when the name of the SHT_GNU_verdef section can't be read.

# RUN: yaml2obj %s --docnum=2 -DSHNAME=0xFF -o %t.invalid.name
# RUN: llvm-readobj -V %t.invalid.name 2>&1 | \
# RUN:   FileCheck %s --check-prefix=INVALID-NAME-LLVM -DFILE=%t.invalid.name --implicit-check-not=warning:
# RUN: llvm-readelf -V %t.invalid.name 2>&1 | \
# RUN:   FileCheck %s --check-prefix=INVALID-NAME-GNU -DFILE=%t.invalid.name --implicit-check-not=warning:

# INVALID-NAME-LLVM:      VersionDefinitions [
# INVALID-NAME-LLVM-NEXT: ]

# INVALID-NAME-GNU:      warning: '[[FILE]]': unable to get the name of SHT_GNU_verdef section with index 1: a section [index 1] has an invalid sh_name (0xff) offset which goes past the end of the section name string table
# INVALID-NAME-GNU-NEXT: Version definition section '<?>' contains 0 entries:
# INVALID-NAME-GNU-NEXT:  Addr: 0000000000000000  Offset: 0x000040  Link: 2 (.dynstr)

## Check that llvm-readelf reports a warning when we are unable to read the name of
## the section linked with the SHT_GNU_verdef section (usually ".dynstr").

# RUN: yaml2obj %s --docnum=2 -DDYNSTRNAME=0xFF -o %t.invalid.name2
# RUN: llvm-readobj -V %t.invalid.name2 2>&1 | \
# RUN:   FileCheck %s --check-prefix=INVALID-NAME-LLVM -DFILE=%t.invalid.name2 --implicit-check-not=warning:
# RUN: llvm-readelf -V %t.invalid.name2 2>&1 | \
# RUN:   FileCheck %s --check-prefix=INVALID-NAME2-GNU -DFILE=%t.invalid.name2 --implicit-check-not=warning:

# INVALID-NAME2-GNU:      Version definition section '.gnu.version_d' contains 0 entries:
# INVALID-NAME2-GNU-NEXT: warning: '[[FILE]]': unable to get the name of SHT_STRTAB section with index 2: a section [index 2] has an invalid sh_name (0xff) offset which goes past the end of the section name string table
# INVALID-NAME2-GNU-NEXT:  Addr: 0000000000000000  Offset: 0x000040  Link: 2 (<?>)

## Check that we report a warning when a SHT_GNU_verdef section contains a version definition
## that goes past the end of the section.

# RUN: yaml2obj %s --docnum=3 -o %t4
# RUN: llvm-readobj -V %t4 2>&1 | FileCheck %s --check-prefix=DEF-PAST-END -DFILE=%t4
# RUN: llvm-readelf -V %t4 2>&1 | FileCheck %s --check-prefix=DEF-PAST-END -DFILE=%t4

# DEF-PAST-END: warning: '[[FILE]]': invalid SHT_GNU_verdef section with index 1: version definition 1 goes past the end of the section

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name: .gnu.version_d
    Type: SHT_GNU_verdef
    Entries:
      - Names:
          - FOO
    ShSize: 1
DynamicSymbols:
  - Name: foo

## Check that we report a warning when a SHT_GNU_verdef section contains a version definition
## that refers to an auxiliary entry that goes past the end of the section.

# RUN: yaml2obj %s --docnum=4 -o %t5
# RUN: llvm-readobj -V %t5 2>&1 | FileCheck %s --check-prefix=AUX-PAST-END -DFILE=%t5
# RUN: llvm-readelf -V %t5 2>&1 | FileCheck %s --check-prefix=AUX-PAST-END -DFILE=%t5

# AUX-PAST-END: warning: '[[FILE]]': invalid SHT_GNU_verdef section with index 1: version definition 1 refers to an auxiliary entry that goes past the end of the section

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name: .gnu.version_d
    Type: SHT_GNU_verdef
    Entries:
      - Names:
          - FOO
    ShSize: 21
DynamicSymbols:
  - Name: foo

## Check that we can dump a SHT_GNU_verdef section properly even if it contains version names strings
## that overrun the linked string table.

# RUN: yaml2obj %s --docnum=5 -o %t6
# RUN: llvm-readobj -V %t6 2>&1 | FileCheck %s --check-prefix=PAST-STRTAB-END-LLVM --implicit-check-not="warning:" -DFILE=%t6
# RUN: llvm-readelf -V %t6 2>&1 | FileCheck %s --check-prefix=PAST-STRTAB-END-GNU --implicit-check-not="warning:" -DFILE=%t6

# PAST-STRTAB-END-LLVM:      VersionDefinitions [
# PAST-STRTAB-END-LLVM-NEXT:   Definition {
# PAST-STRTAB-END-LLVM-NEXT:     Version: 1
# PAST-STRTAB-END-LLVM-NEXT:     Flags [ (0x0)
# PAST-STRTAB-END-LLVM-NEXT:     ]
# PAST-STRTAB-END-LLVM-NEXT:     Index: 0
# PAST-STRTAB-END-LLVM-NEXT:     Hash: 0
# PAST-STRTAB-END-LLVM-NEXT:     Name: <invalid vda_name: 5>
# PAST-STRTAB-END-LLVM-NEXT:     Predecessors: []
# PAST-STRTAB-END-LLVM-NEXT:   }
# PAST-STRTAB-END-LLVM-NEXT: ]

# PAST-STRTAB-END-GNU:      Version definition section '.gnu.version_d' contains 1 entries:
# PAST-STRTAB-END-GNU-NEXT:  Addr: 0000000000000000  Offset: 0x000040  Link: 2 (.strtab)
# PAST-STRTAB-END-GNU-NEXT:   0x0000: Rev: 1  Flags: none  Index: 0  Cnt: 1  Name: <invalid vda_name: 5>

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name: .gnu.version_d
    Type: SHT_GNU_verdef
    Link: .strtab
    Entries:
      - Names:
          - FOO
  - Name: .strtab
    Type: SHT_STRTAB
DynamicSymbols:
  - Name: BAR

## Check we report a warning when a version definition is not correctly aligned in memory.

# RUN: yaml2obj %s --docnum=6 -o %t7
# RUN: llvm-readobj -V %t7 2>&1 | FileCheck %s --check-prefix=MISALIGNED-DEF -DFILE=%t7
# RUN: llvm-readelf -V %t7 2>&1 | FileCheck %s --check-prefix=MISALIGNED-DEF -DFILE=%t7

# MISALIGNED-DEF: warning: '[[FILE]]': invalid SHT_GNU_verdef section with index 1: found a misaligned version definition entry at offset 0x0

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Type: Fill
    Size: 0x1
  - Name: .gnu.version_d
    Type: SHT_GNU_verdef
    Link: .dynstr
    Info: 0x1
    Entries:
      - Names:
          - FOO
DynamicSymbols:
  - Name: foo

## Check we report a warning when an auxiliary entry is not correctly aligned in memory.

# RUN: yaml2obj %s --docnum=7 -o %t8
# RUN: llvm-readobj -V %t8 2>&1 | FileCheck %s --check-prefix=MISALIGNED-AUX -DFILE=%t8
# RUN: llvm-readelf -V %t8 2>&1 | FileCheck %s --check-prefix=MISALIGNED-AUX -DFILE=%t8

# MISALIGNED-AUX: warning: '[[FILE]]': invalid SHT_GNU_verdef section with index 1: found a misaligned auxiliary entry at offset 0x13

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:  .gnu.version_d
    Type:  SHT_GNU_verdef
    Flags: [ SHF_ALLOC ]
    Link:  .dynstr
    Info:  0x1
## The byte offset to the auxiliary entry is 0x13, i.e. it is not correctly aligned in memory.
    Content: "0100000000000100000000001300000000000000"
DynamicSymbols:
  - Name:    foo
    Binding: STB_GLOBAL

## Check how we handle a version definition entry with an unsupported version.

# RUN: yaml2obj %s --docnum=8 -o %t9
# RUN: llvm-readobj -V %t9 2>&1 | FileCheck %s --check-prefix=UNSUPPORTED-VERSION -DFILE=%t9
# RUN: llvm-readelf -V %t9 2>&1 | FileCheck %s --check-prefix=UNSUPPORTED-VERSION -DFILE=%t9

# UNSUPPORTED-VERSION: warning: '[[FILE]]': unable to dump SHT_GNU_verdef section with index 1: version 65278 is not yet supported

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name: .gnu.version_d
    Type: SHT_GNU_verdef
    Link: .dynstr
    Info: 0x1
    Entries:
      - Version: 0xfefe
        Names: []
DynamicSymbols:
  - Name: foo

## Check we report a warning when trying to print version symbols, but SHT_GNU_verdef
## is invalid due to any reason.

# RUN: yaml2obj %s --docnum=9 -o %t10
# RUN: llvm-readobj -V %t10 2>&1 | FileCheck %s --check-prefix=INVALID-VERDEF-LLVM -DFILE=%t10
# RUN: llvm-readelf -V %t10 2>&1 | FileCheck %s --check-prefix=INVALID-VERDEF-GNU -DFILE=%t10

# INVALID-VERDEF-LLVM:      VersionSymbols [
# INVALID-VERDEF-LLVM-NEXT:    Symbol {
# INVALID-VERDEF-LLVM-NEXT:      Version: 0
# INVALID-VERDEF-LLVM-NEXT:      Name: {{$}}
# INVALID-VERDEF-LLVM-NEXT:    }
# INVALID-VERDEF-LLVM-NEXT:    Symbol {
# INVALID-VERDEF-LLVM-NEXT:    Version: 2
# INVALID-VERDEF-LLVM-NEXT:  warning: '[[FILE]]': invalid SHT_GNU_verdef section with index 2: version definition 1 goes past the end of the section
# INVALID-VERDEF-LLVM-NEXT:    Name: foo@<corrupt>

# INVALID-VERDEF-GNU:      Version symbols section '.gnu.version' contains 2 entries:
# INVALID-VERDEF-GNU-NEXT:  Addr: 0000000000000000  Offset: 0x000040  Link: 3 (.dynsym)
# INVALID-VERDEF-GNU-NEXT: warning: '[[FILE]]': invalid SHT_GNU_verdef section with index 2: version definition 1 goes past the end of the section
# INVALID-VERDEF-GNU-NEXT:   000: 0 (*local*) 2 (<corrupt>)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:         .gnu.version
    Type:         SHT_GNU_versym
    Flags:        [ SHF_ALLOC ]
    AddressAlign: 0x0000000000000002
    EntSize:      0x0000000000000002
    Entries:      [ 0, 2 ]
  - Name:         .gnu.version_d
    Type:         SHT_GNU_verdef
    Flags:        [ SHF_ALLOC ]
    AddressAlign: 0x4
    Info:         0x1
    Entries: []
DynamicSymbols:
  - Name:    foo
    Binding: STB_GLOBAL
