1// ---- precomp-a.obj - x86_64, hotpatch 2RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force 3RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix BASE 4 5RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin 6RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED 7 8RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin:17 9RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED-MORE 10 11// ---- Many arguments 12RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin:17 /functionpadmin 13RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED 14 15RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin /functionpadmin:17 16RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED-MORE 17 18RUN: not lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin:zz 2>&1 | FileCheck %s --check-prefix FAIL 19 20// ---- precomp-a.obj, precomp-b.obj - x86_64, hotpatch - Ensure several functions are properly padded 21RUN: lld-link %S/Inputs/precomp-a.obj %S/Inputs/precomp-b.obj %S/Inputs/precomp.obj /out:%t.exe /nodefaultlib /force 22RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix MULTI-BASE 23 24RUN: lld-link %S/Inputs/precomp-a.obj %S/Inputs/precomp-b.obj %S/Inputs/precomp.obj /out:%t.exe /nodefaultlib /force /functionpadmin 25RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix MULTI-BASE-PADDED 26 27RUN: lld-link %S/Inputs/precomp-a.obj %S/Inputs/precomp-b.obj %S/Inputs/precomp.obj /out:%t.exe /nodefaultlib /force /functionpadmin:17 28RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix MULTI-BASE-PADDED-MORE 29 30// ---- pdb-diff.obj - x86, no hotpatch - No padding is applied 31RUN: lld-link %S/Inputs/pdb-diff.obj /out:%t.exe /nodefaultlib /force /functionpadmin 32RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix NO-HOTPATCH 33 34// ---- hello64.obj - MASM, x86_64, no hotpatch - No padding is applied 35RUN: lld-link %S/Inputs/hello64.obj /out:%t.exe /nodefaultlib /force /functionpadmin 36RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix HELLO 37 38// ---- std64.lib - Import library, x86_64 - Ensure thunks are padded 39RUN: lld-link %S/Inputs/std64.lib /entry:ExitProcess /out:%t.exe /nodefaultlib /force /subsystem:console 40RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix THUNKS-NO-PAD 41RUN: llvm-readobj --file-headers %t.exe | FileCheck %s --check-prefix THUNKS-NO-PAD-ENTRY 42 43RUN: lld-link %S/Inputs/std64.lib /entry:ExitProcess /out:%t.exe /nodefaultlib /force /functionpadmin /subsystem:console 44RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix THUNKS-PAD 45RUN: llvm-readobj --file-headers %t.exe | FileCheck %s --check-prefix THUNKS-PAD-ENTRY 46 47BASE: Contents of section .text: 48BASE-NEXT: 140001000 4883ec28 b161e8f5 efffbf33 c04883c4 H..(.a.....3.H.. 49BASE-NEXT: 140001010 28c3 (. 50BASE-NEXT: Contents of section .rdata: 51BASE-NEXT: 140002000 01040100 04420000 .....B.. 52BASE-NEXT: Contents of section .pdata: 53BASE-NEXT: 140003000 00100000 12100000 00200000 ......... .. 54 55PADDED: Contents of section .text: 56PADDED-NEXT: 140001000 cccccccc cccccccc cccccccc cccccccc ................ 57PADDED-NEXT: 140001010 4883ec28 b161e8e5 efffbf33 c04883c4 H..(.a.....3.H.. 58PADDED-NEXT: 140001020 28c3 (. 59PADDED-NEXT: Contents of section .rdata: 60PADDED-NEXT: 140002000 01040100 04420000 .....B.. 61PADDED-NEXT: Contents of section .pdata: 62PADDED-NEXT: 140003000 10100000 22100000 00200000 ....".... .. 63 64PADDED-MORE: Contents of section .text: 65PADDED-MORE-NEXT: 140001000 cccccccc cccccccc cccccccc cccccccc ................ 66PADDED-MORE-NEXT: 140001010 cccccccc cccccccc cccccccc cccccccc ................ 67PADDED-MORE-NEXT: 140001020 4883ec28 b161e8d5 efffbf33 c04883c4 H..(.a.....3.H.. 68PADDED-MORE-NEXT: 140001030 28c3 (. 69PADDED-MORE-NEXT: Contents of section .rdata: 70PADDED-MORE-NEXT: 140002000 01040100 04420000 .....B.. 71PADDED-MORE-NEXT: Contents of section .pdata: 72PADDED-MORE-NEXT: 140003000 20100000 32100000 00200000 ...2.... .. 73 74FAIL: lld-link: error: /functionpadmin: invalid argument: zz 75 76MULTI-BASE: Contents of section .text: 77MULTI-BASE-NEXT: 140001000 4883ec28 b161e815 00000033 c04883c4 H..(.a.....3.H.. 78MULTI-BASE-NEXT: 140001010 28c3cccc cccccccc cccccccc cccccccc (............... 79MULTI-BASE-NEXT: 140001020 884c2408 0fbe4424 08c3 .L$...D$.. 80MULTI-BASE-NEXT: Contents of section .rdata: 81MULTI-BASE-NEXT: 140002000 01040100 04420000 .....B.. 82MULTI-BASE-NEXT: Contents of section .pdata: 83MULTI-BASE-NEXT: 140004000 00100000 12100000 00200000 ......... .. 84 85MULTI-BASE-PADDED: Contents of section .text: 86MULTI-BASE-PADDED-NEXT: 140001000 cccccccc cccccccc cccccccc cccccccc ................ 87MULTI-BASE-PADDED-NEXT: 140001010 4883ec28 b161e815 00000033 c04883c4 H..(.a.....3.H.. 88MULTI-BASE-PADDED-NEXT: 140001020 28c3cccc cccccccc cccccccc cccccccc (............... 89MULTI-BASE-PADDED-NEXT: 140001030 884c2408 0fbe4424 08c3 .L$...D$.. 90MULTI-BASE-PADDED-NEXT: Contents of section .rdata: 91MULTI-BASE-PADDED-NEXT: 140002000 01040100 04420000 .....B.. 92MULTI-BASE-PADDED-NEXT: Contents of section .pdata: 93MULTI-BASE-PADDED-NEXT: 140004000 10100000 22100000 00200000 ....".... .. 94 95MULTI-BASE-PADDED-MORE: Contents of section .text: 96MULTI-BASE-PADDED-MORE-NEXT: 140001000 cccccccc cccccccc cccccccc cccccccc ................ 97MULTI-BASE-PADDED-MORE-NEXT: 140001010 cccccccc cccccccc cccccccc cccccccc ................ 98MULTI-BASE-PADDED-MORE-NEXT: 140001020 4883ec28 b161e825 00000033 c04883c4 H..(.a.%...3.H.. 99MULTI-BASE-PADDED-MORE-NEXT: 140001030 28c3cccc cccccccc cccccccc cccccccc (............... 100MULTI-BASE-PADDED-MORE-NEXT: 140001040 cccccccc cccccccc cccccccc cccccccc ................ 101MULTI-BASE-PADDED-MORE-NEXT: 140001050 884c2408 0fbe4424 08c3 .L$...D$.. 102MULTI-BASE-PADDED-MORE-NEXT: Contents of section .rdata: 103MULTI-BASE-PADDED-MORE-NEXT: 140002000 01040100 04420000 .....B.. 104MULTI-BASE-PADDED-MORE-NEXT: Contents of section .pdata: 105MULTI-BASE-PADDED-MORE-NEXT: 140004000 20100000 32100000 00200000 ...2.... .. 106 107 108NO-HOTPATCH: Contents of section .text: 109NO-HOTPATCH-NEXT: 401000 558becb8 2a000000 5dc3 U...*...]. 110 111HELLO: Contents of section .text: 112HELLO-NEXT: 140001000 4883ec28 48c7c100 00000048 8d15f40f H..(H......H.... 113HELLO-NEXT: 140001010 00004c8d 05e70f00 0041b900 000000e8 ..L......A...... 114HELLO-NEXT: 140001020 dcefffbf b9000000 00e8d2ef ffbfe8cd ................ 115HELLO-NEXT: 140001030 efffbf ... 116HELLO-NEXT: Contents of section .data: 117HELLO-NEXT: 140002000 48656c6c 6f004865 6c6c6f20 576f726c Hello.Hello Worl 118HELLO-NEXT: 140002010 642100 d!. 119 120THUNKS-NO-PAD: Contents of section .text: 121THUNKS-NO-PAD-NEXT: 140001000 ff253210 0000 .%2... 122THUNKS-NO-PAD-NEXT: Contents of section .rdata: 123THUNKS-NO-PAD-NEXT: 140002000 28200000 00000000 00000000 56200000 ( ..........V .. 124THUNKS-NO-PAD-NEXT: 140002010 38200000 00000000 00000000 00000000 8 .............. 125THUNKS-NO-PAD-NEXT: 140002020 00000000 00000000 48200000 00000000 ........H ...... 126THUNKS-NO-PAD-NEXT: 140002030 00000000 00000000 48200000 00000000 ........H ...... 127THUNKS-NO-PAD-NEXT: 140002040 00000000 00000000 00004578 69745072 ..........ExitPr 128THUNKS-NO-PAD-NEXT: 140002050 6f636573 73007374 6436342e 646c6c00 ocess.std64.dll. 129 130THUNKS-NO-PAD-ENTRY-LABEL: ImageOptionalHeader { 131THUNKS-NO-PAD-ENTRY: AddressOfEntryPoint: 0x1000 132THUNKS-NO-PAD-ENTRY-NEXT: BaseOfCode: 0x1000 133 134THUNKS-PAD: Contents of section .text: 135THUNKS-PAD-NEXT: 140001000 cccccccc cccccccc cccccccc cccccccc ................ 136THUNKS-PAD-NEXT: 140001010 ff252210 0000 .%"... 137THUNKS-PAD-NEXT: Contents of section .rdata: 138THUNKS-PAD-NEXT: 140002000 28200000 00000000 00000000 56200000 ( ..........V .. 139THUNKS-PAD-NEXT: 140002010 38200000 00000000 00000000 00000000 8 .............. 140THUNKS-PAD-NEXT: 140002020 00000000 00000000 48200000 00000000 ........H ...... 141THUNKS-PAD-NEXT: 140002030 00000000 00000000 48200000 00000000 ........H ...... 142THUNKS-PAD-NEXT: 140002040 00000000 00000000 00004578 69745072 ..........ExitPr 143THUNKS-PAD-NEXT: 140002050 6f636573 73007374 6436342e 646c6c00 ocess.std64.dll. 144 145THUNKS-PAD-ENTRY-LABEL: ImageOptionalHeader { 146THUNKS-PAD-ENTRY: AddressOfEntryPoint: 0x1010 147THUNKS-PAD-ENTRY-NEXT: BaseOfCode: 0x1000 148