## Test how --syms/-t prints the static symbol table.
# RUN: yaml2obj --docnum=1 %s -o %t
# RUN: llvm-objdump --syms %t > %t.txt
# RUN: llvm-objdump -t %t | cmp - %t.txt
# RUN: FileCheck %s --input-file=%t.txt --match-full-lines --strict-whitespace

#      CHECK:SYMBOL TABLE:
# CHECK-NEXT:0000000000000000 l    df *ABS*	0000000000000000 a.c
# CHECK-NEXT:0000000000000000 l    d  .text	0000000000000000 .text
# CHECK-NEXT:0000000000002000 l     O .data	0000000000000000 local_object
# CHECK-NEXT:0000000000001fff l     F .text	0000000000000000 local_func
# CHECK-NEXT:0000000000000000 l       *ABS*	0000000000000000 local_abs
# CHECK-NEXT:0000000000000000 g       .data	0000000000000000 notype
# CHECK-NEXT:0000000000000000 g     O .data	0000000000000010 object
# CHECK-NEXT:0000000000000000 g     F .text	000000000000000f func
# CHECK-NEXT:0000000000000000 g     O *COM*	0000000000000000 common
# CHECK-NEXT:0000000000000000 g       .data	0000000000000000 tls
# CHECK-NEXT:0000000000000000 g   i   .text	0000000000000000 ifunc
# CHECK-NEXT:0000000000000000 g       .text	0000000000000000 invalid_type
# CHECK-NEXT:0000000000000000 g       .text	0000000000000000 STT_HIOS
# CHECK-NEXT:0000000000000000 g       .text	0000000000000000 STT_LOPROC
# CHECK-NEXT:0000000000000000         *UND*	0000000000000000 undef
# CHECK-NEXT:0000000000000000         *UND*	0000000000000000 SHN_LOPROC
# CHECK-NEXT:0000000000000000         *UND*	0000000000000000 SHN_LOOS
# CHECK-NEXT:0000000000000000         *UND*	0000000000000000 reserve
# CHECK-NEXT:0000000000000000 g       *ABS*	0000000000000000 abs
# CHECK-NEXT:0000000000000000         *COM*	0000000000000000 common2
# CHECK-NEXT:0000000000000000 u     O .data	0000000000000000 gnu_unique
# CHECK-NEXT:0000000000000000 g       .data	0000000000000000 invalid_binding
# CHECK-NEXT:0000000000000000 g       .data	0000000000000000 STB_HIOS
# CHECK-NEXT:0000000000000000 g       .data	0000000000000000 STB_LOPROC

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:  .text
    Type:  SHT_PROGBITS
  - Name:  .data
    Type:  SHT_PROGBITS
Symbols:
  - Name:    "a.c"
    Type:    STT_FILE
    Index:   SHN_ABS
  - Type:    STT_SECTION
    Section: .text
  - Name:    local_object
    Type:    STT_OBJECT
    Section: .data
    Value:   0x2000
  - Name:    local_func
    Type:    STT_FUNC
    Section: .text
    Value:   0x1fff
  - Name:    local_abs
    Index:   SHN_ABS
  - Name:    notype
    Binding: STB_GLOBAL
    Section: .data
  - Name:    object
    Type:    STT_OBJECT
    Size:    0x10
    Binding: STB_GLOBAL
    Section: .data
  - Name:    func
    Type:    STT_FUNC
    Size:    0xf
    Binding: STB_GLOBAL
    Section: .text
  - Name:    common
    Type:    STT_COMMON
    Binding: STB_GLOBAL
    Section: .data
  - Name:    tls
    Type:    STT_TLS
    Binding: STB_GLOBAL
    Section: .data
  - Name:    ifunc
    Type:    STT_GNU_IFUNC
    Binding: STB_GLOBAL
    Section: .text
  - Name:    invalid_type
    Type:    7
    Binding: STB_GLOBAL
    Section: .text
  - Name:    STT_HIOS
    Type:    12
    Binding: STB_GLOBAL
    Section: .text
  - Name:    STT_LOPROC
    Type:    13
    Binding: STB_GLOBAL
    Section: .text
  - Name:    undef
    Binding: STB_GLOBAL
  - Name:    SHN_LOPROC
    Binding: STB_GLOBAL
    Index:   0xff00
  - Name:    SHN_LOOS
    Binding: STB_GLOBAL
    Index:   0xff20
  - Name:    reserve
    Binding: STB_GLOBAL
    Index:   0xff40
  - Name:    abs
    Index:   SHN_ABS
    Binding: STB_GLOBAL
  - Name:    common2
    Binding: STB_GLOBAL
    Index:   SHN_COMMON
  - Name:    gnu_unique
    Type:    STT_OBJECT
    Binding: STB_GNU_UNIQUE
    Section: .data
  - Name:    invalid_binding
    Binding: 3
    Section: .data
  - Name:    STB_HIOS
    Binding: 12
    Section: .data
  - Name:    STB_LOPROC
    Binding: 13
    Section: .data

## For an ELF32 object, print the address and size fields as 32-bit hexadecimals.
# RUN: yaml2obj --docnum=2 -D BITS=32 %s -o %t.32
# RUN: llvm-objdump --syms %t.32 | FileCheck --check-prefix=ELF32 %s --match-full-lines --strict-whitespace
## For an ELF64 object, print the address and size fields as 64-bit hexadecimals.
# RUN: yaml2obj --docnum=2 -D BITS=64 %s -o %t.64
# RUN: llvm-objdump --syms %t.64 | FileCheck --check-prefix=ELF64 %s --match-full-lines --strict-whitespace

#      ELF32:SYMBOL TABLE:
# ELF32-NEXT:00000000         *UND*	00000000 sym

#      ELF64:SYMBOL TABLE:
# ELF64-NEXT:0000000000000000         *UND*	0000000000000000 sym

--- !ELF
FileHeader:
  Class:   ELFCLASS[[BITS]]
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Symbols:
  - Name: sym
