forked from OSchip/llvm-project
[LLD] Imply "longjmp" in `/guard:cf`
This is MSVC's behaviour. LLD was matching it before D99078. Let's go back this way. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D132901
This commit is contained in:
parent
e261b03396
commit
64fb629a06
|
@ -104,9 +104,7 @@ void parseGuard(StringRef fullArg) {
|
|||
config->guardCF &= ~GuardCFLevel::LongJmp;
|
||||
else if (arg.equals_insensitive("noehcont"))
|
||||
config->guardCF &= ~GuardCFLevel::EHCont;
|
||||
else if (arg.equals_insensitive("cf"))
|
||||
config->guardCF = GuardCFLevel::CF;
|
||||
else if (arg.equals_insensitive("longjmp"))
|
||||
else if (arg.equals_insensitive("cf") || arg.equals_insensitive("longjmp"))
|
||||
config->guardCF |= GuardCFLevel::CF | GuardCFLevel::LongJmp;
|
||||
else if (arg.equals_insensitive("ehcont"))
|
||||
config->guardCF |= GuardCFLevel::CF | GuardCFLevel::EHCont;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
|
||||
# RUN: lld-link %t.obj -opt:noref -guard:cf -out:%t.exe -entry:main 2>&1 | FileCheck %s --check-prefix=ERRS
|
||||
# RUN: lld-link %t.obj -opt:noref -guard:cf,nolongjmp -out:%t.exe -entry:main 2>&1 | FileCheck %s --check-prefix=ERRS
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s
|
||||
|
||||
# ERRS: warning: ignoring .gfids$y symbol table index section in object {{.*}}gfids-corrupt{{.*}}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: grep -B99999 [S]PLITMARKER %s | llvm-mc -triple x86_64-windows-msvc -filetype=obj -o %t1.obj
|
||||
# RUN: grep -A99999 [S]PLITMARKER %s | llvm-mc -triple x86_64-windows-msvc -filetype=obj -o %t2.obj
|
||||
# RUN: lld-link %t1.obj %t2.obj -guard:cf -out:%t.exe -entry:main -opt:noref
|
||||
# RUN: lld-link %t1.obj %t2.obj -guard:cf,nolongjmp -out:%t.exe -entry:main -opt:noref
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s
|
||||
|
||||
# CHECK: ImageBase: 0x140000000
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
|
||||
# RUN: lld-link %t.obj -guard:cf -out:%t.exe -opt:noref -entry:main
|
||||
# RUN: lld-link %t.obj -guard:cf,nolongjmp -out:%t.exe -opt:noref -entry:main
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s --check-prefix=CHECK-NOGC
|
||||
# RUN: lld-link %t.obj -guard:cf -out:%t.exe -opt:noref -entry:main -debug:dwarf
|
||||
# RUN: lld-link %t.obj -guard:cf,nolongjmp -out:%t.exe -opt:noref -entry:main -debug:dwarf
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s --check-prefix=CHECK-NOGC
|
||||
# RUN: lld-link %t.obj -guard:cf -out:%t.exe -opt:ref -entry:main
|
||||
# RUN: lld-link %t.obj -guard:cf,nolongjmp -out:%t.exe -opt:ref -entry:main
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s --check-prefix=CHECK-GC
|
||||
|
||||
# This assembly is meant to mimic what CL emits for this kind of C code when
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
|
||||
# RUN: lld-link %t.obj -guard:cf -out:%t.exe -opt:icf -entry:main
|
||||
# RUN: lld-link %t.obj -guard:cf,nolongjmp -out:%t.exe -opt:icf -entry:main
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s --check-prefix=CHECK
|
||||
|
||||
# This assembly is meant to mimic what CL emits for this kind of C code:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
|
||||
# RUN: lld-link %t.obj -guard:cf -guard:longjmp -out:%t.exe -entry:main
|
||||
# RUN: lld-link %t.obj -guard:cf -out:%t.exe -entry:main
|
||||
# RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s
|
||||
|
||||
# CHECK: ImageBase: 0x140000000
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
; RUN: llvm-mc -triple x86_64-windows-msvc -filetype=obj %S/Inputs/loadconfig-cfg-x64.s -o %t.ldcfg.obj
|
||||
|
||||
; RUN: llvm-as %s -o %t.bc
|
||||
; RUN: lld-link -entry:main -guard:cf -guard:longjmp -dll %t.bc %t.lib %t.ldcfg.obj -out:%t2.dll
|
||||
; RUN: lld-link -entry:main -guard:cf -dll %t.bc %t.lib %t.ldcfg.obj -out:%t2.dll
|
||||
; RUN: llvm-readobj --coff-load-config %t2.dll | FileCheck %s
|
||||
|
||||
; There must be *two* entries in the table: DLL entry point, and my_handler.
|
||||
|
|
Loading…
Reference in New Issue