# RUN: ld64.lld -arch armv7 -r -print_atoms %s -o %t  | FileCheck %s
# RUN: ld64.lld -arch armv7 -r -print_atoms %t -o %t2  | FileCheck %s
# RUN: ld64.lld -arch armv7 -dylib %s -o %t3.dylib %p/Inputs/armv7/libSystem.yaml \
# RUN:   && llvm-objdump --macho --private-headers %t3.dylib | FileCheck --check-prefix=CHECK2 %s
#
# Test parsing LC_DATA_IN_CODE
#
#

--- !mach-o
arch:            armv7
file-type:       MH_OBJECT
flags:           [ MH_SUBSECTIONS_VIA_SYMBOLS ]
sections:
  - segment:         __TEXT
    section:         __text
    type:            S_REGULAR
    attributes:      [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
    alignment:       2
    address:         0x0000000000000000
    content:         [ 0x00, 0xBF, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00,
                       0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
                       0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xBF,
                       0x00, 0xF0, 0x20, 0xE3, 0x0A, 0x00, 0x00, 0x00,
                       0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
                       0x0D, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x20, 0xE3 ]
local-symbols:
  - name:            _foo_thumb
    type:            N_SECT
    sect:            1
    desc:            [ N_ARM_THUMB_DEF ]
    value:           0x0000000000000000
  - name:            _foo_arm
    type:            N_SECT
    sect:            1
    value:           0x0000000000000018
dataInCode:
  - offset:          0x00000004
    length:          0x0004
    kind:            DICE_KIND_DATA
  - offset:          0x00000008
    length:          0x0004
    kind:            DICE_KIND_JUMP_TABLE32
  - offset:          0x0000000C
    length:          0x0004
    kind:            DICE_KIND_JUMP_TABLE16
  - offset:          0x00000010
    length:          0x0004
    kind:            DICE_KIND_JUMP_TABLE8
  - offset:          0x0000001C
    length:          0x0004
    kind:            DICE_KIND_DATA
  - offset:          0x00000020
    length:          0x0004
    kind:            DICE_KIND_JUMP_TABLE32
  - offset:          0x00000024
    length:          0x0004
    kind:            DICE_KIND_JUMP_TABLE16
  - offset:          0x00000028
    length:          0x0004
    kind:            DICE_KIND_JUMP_TABLE8
...



# CHECK: defined-atoms:
# CHECK:   - name:            _foo_thumb
# CHECK:     references:
# CHECK:       - kind:            modeThumbCode
# CHECK:         offset:          0
# CHECK:       - kind:            modeData
# CHECK:         offset:          4
# CHECK:         addend:          1
# CHECK:       - kind:            modeData
# CHECK:         offset:          8
# CHECK:         addend:          4
# CHECK:       - kind:            modeData
# CHECK:         offset:          12
# CHECK:         addend:          3
# CHECK:       - kind:            modeData
# CHECK:         offset:          16
# CHECK:         addend:          2
# CHECK:       - kind:            modeThumbCode
# CHECK:         offset:          20
# CHECK:   - name:            _foo_arm
# CHECK:     references:
# CHECK:       - kind:            modeData
# CHECK:         offset:          4
# CHECK:         addend:          1
# CHECK:       - kind:            modeData
# CHECK:         offset:          8
# CHECK:         addend:          4
# CHECK:       - kind:            modeData
# CHECK:         offset:          12
# CHECK:         addend:          3
# CHECK:       - kind:            modeData
# CHECK:         offset:          16
# CHECK:         addend:          2
# CHECK:       - kind:            modeArmCode
# CHECK:         offset:          20


# CHECK2:      cmd LC_DATA_IN_CODE
# CHECK2:  cmdsize 16
# CHECK2: datasize 64


#	.code	16
#  .thumb_func	_foo_thumb
#_foo_thumb:
# nop
# nop
#
#	.data_region
#  .long 0
#	.end_data_region
#
#	.data_region jt32
#  .long 1
#	.end_data_region
#
#	.data_region jt16
#  .long 2
#	.end_data_region
#
#	.data_region jt8
#  .long 3
#	.end_data_region
#
#  nop
#  nop
#
#
#
#	.code	32
#  .align 2
#_foo_arm:
#  nop
#
#	.data_region
#  .long 10
#	.end_data_region
#
#	.data_region jt32
#  .long 11
#	.end_data_region
#
#	.data_region jt16
#  .long 12
#	.end_data_region
#
#	.data_region jt8
#  .long 13
#	.end_data_region
#
#  nop
#
