56 lines · plain
1# RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj2 3# RUN: lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub64mz %t.obj4# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=CHECK1 %s5 6CHECK1: Magic: MZ7CHECK1: UsedBytesInTheLastPage: 1448CHECK1: FileSizeInPages: 39CHECK1: NumberOfRelocationItems: 010CHECK1: HeaderSizeInParagraphs: 411CHECK1: MinimumExtraParagraphs: 012CHECK1: MaximumExtraParagraphs: 6553513CHECK1: InitialRelativeSS: 014CHECK1: InitialSP: 18415CHECK1: Checksum: 016CHECK1: InitialIP: 017CHECK1: InitialRelativeCS: 018CHECK1: AddressOfRelocationTable: 6419CHECK1: OverlayNumber: 020CHECK1: OEMid: 021CHECK1: OEMinfo: 022CHECK1: AddressOfNewExeHeader: 6423 24## Invalid DOS signature (must be `MZ`)25# RUN: not lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub64zz %t.obj 2>&1 | FileCheck -check-prefix=CHECK2 %s26 27CHECK2: lld-link: error: /stub: invalid DOS signature: {{.*}}28 29## Unlike MS linker, we accept non-8byte-aligned stubs and we add paddings ourselves30# RUN: lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub68mz %t.obj31# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=CHECK3 %s32 33CHECK3: Magic: MZ34CHECK3: UsedBytesInTheLastPage: 14435CHECK3: FileSizeInPages: 336CHECK3: NumberOfRelocationItems: 037CHECK3: HeaderSizeInParagraphs: 438CHECK3: MinimumExtraParagraphs: 039CHECK3: MaximumExtraParagraphs: 6553540CHECK3: InitialRelativeSS: 041CHECK3: InitialSP: 18442CHECK3: Checksum: 043CHECK3: InitialIP: 044CHECK3: InitialRelativeCS: 045CHECK3: AddressOfRelocationTable: 6446CHECK3: OverlayNumber: 047CHECK3: OEMid: 048CHECK3: OEMinfo: 049## 68 is unaligned and rounded up to 72 by LLD50CHECK3: AddressOfNewExeHeader: 7251 52## Too-small stub (must be at least 64 bytes long) && Unaligned53# RUN: not lld-link /out:%t.exe /entry:main /stub:%p/Inputs/stub63mz %t.obj 2>&1 | FileCheck -check-prefix=CHECK4 %s54 55CHECK4: lld-link: error: /stub: stub must be greater than or equal to 64 bytes: {{.*}}56