## Verify that llvm-readobj can dump files with stabs symbols in a sorted order.

# RUN: yaml2obj --docnum=1 %s -o %t

# RUN: not llvm-readobj --syms --sort-symbols=foo %t 2>&1 | FileCheck %s --check-prefix ERR-KEY
# RUN: not llvm-readobj --syms --sort-symbols=,, %t 2>&1 | FileCheck %s --check-prefix ERR-KEY-EMPT

# RUN: llvm-readobj --syms --sort-symbols=type,name %t | FileCheck %s --check-prefix TYPE-NAME
# RUN: llvm-readobj --syms --sort-symbols=name,type %t | FileCheck %s --check-prefix NAME-TYPE
# RUN: llvm-readobj --syms --sort-symbols=type %t | FileCheck %s --check-prefix TYPE-ONLY

# ERR-KEY: error: --sort-symbols value should be 'name' or 'type', but was 'foo'
# ERR-KEY-EMPT: error: --sort-symbols value should be 'name' or 'type', but was ''

# TYPE-NAME:      Name: _a (19)
# TYPE-NAME-NEXT: Type: Section (0xE)
# TYPE-NAME:      Name: _d (10)
# TYPE-NAME-NEXT: Type: Section (0xE)
# TYPE-NAME:      Name: _f (7)
# TYPE-NAME-NEXT: Type: SymDebugTable (0x2E)
# TYPE-NAME:      Name: _z (1)
# TYPE-NAME-NEXT: Type: SymDebugTable (0x2E)
# TYPE-NAME:      Name: _c (13)
# TYPE-NAME-NEXT: Type: SymDebugTable (0x64)
# TYPE-NAME:      Name: _g (4)
# TYPE-NAME-NEXT: Type: SymDebugTable (0x64)
# TYPE-NAME:      Name: _b (16)
# TYPE-NAME-NEXT: Type: SymDebugTable (0x66)
# TYPE-NAME:      Name: _d2 (22)
# TYPE-NAME-NEXT: Type: SymDebugTable (0x66)

# NAME-TYPE:         Name: _a (19)
# NAME-TYPE-NEXT:    Type: Section (0xE)
# NAME-TYPE:         Name: _b (16)
# NAME-TYPE-NEXT:    Type: SymDebugTable (0x66)
# NAME-TYPE:         Name: _c (13)
# NAME-TYPE-NEXT:    Type: SymDebugTable (0x64)
# NAME-TYPE:         Name: _d (10)
# NAME-TYPE-NEXT:    Type: Section (0xE)
# NAME-TYPE:         Name: _d2 (22)
# NAME-TYPE-NEXT:    Type: SymDebugTable (0x66)
# NAME-TYPE:         Name: _f (7)
# NAME-TYPE-NEXT:    Type: SymDebugTable (0x2E)
# NAME-TYPE:         Name: _g (4)
# NAME-TYPE-NEXT:    Type: SymDebugTable (0x64)
# NAME-TYPE:         Name: _z (1)
# NAME-TYPE-NEXT:    Type: SymDebugTable (0x2E)

# TYPE-ONLY:        Name: _d (10)
# TYPE-ONLY-NEXT:   Type: Section (0xE)
# TYPE-ONLY:        Name: _a (19)
# TYPE-ONLY-NEXT:   Type: Section (0xE)
# TYPE-ONLY:        Name: _f (7)
# TYPE-ONLY-NEXT:   Type: SymDebugTable (0x2E)
# TYPE-ONLY:        Name: _z (1)
# TYPE-ONLY-NEXT:   Type: SymDebugTable (0x2E)
# TYPE-ONLY:        Name: _g (4)
# TYPE-ONLY-NEXT:   Type: SymDebugTable (0x64)
# TYPE-ONLY:        Name: _c (13)
# TYPE-ONLY-NEXT:   Type: SymDebugTable (0x64)
# TYPE-ONLY:        Name: _d2 (22)
# TYPE-ONLY-NEXT:   Type: SymDebugTable (0x66)
# TYPE-ONLY:        Name: _b (16)
# TYPE-ONLY-NEXT:   Type: SymDebugTable (0x66)

--- !mach-o
FileHeader:
  magic:           0xFEEDFACF
  cputype:         0x1000007
  cpusubtype:      0x3
  filetype:        0x1
  ncmds:           3
  sizeofcmds:      496
  flags:           0x2000
  reserved:        0x0
LoadCommands:
  - cmd:             LC_SEGMENT_64
    cmdsize:         392
    segname:         ''
    vmaddr:          0
    vmsize:          32
    fileoff:         528
    filesize:        28
    maxprot:         7
    initprot:        7
    nsects:          4
    flags:           0
    Sections:
      - sectname:        __text
        segname:         __TEXT
        addr:            0x0
        size:            9
        offset:          0x210
        align:           0
        reloff:          0x230
        nreloc:          1
        flags:           0x80000000
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
        content:         '000000000000000000'
        relocations:
          - address:         0x0
            symbolnum:       7
            pcrel:           false
            length:          3
            extern:          true
            type:            0
            scattered:       false
            value:           0
      - sectname:        more_data
        segname:         __DATA
        addr:            0x9
        size:            8
        offset:          0x219
        align:           0
        reloff:          0x0
        nreloc:          0
        flags:           0x0
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
        content:         7B00000000000000
      - sectname:        __data
        segname:         __DATA
        addr:            0x11
        size:            11
        offset:          0x221
        align:           0
        reloff:          0x0
        nreloc:          0
        flags:           0x0
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
        content:         7B00000000000000000000
      - sectname:        __common
        segname:         __DATA
        addr:            0x1C
        size:            4
        offset:          0x0
        align:           2
        reloff:          0x0
        nreloc:          0
        flags:           0x1
        reserved1:       0x0
        reserved2:       0x0
        reserved3:       0x0
  - cmd:             LC_SYMTAB
    cmdsize:         24
    symoff:          568
    nsyms:           8
    stroff:          696
    strsize:         32
  - cmd:             LC_DYSYMTAB
    cmdsize:         80
    ilocalsym:       0
    nlocalsym:       7
    iextdefsym:      7
    nextdefsym:      0
    iundefsym:       7
    nundefsym:       1
    tocoff:          0
    ntoc:            0
    modtaboff:       0
    nmodtab:         0
    extrefsymoff:    0
    nextrefsyms:     0
    indirectsymoff:  0
    nindirectsyms:   0
    extreloff:       0
    nextrel:         0
    locreloff:       0
    nlocrel:         0
LinkEditData:
  NameList:
    - n_strx:          4
      n_type:          0x64
      n_sect:          1
      n_desc:          0
      n_value:         0
    - n_strx:          10
      n_type:          0xE
      n_sect:          1
      n_desc:          0
      n_value:         8
    - n_strx:          22
      n_type:          0x66
      n_sect:          1
      n_desc:          0
      n_value:         8
    - n_strx:          16
      n_type:          0x66
      n_sect:          2
      n_desc:          0
      n_value:         9
    - n_strx:          19
      n_type:          0xE
      n_sect:          3
      n_desc:          0
      n_value:         17
    - n_strx:          13
      n_type:          0x64
      n_sect:          4
      n_desc:          0
      n_value:         28
    - n_strx:          7
      n_type:          0x2E
      n_sect:          3
      n_desc:          0
      n_value:         25
    - n_strx:          1
      n_type:          0x2E
      n_sect:          0
      n_desc:          0
      n_value:         0
  StringTable:
    - ''
    - _z
    - _g
    - _f
    - _d
    - _c
    - _b
    - _a
    - _d2
    - ''
    - ''
    - ''
    - ''
    - ''
    - ''
...
