188 lines
7.5 KiB
ArmAsm
188 lines
7.5 KiB
ArmAsm
|
# REQUIRES: x86
|
||
|
|
||
|
# Test merging code sections with data sections.
|
||
|
|
||
|
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
|
||
|
# RUN: lld-link -machine:amd64 -dll -noentry -out:%t.dll %t.obj -merge:.testx=.testd -merge:.testx2=.testbss -merge:.testd2=.testx3 -merge:.testbss2=.testx4
|
||
|
|
||
|
# RUN: llvm-readobj --sections %t.dll | FileCheck %s
|
||
|
# CHECK: Sections [
|
||
|
# CHECK-NEXT: Section {
|
||
|
# CHECK-NEXT: Number: 1
|
||
|
# CHECK-NEXT: Name: .testbss (2E 74 65 73 74 62 73 73)
|
||
|
# CHECK-NEXT: VirtualSize: 0x18
|
||
|
# CHECK-NEXT: VirtualAddress: 0x1000
|
||
|
# CHECK-NEXT: RawDataSize: 512
|
||
|
# CHECK-NEXT: PointerToRawData: 0x400
|
||
|
# CHECK-NEXT: PointerToRelocations: 0x0
|
||
|
# CHECK-NEXT: PointerToLineNumbers: 0x0
|
||
|
# CHECK-NEXT: RelocationCount: 0
|
||
|
# CHECK-NEXT: LineNumberCount: 0
|
||
|
# CHECK-NEXT: Characteristics [ (0xC0000020)
|
||
|
# CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: Section {
|
||
|
# CHECK-NEXT: Number: 2
|
||
|
# CHECK-NEXT: Name: .testd (2E 74 65 73 74 64 00 00)
|
||
|
# CHECK-NEXT: VirtualSize: 0x18
|
||
|
# CHECK-NEXT: VirtualAddress: 0x2000
|
||
|
# CHECK-NEXT: RawDataSize: 512
|
||
|
# CHECK-NEXT: PointerToRawData: 0x600
|
||
|
# CHECK-NEXT: PointerToRelocations: 0x0
|
||
|
# CHECK-NEXT: PointerToLineNumbers: 0x0
|
||
|
# CHECK-NEXT: RelocationCount: 0
|
||
|
# CHECK-NEXT: LineNumberCount: 0
|
||
|
# CHECK-NEXT: Characteristics [ (0x40000020)
|
||
|
# CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: Section {
|
||
|
# CHECK-NEXT: Number: 3
|
||
|
# CHECK-NEXT: Name: .testx3 (2E 74 65 73 74 78 33 00)
|
||
|
# CHECK-NEXT: VirtualSize: 0x12
|
||
|
# CHECK-NEXT: VirtualAddress: 0x3000
|
||
|
# CHECK-NEXT: RawDataSize: 512
|
||
|
# CHECK-NEXT: PointerToRawData: 0x800
|
||
|
# CHECK-NEXT: PointerToRelocations: 0x0
|
||
|
# CHECK-NEXT: PointerToLineNumbers: 0x0
|
||
|
# CHECK-NEXT: RelocationCount: 0
|
||
|
# CHECK-NEXT: LineNumberCount: 0
|
||
|
# CHECK-NEXT: Characteristics [ (0x60000020)
|
||
|
# CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: Section {
|
||
|
# CHECK-NEXT: Number: 4
|
||
|
# CHECK-NEXT: Name: .testx4 (2E 74 65 73 74 78 34 00)
|
||
|
# CHECK-NEXT: VirtualSize: 0x14
|
||
|
# CHECK-NEXT: VirtualAddress: 0x4000
|
||
|
# CHECK-NEXT: RawDataSize: 512
|
||
|
# CHECK-NEXT: PointerToRawData: 0xA00
|
||
|
# CHECK-NEXT: PointerToRelocations: 0x0
|
||
|
# CHECK-NEXT: PointerToLineNumbers: 0x0
|
||
|
# CHECK-NEXT: RelocationCount: 0
|
||
|
# CHECK-NEXT: LineNumberCount: 0
|
||
|
# CHECK-NEXT: Characteristics [ (0x60000020)
|
||
|
# CHECK-NEXT: IMAGE_SCN_CNT_CODE (0x20)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
|
||
|
# CHECK-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: ]
|
||
|
|
||
|
# RUN: llvm-objdump -d %t.dll | FileCheck -check-prefix=DISASM %s
|
||
|
# DISASM: Disassembly of section .testbss:
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: 0000000180001000 <.testbss>:
|
||
|
# DISASM-NEXT: 180001000: 00 00 addb %al, (%rax)
|
||
|
# DISASM-NEXT: 180001002: 00 00 addb %al, (%rax)
|
||
|
# DISASM-NEXT: 180001004: cc int3
|
||
|
# DISASM-NEXT: 180001005: cc int3
|
||
|
# DISASM-NEXT: 180001006: cc int3
|
||
|
# DISASM-NEXT: 180001007: cc int3
|
||
|
# DISASM-NEXT: 180001008: cc int3
|
||
|
# DISASM-NEXT: 180001009: cc int3
|
||
|
# DISASM-NEXT: 18000100a: cc int3
|
||
|
# DISASM-NEXT: 18000100b: cc int3
|
||
|
# DISASM-NEXT: 18000100c: cc int3
|
||
|
# DISASM-NEXT: 18000100d: cc int3
|
||
|
# DISASM-NEXT: 18000100e: cc int3
|
||
|
# DISASM-NEXT: 18000100f: cc int3
|
||
|
# DISASM-NEXT: 180001010: 48 c7 c0 02 00 00 00 movq $0x2, %rax
|
||
|
# DISASM-NEXT: 180001017: c3 retq
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: Disassembly of section .testd:
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: 0000000180002000 <.testd>:
|
||
|
# DISASM-NEXT: 180002000: 01 00 addl %eax, (%rax)
|
||
|
# DISASM-NEXT: 180002002: cc int3
|
||
|
# DISASM-NEXT: 180002003: cc int3
|
||
|
# DISASM-NEXT: 180002004: cc int3
|
||
|
# DISASM-NEXT: 180002005: cc int3
|
||
|
# DISASM-NEXT: 180002006: cc int3
|
||
|
# DISASM-NEXT: 180002007: cc int3
|
||
|
# DISASM-NEXT: 180002008: cc int3
|
||
|
# DISASM-NEXT: 180002009: cc int3
|
||
|
# DISASM-NEXT: 18000200a: cc int3
|
||
|
# DISASM-NEXT: 18000200b: cc int3
|
||
|
# DISASM-NEXT: 18000200c: cc int3
|
||
|
# DISASM-NEXT: 18000200d: cc int3
|
||
|
# DISASM-NEXT: 18000200e: cc int3
|
||
|
# DISASM-NEXT: 18000200f: cc int3
|
||
|
# DISASM-NEXT: 180002010: 48 c7 c0 01 00 00 00 movq $0x1, %rax
|
||
|
# DISASM-NEXT: 180002017: c3 retq
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: Disassembly of section .testx3:
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: 0000000180003000 <.testx3>:
|
||
|
# DISASM-NEXT: 180003000: 48 c7 c0 03 00 00 00 movq $0x3, %rax
|
||
|
# DISASM-NEXT: 180003007: c3 retq
|
||
|
# DISASM-NEXT: 180003008: cc int3
|
||
|
# DISASM-NEXT: 180003009: cc int3
|
||
|
# DISASM-NEXT: 18000300a: cc int3
|
||
|
# DISASM-NEXT: 18000300b: cc int3
|
||
|
# DISASM-NEXT: 18000300c: cc int3
|
||
|
# DISASM-NEXT: 18000300d: cc int3
|
||
|
# DISASM-NEXT: 18000300e: cc int3
|
||
|
# DISASM-NEXT: 18000300f: cc int3
|
||
|
# DISASM-NEXT: 180003010: 02 00 addb (%rax), %al
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: Disassembly of section .testx4:
|
||
|
# DISASM-EMPTY:
|
||
|
# DISASM-NEXT: 0000000180004000 <.testx4>:
|
||
|
# DISASM-NEXT: 180004000: 48 c7 c0 04 00 00 00 movq $0x4, %rax
|
||
|
# DISASM-NEXT: 180004007: c3 retq
|
||
|
# DISASM-NEXT: 180004008: cc int3
|
||
|
# DISASM-NEXT: 180004009: cc int3
|
||
|
# DISASM-NEXT: 18000400a: cc int3
|
||
|
# DISASM-NEXT: 18000400b: cc int3
|
||
|
# DISASM-NEXT: 18000400c: cc int3
|
||
|
# DISASM-NEXT: 18000400d: cc int3
|
||
|
# DISASM-NEXT: 18000400e: cc int3
|
||
|
# DISASM-NEXT: 18000400f: cc int3
|
||
|
# DISASM-NEXT: 180004010: 00 00 addb %al, (%rax)
|
||
|
# DISASM-NEXT: 180004012: 00 00 addb %al, (%rax)
|
||
|
|
||
|
|
||
|
.section .testx, "xr"
|
||
|
.p2align 4
|
||
|
movq $1, %rax
|
||
|
retq
|
||
|
|
||
|
.section .testx2, "xr"
|
||
|
.p2align 4
|
||
|
movq $2, %rax
|
||
|
retq
|
||
|
|
||
|
.section .testd, "dr"
|
||
|
.p2align 4
|
||
|
.word 1
|
||
|
|
||
|
.section .testbss, "b"
|
||
|
.p2align 4
|
||
|
.skip 4
|
||
|
|
||
|
.section .testx3, "xr"
|
||
|
.p2align 4
|
||
|
movq $3, %rax
|
||
|
retq
|
||
|
|
||
|
.section .testx4, "xr"
|
||
|
.p2align 4
|
||
|
movq $4, %rax
|
||
|
retq
|
||
|
|
||
|
.section .testd2, "dr"
|
||
|
.p2align 4
|
||
|
.word 2
|
||
|
|
||
|
.section .testbss2, "b"
|
||
|
.p2align 4
|
||
|
.skip 4
|