blob: 19d9498edad90a2efa8420529fcf68c7896f9b48 [file] [edit]
# REQUIRES: webassembly
# Embedded data formatters are placed by a `section` attribute on a data
# variable, which on wasm lands in a named data segment rather than a top-level
# custom section. Recognize the well-known formatter segment names so the
# data-formatter loader can find them, and map the segments into linear memory
# like any other data segment.
# RUN: yaml2obj %s -o %t.wasm
# RUN: %lldb %t.wasm \
# RUN: -o "target modules dump sections" \
# RUN: -o "target modules load --file %t.wasm --slide 0x4000000000000000" \
# RUN: -o "target modules dump sections" \
# RUN: -o exit 2>&1 | FileCheck %s
# The formatter segments are typed as formatter sections, not plain data, and
# their file address is their linear-memory address (from the init expr).
# CHECK-LABEL: File Address
# CHECK-DAG: lldb-formatters {{.*}}[0x0000000000010000-0x0000000000010004)
# CHECK-DAG: lldb-type-summaries {{.*}}[0x0000000000010010-0x0000000000010014)
# After loading the module in the Object space (top bit set), the formatter
# segments stay in the Memory space at their linear address like other data.
# CHECK-LABEL: Load Address
# CHECK-DAG: lldb-formatters {{.*}}[0x0000000000010000-0x0000000000010004)
# CHECK-DAG: lldb-type-summaries {{.*}}[0x0000000000010010-0x0000000000010014)
--- !WASM
FileHeader:
Version: 0x1
Sections:
- Type: TYPE
Signatures:
- Index: 0
ParamTypes: []
ReturnTypes:
- I32
- Type: FUNCTION
FunctionTypes: [ 0 ]
- Type: MEMORY
Memories:
- Minimum: 0x2
- Type: CODE
Functions:
- Index: 0
Locals: []
Body: 412A0F0B
- Type: DATA
Segments:
- SectionOffset: 6
InitFlags: 0
Offset:
Opcode: I32_CONST
Value: 65536
Content: 'DEADBEEF'
- SectionOffset: 16
InitFlags: 0
Offset:
Opcode: I32_CONST
Value: 65552
Content: 'CAFEBABE'
- Type: CUSTOM
Name: name
FunctionNames:
- Index: 0
Name: get_42
DataSegmentNames:
- Index: 0
Name: .lldbformatters
- Index: 1
Name: .lldbsummaries
...