| # REQUIRES: aarch64, x86 |
| # RUN: split-file %s %t.dir |
| |
| # RUN: llvm-mc -filetype=obj -triple=aarch64-windows %t.dir/arm64-dllmain.s -o %t.dir/arm64-dllmain.obj |
| # RUN: llvm-mc -filetype=obj -triple=aarch64-windows %t.dir/arm64-p4sym.s -o %t.dir/arm64-p4sym.obj |
| # RUN: lld-link -dll -machine:arm64 %t.dir/arm64-dllmain.obj %t.dir/arm64-p4sym.obj -out:%t.dll |
| |
| # RUN: llvm-objdump -dz %t.dll | FileCheck -check-prefix=CHECK-ARM64 %s |
| # CHECK-ARM64: 180001000: 52800020 mov w0, #0x1 |
| # CHECK-ARM64: 180001004: d65f03c0 ret |
| # CHECK-ARM64: 180001008: 00000000 |
| # CHECK-ARM64: 18000100c: 00000000 |
| # CHECK-ARM64: 180001010: 52800040 mov w0, #0x2 |
| # CHECK-ARM64: 180001014: d65f03c0 ret |
| |
| #--- arm64-dllmain.s |
| .def _DllMainCRTStartup; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl _DllMainCRTStartup |
| .p2align 2 |
| _DllMainCRTStartup: |
| mov w0, #1 |
| ret |
| |
| #--- arm64-p4sym.s |
| .def p4sym; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl p4sym |
| .p2align 4 |
| p4sym: |
| mov w0, #2 |
| ret |
| |
| # RUN: llvm-mc -filetype=obj -triple=x86_64-windows %t.dir/x86_64-dllmain.s -o %t.dir/x86_64-dllmain.obj |
| # RUN: llvm-mc -filetype=obj -triple=x86_64-windows %t.dir/x86_64-p4sym.s -o %t.dir/x86_64-p4sym.obj |
| # RUN: lld-link -dll -machine:amd64 %t.dir/x86_64-dllmain.obj %t.dir/x86_64-p4sym.obj -out:%t.dll |
| |
| # RUN: llvm-objdump -dz %t.dll | FileCheck -check-prefix=CHECK-X64 %s |
| # CHECK-X64: 180001000: b8 01 00 00 00 movl $0x1, %eax |
| # CHECK-X64: 180001005: c3 retq |
| # CHECK-X64: 180001006: cc int3 |
| # CHECK-X64: 180001007: cc int3 |
| # CHECK-X64: 180001008: cc int3 |
| # CHECK-X64: 180001009: cc int3 |
| # CHECK-X64: 18000100a: cc int3 |
| # CHECK-X64: 18000100b: cc int3 |
| # CHECK-X64: 18000100c: cc int3 |
| # CHECK-X64: 18000100d: cc int3 |
| # CHECK-X64: 18000100e: cc int3 |
| # CHECK-X64: 18000100f: cc int3 |
| # CHECK-X64: 180001010: b8 02 00 00 00 movl $0x2, %eax |
| # CHECK-X64: 180001015: c3 retq |
| |
| #--- x86_64-dllmain.s |
| .def _DllMainCRTStartup; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl _DllMainCRTStartup |
| .p2align 4, 0x90 |
| _DllMainCRTStartup: |
| movl $1, %eax |
| retq |
| |
| #--- x86_64-p4sym.s |
| .def p4sym; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl p4sym |
| .p2align 4, 0x90 |
| p4sym: |
| movl $2, %eax |
| retq |