PT_TLS-overlap-PT_LOAD.yaml 1.71 KB
# Overlapping PT_LOAD and PT_TLS segments should be able to exist side by side.

# RUN: yaml2obj %s > %t
# RUN: lldb-test object-file %t | FileCheck %s
# RUN: lldb %t -o "image lookup -a 0x1000" -b | FileCheck --check-prefix=LOOKUP %s

# CHECK:        Index: 0
# CHECK-NEXT:   ID: 0xffffffffffffffff
# CHECK-NEXT:   Name: PT_LOAD[0]
# CHECK-NEXT:   Type: container
# CHECK-NEXT:   Permissions: rw-
# CHECK-NEXT:   Thread specific: no
# CHECK-NEXT:   VM address: 0x1000
# CHECK-NEXT:   VM size: 16
# CHECK-NEXT:   File size: 16
# CHECK-NEXT:   Showing 1 subsections

# CHECK:        Index: 1
# CHECK-NEXT:   ID: 0xfffffffffffffffe
# CHECK-NEXT:   Name: PT_TLS[0]
# CHECK-NEXT:   Type: container
# CHECK-NEXT:   Permissions: rw-
# CHECK-NEXT:   Thread specific: yes
# CHECK-NEXT:   VM address: 0x1000
# CHECK-NEXT:   VM size: 16
# CHECK-NEXT:   File size: 0
# CHECK-NEXT:   Showing 1 subsections

# LOOKUP-LABEL: image lookup -a 0x1000
# LOOKUP:       Address: {{.*}}.PT_LOAD[0]..data + 0)

!ELF
FileHeader:
  Class:           ELFCLASS32
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_ARM
Sections:
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_WRITE ]
    Address:         0x1000
    AddressAlign:    0x4
    Size:            0x10
  - Name:            .tbss
    Type:            SHT_NOBITS
    Flags:           [ SHF_ALLOC, SHF_WRITE, SHF_TLS ]
    Address:         0x1000
    AddressAlign:    0x4
    Size:            0x10
ProgramHeaders:
  - Type: PT_LOAD
    Flags: [ PF_W, PF_R ]
    VAddr: 0x1000
    Align: 0x4
    Sections:
      - Section: .data
  - Type: PT_TLS
    Flags: [ PF_R, PF_W ]
    VAddr: 0x1000
    Align: 0x4
    Sections:
      - Section: .tbss