## Show that llvm-readobj prints the symbol visibility where recognised, or
## something sensible when not, for both GNU and LLVM output.

## Check how we dump symbols when they have only STV_* bits set for st_other.
## (This is the most common case).

# RUN: yaml2obj --docnum=1 %s > %t1.o
# RUN: llvm-readobj --symbols %t1.o | FileCheck %s --check-prefix=LLVM
# RUN: llvm-readelf --symbols %t1.o | FileCheck %s --strict-whitespace --check-prefix=GNU

# LLVM:      Name: default
# LLVM:      Other: 0
# LLVM:      Name: internal
# LLVM:      Other [ (0x1)
# LLVM-NEXT:   STV_INTERNAL (0x1)
# LLVM-NEXT: ]
# LLVM:      Name: hidden
# LLVM:      Other [ (0x2)
# LLVM-NEXT:   STV_HIDDEN (0x2)
# LLVM-NEXT: ]
# LLVM:      Name: protected
# LLVM:      Other [ (0x3)
# LLVM-NEXT:   STV_PROTECTED (0x3)
# LLVM-NEXT: ]

# GNU:      Vis       Ndx Name
# GNU-NEXT: DEFAULT   UND
# GNU-NEXT: DEFAULT   UND default
# GNU-NEXT: INTERNAL  UND internal
# GNU-NEXT: HIDDEN    UND hidden
# GNU-NEXT: PROTECTED UND protected

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Symbols:
  - Name: default
    Other: [ STV_DEFAULT ]
    Binding: STB_GLOBAL
  - Name: internal
    Other: [ STV_INTERNAL ]
    Binding: STB_GLOBAL
  - Name: hidden
    Other: [ STV_HIDDEN ]
    Binding: STB_GLOBAL
  - Name: protected
    Other: [ STV_PROTECTED ]
    Binding: STB_GLOBAL

## Check the output when we have non-visibility bits set for at least one of the symbols.

# RUN: yaml2obj --docnum=2 %s > %t2.o
# RUN: llvm-readobj --symbols %t2.o | FileCheck %s --check-prefixes=LLVM,LLVM-OTHER
# RUN: llvm-readelf --symbols %t2.o | FileCheck %s --strict-whitespace --check-prefix=GNU-OTHER

# LLVM-OTHER:      Name: other
# LLVM-OTHER:      Other [ (0x4)
# LLVM-OTHER-NEXT: ]

#      GNU-OTHER: Vis                    Ndx Name
# GNU-OTHER-NEXT: DEFAULT                UND
# GNU-OTHER-NEXT: DEFAULT                UND default
# GNU-OTHER-NEXT: INTERNAL               UND internal
# GNU-OTHER-NEXT: HIDDEN                 UND hidden
# GNU-OTHER-NEXT: PROTECTED              UND protected
# GNU-OTHER-NEXT: DEFAULT [<other: 0x4>] UND other

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Symbols:
  - Name: default
    Other: [ STV_DEFAULT ]
  - Name: internal
    Other: [ STV_INTERNAL ]
  - Name: hidden
    Other: [ STV_HIDDEN ]
  - Name: protected
    Other: [ STV_PROTECTED ]
  - Name: other
    Other: [ 4 ]
