brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · ef5a90c Raw
143 lines · plain
1// ---- /cetcompat (image is CET compatible)2RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj3RUN: lld-link /out:%t.exe /entry:main /cetcompat %t.obj4RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKCETCOMPAT %s5 6CHECKCETCOMPAT:  DebugEntry {7CHECKCETCOMPAT:    Characteristics: 0x08CHECKCETCOMPAT:    Type: ExtendedDLLCharacteristics (0x14)9CHECKCETCOMPAT:    ExtendedCharacteristics [ (0x1)10CHECKCETCOMPAT:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT (0x1)11CHECKCETCOMPAT:    ]12CHECKCETCOMPAT:    RawData (13CHECKCETCOMPAT:      0000: 01000000                             |....|14CHECKCETCOMPAT:    )15CHECKCETCOMPAT:  }16 17// ---- /cetcompat:no (image is not CET compatible)18RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj19RUN: lld-link /out:%t.exe /entry:main /cetcompat:no %t.obj20RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKNOCETCOMPAT %s21 22CHECKNOCETCOMPAT-NOT: Type: ExtendedDLLCharacteristics (0x14)23CHECKNOCETCOMPAT-NOT: IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT (0x1)24 25// ---- /cetcompatstrict (CET in strict mode)26RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj27RUN: lld-link /out:%t.exe /entry:main /cetcompatstrict %t.obj28RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKCETCOMPATSTRICT %s29 30CHECKCETCOMPATSTRICT:  DebugEntry {31CHECKCETCOMPATSTRICT:    Characteristics: 0x032CHECKCETCOMPATSTRICT:    Type: ExtendedDLLCharacteristics (0x14)33CHECKCETCOMPATSTRICT:    ExtendedCharacteristics [ (0x2)34CHECKCETCOMPATSTRICT:      IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE (0x2)35CHECKCETCOMPATSTRICT:    ]36CHECKCETCOMPATSTRICT:    RawData (37CHECKCETCOMPATSTRICT:      0000: 02000000                             |....|38CHECKCETCOMPATSTRICT:    )39CHECKCETCOMPATSTRICT:  }40 41// ---- /cetcompatstrict:no (image is not CET strict mode)42RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj43RUN: lld-link /out:%t.exe /entry:main /cetcompatstrict:no %t.obj44RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKNOCETSTRICT %s45 46CHECKNOCETSTRICT-NOT: Type: ExtendedDLLCharacteristics (0x14)47CHECKNOCETSTRICT-NOT: IMAGE_DLL_CHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE (0x2)48 49// ---- /cetdynamicapisinproc50RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj51RUN: lld-link /out:%t.exe /entry:main /cetdynamicapisinproc %t.obj52RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKCETDYNAPI %s53 54CHECKCETDYNAPI:  DebugEntry {55CHECKCETDYNAPI:    Characteristics: 0x056CHECKCETDYNAPI:    Type: ExtendedDLLCharacteristics (0x14)57CHECKCETDYNAPI:    ExtendedCharacteristics [ (0x8)58CHECKCETDYNAPI:      IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY (0x8)59CHECKCETDYNAPI:    ]60CHECKCETDYNAPI:    RawData (61CHECKCETDYNAPI:      0000: 08000000                             |....|62CHECKCETDYNAPI:    )63CHECKCETDYNAPI:  }64 65// ---- /cetdynamicapisinproc:no (image is not CET dynamic apis allowed in proc)66RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj67RUN: lld-link /out:%t.exe /entry:main /cetdynamicapisinproc:no %t.obj68RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKNOCETDYNAPI %s69 70CHECKNOCETDYNAPI-NOT: Type: ExtendedDLLCharacteristics (0x14)71CHECKNOCETDYNAPI-NOT: Type: IMAGE_DLL_CHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC_ONLY (0x8)72 73// ---- /cetipvalidationrelaxed (image is not CET in context ip validation relaxed mode)74RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj75RUN: lld-link /out:%t.exe /entry:main /cetipvalidationrelaxed %t.obj76RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKCETIPRELAXED %s77 78CHECKCETIPRELAXED:  DebugEntry {79CHECKCETIPRELAXED:    Characteristics: 0x080CHECKCETIPRELAXED:    Type: ExtendedDLLCharacteristics (0x14)81CHECKCETIPRELAXED:    ExtendedCharacteristics [ (0x4)82CHECKCETIPRELAXED:      IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x4)83CHECKCETIPRELAXED:    ]84CHECKCETIPRELAXED:    RawData (85CHECKCETIPRELAXED:      0000: 04000000                             |....|86CHECKCETIPRELAXED:    )87CHECKCETIPRELAXED:  }88 89// ---- /cetipvalidationrelaxed:no (image is not CET in IP validation relaxed mode)90RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj91RUN: lld-link /out:%t.exe /entry:main /cetipvalidationrelaxed:no %t.obj92RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKNOCETIPRELAXED %s93 94CHECKNOCETIPRELAXED-NOT: Type: ExtendedDLLCharacteristics (0x14)95CHECKNOCETIPRELAXED-NOT: Type: IMAGE_DLL_CHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x4)96 97// ---- /hotpatchcompatible requires /functionpadmin:698RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj99RUN: lld-link /out:%t.exe /entry:main /hotpatchcompatible /functionpadmin:6 %t.obj100RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKHOTPATCHABLE %s101 102CHECKHOTPATCHABLE:  DebugEntry {103CHECKHOTPATCHABLE:    Characteristics: 0x0104CHECKHOTPATCHABLE:    Type: ExtendedDLLCharacteristics (0x14)105CHECKHOTPATCHABLE:    ExtendedCharacteristics [ (0x80)106CHECKHOTPATCHABLE:      IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)107CHECKHOTPATCHABLE:    ]108CHECKHOTPATCHABLE:    RawData (109CHECKHOTPATCHABLE:      0000: 80000000                             |....|110CHECKHOTPATCHABLE:    )111CHECKHOTPATCHABLE:  }112 113// ---- /hotpatchcompatible:no (image is not hotpatch compatible)114RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj115RUN: lld-link /out:%t.exe /entry:main /hotpatchcompatible:no %t.obj116RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKNOHOTPATCHABLE %s117 118CHECKNOHOTPATCHABLE-NOT: Type: ExtendedDLLCharacteristics (0x14)119CHECKNOHOTPATCHABLE-NOT: Type: IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)120 121// ---- /hotpatchcompatible more than 6 bytes is accepted122RUN: lld-link /out:%t.exe /entry:main /hotpatchcompatible /functionpadmin:10 %t.obj123RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck -check-prefix=CHECKHOTPATCHABLE2 %s124 125CHECKHOTPATCHABLE2:  DebugEntry {126CHECKHOTPATCHABLE2:    Characteristics: 0x0127CHECKHOTPATCHABLE2:    Type: ExtendedDLLCharacteristics (0x14)128CHECKHOTPATCHABLE2:    ExtendedCharacteristics [ (0x80)129CHECKHOTPATCHABLE2:      IMAGE_DLL_CHARACTERISTICS_EX_HOTPATCH_COMPATIBLE (0x80)130CHECKHOTPATCHABLE2:    ]131CHECKHOTPATCHABLE2:    RawData (132CHECKHOTPATCHABLE2:      0000: 80000000                             |....|133CHECKHOTPATCHABLE2:    )134CHECKHOTPATCHABLE2:  }135 136// ---- /hotpatchcompatible requires at least 6 bytes function padding137RUN: env LLD_IN_TEST=1 not lld-link /out:%t.exe /entry:main /hotpatchcompatible /functionpadmin:5 %t.obj 2>&1 | FileCheck -check-prefix=CHECKHOTPATCHNOT %s138CHECKHOTPATCHNOT: lld-link: error: /hotpatchcompatible: requires at least 6 bytes of /functionpadmin139 140// ---- /hotpatchcompatible requires at least 6 bytes function padding -- without /functionpadmin should raise an error141RUN: env LLD_IN_TEST=1 not lld-link /out:%t.exe /entry:main /hotpatchcompatible %t.obj 2>&1 | FileCheck -check-prefix=CHECKHOTPATCHNOT2 %s142CHECKHOTPATCHNOT2: lld-link: error: /hotpatchcompatible: requires at least 6 bytes of /functionpadmin143