parse-data.yaml 3.41 KB
# RUN: ld64.lld -arch x86_64 -r -print_atoms %s -o %t  | FileCheck %s
#
# Test parsing of mach-o data symbols.
#
# long a = 0x0807060504030201;
# int b = 0x14131211;
# int c = 0x24232221;
# static int s1;
# static int s2 = 0x34333231;
#
#


--- !mach-o
arch:            x86_64
file-type:       MH_OBJECT
flags:           [ MH_SUBSECTIONS_VIA_SYMBOLS ]
has-UUID:        false
OS:              unknown
sections:
  - segment:         __DATA
    section:         __data
    type:            S_REGULAR
    attributes:      [  ]
    alignment:       8
    address:         0x0000000000000000
    content:         [ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                       0x11, 0x12, 0x13, 0x14, 0x21, 0x22, 0x23, 0x24,
                       0x31, 0x32, 0x33, 0x34, 0x41, 0x42, 0x43, 0x44 ]
  - segment:         __CUST
    section:         __custom
    type:            S_REGULAR
    attributes:      [  ]
    alignment:       8
    address:         0x0000000000000018
    content:         [ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 ]
  - segment:         __DATA
    section:         __bss
    type:            S_ZEROFILL
    attributes:      [  ]
    alignment:       2
    address:         0x0000000000000020
    size:            4
local-symbols:
  - name:            _s1
    type:            N_SECT
    sect:            3
    value:           0x0000000000000020
  - name:            _s2
    type:            N_SECT
    sect:            1
    value:           0x0000000000000010
global-symbols:
  - name:            _a
    type:            N_SECT
    scope:           [ N_EXT ]
    sect:            1
    value:           0x0000000000000000
  - name:            _b
    type:            N_SECT
    scope:           [ N_EXT ]
    sect:            1
    value:           0x0000000000000008
  - name:            _c
    type:            N_SECT
    scope:           [ N_EXT ]
    sect:            1
    value:           0x000000000000000C
  - name:            _cWeak
    type:            N_SECT
    scope:           [ N_EXT ]
    sect:            1
    desc:            [ N_WEAK_DEF ]
    value:           0x0000000000000014
  - name:            _kustom
    type:            N_SECT
    scope:           [ N_EXT ]
    sect:            2
    value:           0x0000000000000018
...

# CHECK: defined-atoms:

# CHECK:   - name:            _a
# CHECK:     scope:           global
# CHECK:     type:            data
# CHECK:     content:         [ 01, 02, 03, 04, 05, 06, 07, 08 ]

# CHECK:   - name:            _b
# CHECK:     scope:           global
# CHECK:     type:            data
# CHECK:     content:         [ 11, 12, 13, 14 ]

# CHECK:   - name:            _c
# CHECK:     scope:           global
# CHECK:     type:            data
# CHECK:     content:         [ 21, 22, 23, 24 ]

# CHECK:   - name:            _s2
# CHECK:     type:            data
# CHECK:     content:         [ 31, 32, 33, 34 ]

# CHECK:   - name:            _cWeak
# CHECK:     scope:           global
# CHECK:     type:            data
# CHECK:     content:         [ 41, 42, 43, 44 ]
# CHECK:     merge:           as-weak

# CHECK:   - name:            _s1
# CHECK:     type:            zero-fill
# CHECK:     size:            4

# CHECK:   - name:            _kustom
# CHECK:     scope:           global
# CHECK:     type:            unknown
# CHECK:     content:         [ 01, 02, 03, 04, 05, 06, 07, 08 ]
# CHECK:     section-choice:  custom-required
# CHECK:     section-name:    '__CUST/__custom'