diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -445,6 +445,8 @@ case OPT_editandcontinue: case OPT_guardsym: case OPT_throwingnew: + case OPT_inferasanlibs: + case OPT_inferasanlibs_no: break; default: error(arg->getSpelling() + " is not allowed in .drectve (" + @@ -1933,6 +1935,9 @@ args.hasFlag(OPT_stdcall_fixup, OPT_stdcall_fixup_no, config->mingw); config->warnStdcallFixup = !args.hasArg(OPT_stdcall_fixup); + if (args.hasFlag(OPT_inferasanlibs, OPT_inferasanlibs_no, false)) + warn("ignoring '/inferasanlibs', this flag is not supported"); + // Don't warn about long section names, such as .debug_info, for mingw or // when -debug:dwarf is requested. if (config->mingw || config->debugDwarf) diff --git a/lld/COFF/Options.td b/lld/COFF/Options.td --- a/lld/COFF/Options.td +++ b/lld/COFF/Options.td @@ -194,6 +194,9 @@ defm incremental : B<"incremental", "Keep original import library if contents are unchanged", "Overwrite import library even if contents are unchanged">; +defm inferasanlibs : B<"inferasanlibs", + "Unused, generates a warning", + "No effect (default)">; defm integritycheck : B<"integritycheck", "Set FORCE_INTEGRITY bit in PE header", "No effect (default)">; diff --git a/lld/test/COFF/inferasanlibs-drectve.s b/lld/test/COFF/inferasanlibs-drectve.s new file mode 100644 --- /dev/null +++ b/lld/test/COFF/inferasanlibs-drectve.s @@ -0,0 +1,16 @@ +# REQUIRES: x86 + +# RUN: llvm-mc -triple=x86_64-windows %s -filetype=obj -o %t.obj + +# RUN: lld-link -dll -out:%t.dll -entry:entry %t.obj -subsystem:console 2>&1 | FileCheck --allow-empty --ignore-case %s + +# CHECK-NOT: ignoring unknown argument +# CHECK-NOT: inferasanlibs +# CHECK-NOT: is not allowed in .drectve + + .global entry + .text +entry: + ret + .section .drectve + .ascii " /INFERASANLIBS " diff --git a/lld/test/COFF/inferasanlibs.test b/lld/test/COFF/inferasanlibs.test new file mode 100644 --- /dev/null +++ b/lld/test/COFF/inferasanlibs.test @@ -0,0 +1,8 @@ +# RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj + +# RUN: lld-link /out:%t.exe /entry:main %t.obj /inferasanlibs 2>&1 | FileCheck --check-prefix=POS %s +# RUN: lld-link /out:%t.exe /entry:main %t.obj /inferasanlibs:no 2>&1 | FileCheck --allow-empty --check-prefix=NEG %s + +POS: ignoring '/inferasanlibs', this flag is not supported + +NEG-NOT: ignoring '/inferasanlibs', this flag is not supported