# This test doesn't attempt to mandate a specific section classification. It is
# here to document the existing behavior and to make sure we don't do something
# completely crazy (like crashing).

# RUN: yaml2obj %s > %t
# RUN: lldb-test object-file %t | FileCheck %s

# The section is called .data, but it has the SHF_EXECINSTR flag set. Have
# the flag take precedence over the name.
# CHECK-LABEL: Name: .data
# CHECK-NEXT: Type: code

# Section type (SHT_SYMTAB) takes precedence over name-based deduction.
# CHECK-LABEL: Name: .text
# CHECK-NEXT: Type: elf-symbol-table

--- !ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_DYN
  Machine:         EM_X86_64
  Entry:           0x00000000000007A0
Sections:
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_EXECINSTR, SHF_ALLOC ]
    AddressAlign:    0x0000000000000004
    Content:         DEADBEEFBAADF00D
  - Name:            .text
    Type:            SHT_SYMTAB
    Flags:           [ ]
    AddressAlign:    0x0000000000000004
    Content:         DEADBEEFBAADF00D
...
