## Test that the --extern-only switch only shows external ELF symbols.

# RUN: yaml2obj %s -o %t.o
# RUN: llvm-nm %t.o --extern-only --no-sort | FileCheck %s
# RUN: llvm-nm %t.o -g --no-sort | FileCheck %s

## Using --no-sort ensures that the symbols appear in the symbol table order
## allowing our CHECK-NOTs to work as expected.
# CHECK-NOT: local
# CHECK: D global_data_symbol
# CHECK-NEXT: T global_function_symbol
# CHECK-NEXT: U undefined
# CHECK-NEXT: W weak_symbol
# CHECK-NOT: local

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Sections:
  - Name:  .text
    Type:  SHT_PROGBITS
    Flags: [SHF_ALLOC, SHF_EXECINSTR]
  - Name:  .data
    Type:  SHT_PROGBITS
    Flags: [SHF_ALLOC, SHF_WRITE]
Symbols:
  - Name:    local_function_symbol
    Binding: STB_LOCAL
    Section: .text
  - Name:    local_data_symbol
    Binding: STB_LOCAL
    Section: .data
  - Name:    global_data_symbol
    Binding: STB_GLOBAL
    Section: .data
  - Name:    global_function_symbol
    Binding: STB_GLOBAL
    Section: .text
  - Name:    undefined
    Binding: STB_GLOBAL
  - Name:    weak_symbol
    Binding: STB_WEAK
    Section: .data
  - Name:    local_at_end
    Binding: STB_LOCAL
    Section: .text
