| # REQUIRES: x86 |
| # RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t.o |
| |
| # RUN: lld-link -lldmingw %t.o -out:%t-default.exe 2>&1 | FileCheck -allow-empty -check-prefix=LINK %s |
| # RUN: lld-link -lldmingw %t.o -out:%t-cui.exe -subsystem:console 2>&1 | FileCheck -allow-empty -check-prefix=LINK %s |
| # RUN: lld-link -lldmingw %t.o -out:%t-gui.exe -subsystem:windows 2>&1 | FileCheck -allow-empty -check-prefix=LINK %s |
| |
| # RUN: llvm-readobj --file-headers %t-default.exe | FileCheck -check-prefix=CUI %s |
| # RUN: llvm-readobj --file-headers %t-cui.exe | FileCheck -check-prefix=CUI %s |
| # RUN: llvm-readobj --file-headers %t-gui.exe | FileCheck -check-prefix=GUI %s |
| |
| # Check that this doesn't print any warnings. |
| # LINK-NOT: found both wmain and main |
| |
| # CUI: AddressOfEntryPoint: 0x1001 |
| # CUI: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3) |
| |
| # GUI: AddressOfEntryPoint: 0x1002 |
| # GUI: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI (0x2) |
| |
| |
| .text |
| .globl mainCRTStartup |
| .globl WinMainCRTStartup |
| # MinGW only uses the entry points above, these other ones aren't |
| # used as entry. |
| .globl main |
| .globl wmain |
| .globl wmainCRTStartup |
| .globl wWinMainCRTStartup |
| foo: |
| ret |
| mainCRTStartup: |
| ret |
| WinMainCRTStartup: |
| ret |
| main: |
| ret |
| wmain: |
| ret |
| wmainCRTStartup: |
| ret |
| wWinMainCRTStartup: |
| ret |