# Show that llvm-readobj can print the type of symbol for all known symbol types
# and also for unknown types, both in the os/processor specific ranges and not,
# for both GNU and LLVM styles.

# RUN: yaml2obj %s > %t
# RUN: llvm-readobj --symbols %t | FileCheck %s --check-prefix=LLVM
# RUN: llvm-readelf --symbols %t | FileCheck %s --check-prefix=GNU

# LLVM: Name: notype
# LLVM: Type: None
# LLVM: Name: object
# LLVM: Type: Object
# LLVM: Name: func
# LLVM: Type: Function
# LLVM: Name: .text
# LLVM: Type: Section
# LLVM: Name: file
# LLVM: Type: File
# LLVM: Name: common
# LLVM: Type: Common
# LLVM: Name: tls
# LLVM: Type: TLS
# LLVM: Name: gnu_ifunc
# LLVM: Type: GNU_IFunc

# LLVM: Name: os_specific_11
# LLVM: Type: OS Specific (0xB)
# LLVM: Name: os_specific_12
# LLVM: Type: OS Specific (0xC)

# LLVM: Name: proc_specific_13
# LLVM: Type: Proc Specific (0xD)
# LLVM: Name: proc_specific_14
# LLVM: Type: Proc Specific (0xE)
# LLVM: Name: proc_specific_15
# LLVM: Type: Proc Specific (0xF)

# LLVM: Name: unknown_7
# LLVM: Type: Unknown (0x7)
# LLVM: Name: unknown_8
# LLVM: Type: Unknown (0x8)
# LLVM: Name: unknown_9
# LLVM: Type: Unknown (0x9)

# GNU: NOTYPE  {{.*}} notype
# GNU: OBJECT  {{.*}} object
# GNU: FUNC    {{.*}} func
# GNU: SECTION {{.*}} .text
# GNU: FILE    {{.*}} file
# GNU: COMMON  {{.*}} common
# GNU: TLS     {{.*}} tls
# GNU: IFUNC   {{.*}} gnu_ifunc
# GNU: <OS specific>: 11       {{.*}} os_specific_11
# GNU: <OS specific>: 12       {{.*}} os_specific_12
# GNU: <processor specific>: 13       {{.*}} proc_specific_13
# GNU: <processor specific>: 14       {{.*}} proc_specific_14
# GNU: <processor specific>: 15       {{.*}} proc_specific_15
# GNU: <unknown>: 7       {{.*}} unknown_7
# GNU: <unknown>: 8       {{.*}} unknown_8
# GNU: <unknown>: 9       {{.*}} unknown_9

!ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .text
    Type: SHT_PROGBITS
Symbols:
  - Name:    notype
    Type:    STT_NOTYPE
    Binding: STB_GLOBAL
  - Name:    object
    Type:    STT_OBJECT
    Binding: STB_GLOBAL
  - Name:    func
    Type:    STT_FUNC
    Binding: STB_GLOBAL
  - Name:    .text
    Type:    STT_SECTION
    Section: .text
    Binding: STB_GLOBAL
  - Name:    file
    Type:    STT_FILE
    Binding: STB_GLOBAL
  - Name:    common
    Type:    STT_COMMON
    Binding: STB_GLOBAL 
  - Name:    tls
    Type:    STT_TLS
    Binding: STB_GLOBAL
  - Name:    gnu_ifunc
    Type:    STT_GNU_IFUNC
    Binding: STB_GLOBAL
  - Name:    os_specific_11
    Type:    11
    Binding: STB_GLOBAL
  - Name:    os_specific_12
    Type:    12
    Binding: STB_GLOBAL
  - Name:    proc_specific_13
    Type:    13
    Binding: STB_GLOBAL
  - Name:    proc_specific_14
    Type:    14
    Binding: STB_GLOBAL
  - Name:    proc_specific_15
    Type:    15
    Binding: STB_GLOBAL
  - Name:    unknown_7
    Type:    7
    Binding: STB_GLOBAL
  - Name:    unknown_8
    Type:    8
    Binding: STB_GLOBAL
  - Name:    unknown_9
    Type:    9
    Binding: STB_GLOBAL
