# Check that llvm-lib doesn't list the members of an archive which contains the
# special member /<ECSYMBOLS>/.

# RUN: yaml2obj --docnum=1 %s -o %t.lib
# RUN: llvm-nm --print-armap %t.lib 2>&1 | FileCheck --check-prefix=NM1 %s
# NM1: truncated or malformed archive (invalid EC symbols size (3))

--- !Arch
Members:
  - Name:            '/'
    Size:            '0'
  - Name:            '/'
    Size:            '0'
  - Name:            '/<ECSYMBOLS>/'
    Size:            '3'
    Content:         010203
    PaddingByte:     0
...

# RUN: yaml2obj --docnum=2 %s -o %t.lib
# RUN: llvm-nm --print-armap %t.lib 2>&1 | FileCheck --check-prefix=NM2 %s
# NM2: truncated or malformed archive (invalid EC symbols size. Size was 7, but expected 8)

--- !Arch
Members:
  - Name:            '/'
    Size:            '0'
  - Name:            '/'
    Size:            '12'
    Content:         010000001000000000000000
  - Name:            '/<ECSYMBOLS>/'
    Size:            '7'
    Content:         02000000010001
    PaddingByte:     0
...

# RUN: yaml2obj --docnum=3 %s -o %t.lib
# RUN: llvm-nm --print-armap %t.lib 2>&1 | FileCheck --check-prefix=NM3 %s
# NM3: truncated or malformed archive (invalid EC symbol index 2 is larger than member count 1)

--- !Arch
Members:
  - Name:            '/'
    Size:            '0'
  - Name:            '/'
    Size:            '12'
    Content:         010000001000000000000000
  - Name:            '/<ECSYMBOLS>/'
    Size:            '8'
    Content:         0100000002006100
  - Name:            'a.obj'
    Size:            '0'
...


# RUN: yaml2obj --docnum=4 %s -o %t.lib
# RUN: llvm-nm --print-armap %t.lib 2>&1 | FileCheck --check-prefix=NM4 %s
# NM4: truncated or malformed archive (invalid EC symbol index 0)

--- !Arch
Members:
  - Name:            '/'
    Size:            '0'
  - Name:            '/'
    Size:            '12'
    Content:         010000001000000000000000
  - Name:            '/<ECSYMBOLS>/'
    Size:            '8'
    Content:         0100000000006100
  - Name:            'a.obj'
    Size:            '0'
...

# RUN: yaml2obj --docnum=5 %s -o %t.lib
# RUN: llvm-nm --print-armap %t.lib 2>&1 | FileCheck --check-prefix=NM5 %s
# NM5: truncated or malformed archive (malformed EC symbol names: not null-terminated)

--- !Arch
Members:
  - Name:            '/'
    Size:            '0'
  - Name:            '/'
    Size:            '12'
    Content:         010000001000000000000000
  - Name:            '/<ECSYMBOLS>/'
    Size:            '8'
    Content:         0100000001006161
  - Name:            'a.obj'
    Size:            '0'
...
