reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142
  143
  144
  145
  146
  147
// ---- precomp-a.obj - x86_64, hotpatch
RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix BASE

RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED

RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin:17
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED-MORE

// ---- Many arguments
RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin:17 /functionpadmin
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED

RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin /functionpadmin:17
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix PADDED-MORE

RUN: not lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /functionpadmin:zz 2>&1 | FileCheck %s --check-prefix FAIL

// ---- precomp-a.obj, precomp-b.obj - x86_64, hotpatch - Ensure several functions are properly padded
RUN: lld-link %S/Inputs/precomp-a.obj %S/Inputs/precomp-b.obj %S/Inputs/precomp.obj /out:%t.exe /nodefaultlib /force
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix MULTI-BASE

RUN: lld-link %S/Inputs/precomp-a.obj %S/Inputs/precomp-b.obj %S/Inputs/precomp.obj /out:%t.exe /nodefaultlib /force /functionpadmin
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix MULTI-BASE-PADDED

RUN: lld-link %S/Inputs/precomp-a.obj %S/Inputs/precomp-b.obj %S/Inputs/precomp.obj /out:%t.exe /nodefaultlib /force /functionpadmin:17
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix MULTI-BASE-PADDED-MORE

// ---- pdb-diff.obj - x86, no hotpatch - No padding is applied
RUN: lld-link %S/Inputs/pdb-diff.obj /out:%t.exe /nodefaultlib /force /functionpadmin
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix NO-HOTPATCH

// ---- hello64.obj - MASM, x86_64, no hotpatch - No padding is applied
RUN: lld-link %S/Inputs/hello64.obj /out:%t.exe /nodefaultlib /force /functionpadmin
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix HELLO

// ---- std64.lib - Import library, x86_64 - Ensure thunks are padded
RUN: lld-link %S/Inputs/std64.lib /entry:ExitProcess /out:%t.exe /nodefaultlib /force /subsystem:console
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix THUNKS-NO-PAD
RUN: llvm-readobj --file-headers %t.exe | FileCheck %s --check-prefix THUNKS-NO-PAD-ENTRY

RUN: lld-link %S/Inputs/std64.lib /entry:ExitProcess /out:%t.exe /nodefaultlib /force /functionpadmin /subsystem:console
RUN: llvm-objdump -s %t.exe | FileCheck %s --check-prefix THUNKS-PAD
RUN: llvm-readobj --file-headers %t.exe | FileCheck %s --check-prefix THUNKS-PAD-ENTRY

BASE: Contents of section .text:
BASE-NEXT:  140001000 4883ec28 b161e8f5 efffbf33 c04883c4  H..(.a.....3.H..
BASE-NEXT:  140001010 28c3                                 (.
BASE-NEXT: Contents of section .rdata:
BASE-NEXT:  140002000 01040100 04420000                    .....B..
BASE-NEXT: Contents of section .pdata:
BASE-NEXT:  140003000 00100000 12100000 00200000           ......... ..

PADDED: Contents of section .text:
PADDED-NEXT:  140001000 cccccccc cccccccc cccccccc cccccccc  ................
PADDED-NEXT:  140001010 4883ec28 b161e8e5 efffbf33 c04883c4  H..(.a.....3.H..
PADDED-NEXT:  140001020 28c3                                 (.
PADDED-NEXT: Contents of section .rdata:
PADDED-NEXT:  140002000 01040100 04420000                    .....B..
PADDED-NEXT: Contents of section .pdata:
PADDED-NEXT:  140003000 10100000 22100000 00200000           ....".... ..

PADDED-MORE: Contents of section .text:
PADDED-MORE-NEXT:  140001000 cccccccc cccccccc cccccccc cccccccc  ................
PADDED-MORE-NEXT:  140001010 cccccccc cccccccc cccccccc cccccccc  ................
PADDED-MORE-NEXT:  140001020 4883ec28 b161e8d5 efffbf33 c04883c4  H..(.a.....3.H..
PADDED-MORE-NEXT:  140001030 28c3                                 (.
PADDED-MORE-NEXT: Contents of section .rdata:
PADDED-MORE-NEXT:  140002000 01040100 04420000                    .....B..
PADDED-MORE-NEXT: Contents of section .pdata:
PADDED-MORE-NEXT:  140003000 20100000 32100000 00200000            ...2.... ..

FAIL: lld-link: error: /functionpadmin: invalid argument: zz

MULTI-BASE: Contents of section .text:
MULTI-BASE-NEXT:  140001000 4883ec28 b161e815 00000033 c04883c4  H..(.a.....3.H..
MULTI-BASE-NEXT:  140001010 28c3cccc cccccccc cccccccc cccccccc  (...............
MULTI-BASE-NEXT:  140001020 884c2408 0fbe4424 08c3               .L$...D$..
MULTI-BASE-NEXT: Contents of section .rdata:
MULTI-BASE-NEXT:  140002000 01040100 04420000                    .....B..
MULTI-BASE-NEXT: Contents of section .pdata:
MULTI-BASE-NEXT:  140004000 00100000 12100000 00200000           ......... ..

MULTI-BASE-PADDED: Contents of section .text:
MULTI-BASE-PADDED-NEXT:  140001000 cccccccc cccccccc cccccccc cccccccc  ................
MULTI-BASE-PADDED-NEXT:  140001010 4883ec28 b161e815 00000033 c04883c4  H..(.a.....3.H..
MULTI-BASE-PADDED-NEXT:  140001020 28c3cccc cccccccc cccccccc cccccccc  (...............
MULTI-BASE-PADDED-NEXT:  140001030 884c2408 0fbe4424 08c3               .L$...D$..
MULTI-BASE-PADDED-NEXT: Contents of section .rdata:
MULTI-BASE-PADDED-NEXT:  140002000 01040100 04420000                    .....B..
MULTI-BASE-PADDED-NEXT: Contents of section .pdata:
MULTI-BASE-PADDED-NEXT:  140004000 10100000 22100000 00200000           ....".... ..

MULTI-BASE-PADDED-MORE: Contents of section .text:
MULTI-BASE-PADDED-MORE-NEXT:  140001000 cccccccc cccccccc cccccccc cccccccc  ................
MULTI-BASE-PADDED-MORE-NEXT:  140001010 cccccccc cccccccc cccccccc cccccccc  ................
MULTI-BASE-PADDED-MORE-NEXT:  140001020 4883ec28 b161e825 00000033 c04883c4  H..(.a.%...3.H..
MULTI-BASE-PADDED-MORE-NEXT:  140001030 28c3cccc cccccccc cccccccc cccccccc  (...............
MULTI-BASE-PADDED-MORE-NEXT:  140001040 cccccccc cccccccc cccccccc cccccccc  ................
MULTI-BASE-PADDED-MORE-NEXT:  140001050 884c2408 0fbe4424 08c3               .L$...D$..
MULTI-BASE-PADDED-MORE-NEXT: Contents of section .rdata:
MULTI-BASE-PADDED-MORE-NEXT:  140002000 01040100 04420000                    .....B..
MULTI-BASE-PADDED-MORE-NEXT: Contents of section .pdata:
MULTI-BASE-PADDED-MORE-NEXT:  140004000 20100000 32100000 00200000            ...2.... ..


NO-HOTPATCH: Contents of section .text:
NO-HOTPATCH-NEXT: 401000 558becb8 2a000000 5dc3               U...*...].

HELLO: Contents of section .text:
HELLO-NEXT:  140001000 4883ec28 48c7c100 00000048 8d15f40f  H..(H......H....
HELLO-NEXT:  140001010 00004c8d 05e70f00 0041b900 000000e8  ..L......A......
HELLO-NEXT:  140001020 dcefffbf b9000000 00e8d2ef ffbfe8cd  ................
HELLO-NEXT:  140001030 efffbf                               ...
HELLO-NEXT: Contents of section .data:
HELLO-NEXT:  140002000 48656c6c 6f004865 6c6c6f20 576f726c  Hello.Hello Worl
HELLO-NEXT:  140002010 642100                               d!.

THUNKS-NO-PAD: Contents of section .text:
THUNKS-NO-PAD-NEXT:  140001000 ff253210 0000                        .%2...
THUNKS-NO-PAD-NEXT: Contents of section .rdata:
THUNKS-NO-PAD-NEXT:  140002000 28200000 00000000 00000000 56200000  ( ..........V ..
THUNKS-NO-PAD-NEXT:  140002010 38200000 00000000 00000000 00000000  8 ..............
THUNKS-NO-PAD-NEXT:  140002020 00000000 00000000 48200000 00000000  ........H ......
THUNKS-NO-PAD-NEXT:  140002030 00000000 00000000 48200000 00000000  ........H ......
THUNKS-NO-PAD-NEXT:  140002040 00000000 00000000 00004578 69745072  ..........ExitPr
THUNKS-NO-PAD-NEXT:  140002050 6f636573 73007374 6436342e 646c6c00  ocess.std64.dll.

THUNKS-NO-PAD-ENTRY-LABEL: ImageOptionalHeader {
THUNKS-NO-PAD-ENTRY:   AddressOfEntryPoint: 0x1000
THUNKS-NO-PAD-ENTRY-NEXT:   BaseOfCode: 0x1000

THUNKS-PAD: Contents of section .text:
THUNKS-PAD-NEXT:  140001000 cccccccc cccccccc cccccccc cccccccc  ................
THUNKS-PAD-NEXT:  140001010 ff252210 0000                        .%"...
THUNKS-PAD-NEXT: Contents of section .rdata:
THUNKS-PAD-NEXT:  140002000 28200000 00000000 00000000 56200000  ( ..........V ..
THUNKS-PAD-NEXT:  140002010 38200000 00000000 00000000 00000000  8 ..............
THUNKS-PAD-NEXT:  140002020 00000000 00000000 48200000 00000000  ........H ......
THUNKS-PAD-NEXT:  140002030 00000000 00000000 48200000 00000000  ........H ......
THUNKS-PAD-NEXT:  140002040 00000000 00000000 00004578 69745072  ..........ExitPr
THUNKS-PAD-NEXT:  140002050 6f636573 73007374 6436342e 646c6c00  ocess.std64.dll.

THUNKS-PAD-ENTRY-LABEL: ImageOptionalHeader {
THUNKS-PAD-ENTRY:   AddressOfEntryPoint: 0x1010
THUNKS-PAD-ENTRY-NEXT:   BaseOfCode: 0x1000