blob: 84de6ed84c9579ca53eb40189c2f8c9d5394713a [file] [edit]
# RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj
# RUN: lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub64mz %t.obj
# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=CHECK1 %s
CHECK1: Magic: MZ
CHECK1: UsedBytesInTheLastPage: 144
CHECK1: FileSizeInPages: 3
CHECK1: NumberOfRelocationItems: 0
CHECK1: HeaderSizeInParagraphs: 4
CHECK1: MinimumExtraParagraphs: 0
CHECK1: MaximumExtraParagraphs: 65535
CHECK1: InitialRelativeSS: 0
CHECK1: InitialSP: 184
CHECK1: Checksum: 0
CHECK1: InitialIP: 0
CHECK1: InitialRelativeCS: 0
CHECK1: AddressOfRelocationTable: 64
CHECK1: OverlayNumber: 0
CHECK1: OEMid: 0
CHECK1: OEMinfo: 0
CHECK1: AddressOfNewExeHeader: 64
## Invalid DOS signature (must be `MZ`)
# RUN: not lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub64zz %t.obj 2>&1 | FileCheck -check-prefix=CHECK2 %s
CHECK2: lld-link: error: /stub: invalid DOS signature: {{.*}}
## Unlike MS linker, we accept non-8byte-aligned stubs and we add paddings ourselves
# RUN: lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub68mz %t.obj
# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=CHECK3 %s
CHECK3: Magic: MZ
CHECK3: UsedBytesInTheLastPage: 144
CHECK3: FileSizeInPages: 3
CHECK3: NumberOfRelocationItems: 0
CHECK3: HeaderSizeInParagraphs: 4
CHECK3: MinimumExtraParagraphs: 0
CHECK3: MaximumExtraParagraphs: 65535
CHECK3: InitialRelativeSS: 0
CHECK3: InitialSP: 184
CHECK3: Checksum: 0
CHECK3: InitialIP: 0
CHECK3: InitialRelativeCS: 0
CHECK3: AddressOfRelocationTable: 64
CHECK3: OverlayNumber: 0
CHECK3: OEMid: 0
CHECK3: OEMinfo: 0
## 68 is unaligned and rounded up to 72 by LLD
CHECK3: AddressOfNewExeHeader: 72
## Too-small stub (must be at least 64 bytes long) && Unaligned
# RUN: not lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub63mz %t.obj 2>&1 | FileCheck -check-prefix=CHECK4 %s
CHECK4: lld-link: error: /stub: stub must be greater than or equal to 64 bytes: {{.*}}