On Mon, Dec 26, 2016 at 6:22 PM, Vitaly Buka <vitalyb...@google.com> wrote:
> This fails here http://lab.llvm.org:8011/builders/sanitizer-windows/ > builds/3537/steps/run%20tests/logs/stdio > Thanks for letting me know. Should be addressed in SVN r290571. > > On Sun, Dec 25, 2016 at 7:45 PM Saleem Abdulrasool via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: compnerd >> Date: Sun Dec 25 21:35:24 2016 >> New Revision: 290533 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=290533&view=rev >> Log: >> Driver: warn on -fPIC/-fpic/-fPIE/-fpie on Windows >> >> Use of these flags would result in the use of ELF-style PIE/PIC code >> which is incorrect on Windows. Windows is inherently PIC by means of >> the DLL slide that occurs at load. This also mirrors the behaviour on >> GCC for MinGW. Currently, the Windows x86_64 forces the relocation >> model to PIC (Level 2). This is unchanged for now, though we should >> remove any assumptions on that and change it to a static relocation >> model. >> >> Added: >> cfe/trunk/test/Driver/windows-pic.cpp >> Modified: >> cfe/trunk/lib/Driver/Tools.cpp >> >> Modified: cfe/trunk/lib/Driver/Tools.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ >> Tools.cpp?rev=290533&r1=290532&r2=290533&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/lib/Driver/Tools.cpp (original) >> +++ cfe/trunk/lib/Driver/Tools.cpp Sun Dec 25 21:35:24 2016 >> @@ -3859,6 +3859,17 @@ ParsePICArgs(const ToolChain &ToolChain, >> options::OPT_fpic, >> options::OPT_fno_pic, >> options::OPT_fPIE, >> options::OPT_fno_PIE, >> options::OPT_fpie, >> options::OPT_fno_pie); >> + if (Triple.isOSWindows() && LastPICArg && >> + LastPICArg == >> + Args.getLastArg(options::OPT_fPIC, options::OPT_fpic, >> + options::OPT_fPIE, options::OPT_fpie)) { >> + ToolChain.getDriver().Diag(diag::err_drv_unsupported_opt_for_target) >> + << LastPICArg->getSpelling() << Triple.str(); >> + if (Triple.getArch() == llvm::Triple::x86_64) >> + return std::make_tuple(llvm::Reloc::PIC_, 2U, false); >> + return std::make_tuple(llvm::Reloc::Static, 0U, false); >> + } >> + >> // Check whether the tool chain trumps the PIC-ness decision. If the >> PIC-ness >> // is forced, then neither PIC nor PIE flags will have no effect. >> if (!ToolChain.isPICDefaultForced()) { >> >> Added: cfe/trunk/test/Driver/windows-pic.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/ >> windows-pic.cpp?rev=290533&view=auto >> ============================================================ >> ================== >> --- cfe/trunk/test/Driver/windows-pic.cpp (added) >> +++ cfe/trunk/test/Driver/windows-pic.cpp Sun Dec 25 21:35:24 2016 >> @@ -0,0 +1,59 @@ >> +// RUN: %clang -### -target i686-windows -fPIC %s 2>&1 | FileCheck >> -check-prefix CHECK-PIC-ERROR %s >> +// RUN: %clang -### -target i686-windows -fpic %s 2>&1 | FileCheck >> -check-prefix CHECK-pic-ERROR %s >> +// RUN: %clang -### -target i686-windows -fPIE %s 2>&1 | FileCheck >> -check-prefix CHECK-PIE-ERROR %s >> +// RUN: %clang -### -target i686-windows -fpie %s 2>&1 | FileCheck >> -check-prefix CHECK-pie-ERROR %s >> +// RUN: %clang -### -target i686-windows -fPIC -fno-pic %s >> +// RUN: %clang -### -target i686-windows -Fpic -fno-pic %s >> +// RUN: %clang -### -target i686-windows -fPIE -fno-pie %s >> +// RUN: %clang -### -target i686-windows -fpie -fno-pie %s >> + >> +// RUN: %clang -### -target i686-windows-itanium -fPIC %s 2>&1 | >> FileCheck -check-prefix CHECK-PIC-ERROR %s >> +// RUN: %clang -### -target i686-windows-itanium -fpic %s 2>&1 | >> FileCheck -check-prefix CHECK-pic-ERROR %s >> +// RUN: %clang -### -target i686-windows-itanium -fPIE %s 2>&1 | >> FileCheck -check-prefix CHECK-PIE-ERROR %s >> +// RUN: %clang -### -target i686-windows-itanium -fpie %s 2>&1 | >> FileCheck -check-prefix CHECK-pie-ERROR %s >> +// RUN: %clang -### -target i686-windows-itanium -fPIC -fno-pic %s >> +// RUN: %clang -### -target i686-windows-itanium -Fpic -fno-pic %s >> +// RUN: %clang -### -target i686-windows-itanium -fPIE -fno-pie %s >> +// RUN: %clang -### -target i686-windows-itanium -fpie -fno-pie %s >> + >> +// RUN: %clang -### -target i686-windows-gnu -fPIC %s 2>&1 | FileCheck >> -check-prefix CHECK-PIC-ERROR %s >> +// RUN: %clang -### -target i686-windows-gnu -fpic %s 2>&1 | FileCheck >> -check-prefix CHECK-pic-ERROR %s >> +// RUN: %clang -### -target i686-windows-gnu -fPIE %s 2>&1 | FileCheck >> -check-prefix CHECK-PIE-ERROR %s >> +// RUN: %clang -### -target i686-windows-gnu -fpie %s 2>&1 | FileCheck >> -check-prefix CHECK-pie-ERROR %s >> +// RUN: %clang -### -target i686-windows-gnu -fPIC -fno-pic %s >> +// RUN: %clang -### -target i686-windows-gnu -Fpic -fno-pic %s >> +// RUN: %clang -### -target i686-windows-gnu -fPIE -fno-pie %s >> +// RUN: %clang -### -target i686-windows-gnu -fpie -fno-pie %s >> + >> +// RUN: %clang -### -target x86_64-windows -fPIC %s 2>&1 | FileCheck >> -check-prefix CHECK-PIC-ERROR %s >> +// RUN: %clang -### -target x86_64-windows -fpic %s 2>&1 | FileCheck >> -check-prefix CHECK-pic-ERROR %s >> +// RUN: %clang -### -target x86_64-windows -fPIE %s 2>&1 | FileCheck >> -check-prefix CHECK-PIE-ERROR %s >> +// RUN: %clang -### -target x86_64-windows -fpie %s 2>&1 | FileCheck >> -check-prefix CHECK-pie-ERROR %s >> +// RUN: %clang -### -target x86_64-windows -fPIC -fno-pic %s >> +// RUN: %clang -### -target x86_64-windows -Fpic -fno-pic %s >> +// RUN: %clang -### -target x86_64-windows -fPIE -fno-pie %s >> +// RUN: %clang -### -target x86_64-windows -fpie -fno-pie %s >> + >> +// RUN: %clang -### -target x86_64-windows-itanium -fPIC %s 2>&1 | >> FileCheck -check-prefix CHECK-PIC-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-itanium -fpic %s 2>&1 | >> FileCheck -check-prefix CHECK-pic-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-itanium -fPIE %s 2>&1 | >> FileCheck -check-prefix CHECK-PIE-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-itanium -fpie %s 2>&1 | >> FileCheck -check-prefix CHECK-pie-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-itanium -fPIC -fno-pic %s >> +// RUN: %clang -### -target x86_64-windows-itanium -Fpic -fno-pic %s >> +// RUN: %clang -### -target x86_64-windows-itanium -fPIE -fno-pie %s >> +// RUN: %clang -### -target x86_64-windows-itanium -fpie -fno-pie %s >> + >> +// RUN: %clang -### -target x86_64-windows-gnu -fPIC %s 2>&1 | FileCheck >> -check-prefix CHECK-PIC-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-gnu -fpic %s 2>&1 | FileCheck >> -check-prefix CHECK-pic-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-gnu -fPIE %s 2>&1 | FileCheck >> -check-prefix CHECK-PIE-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-gnu -fpie %s 2>&1 | FileCheck >> -check-prefix CHECK-pie-ERROR %s >> +// RUN: %clang -### -target x86_64-windows-gnu -fPIC -fno-pic %s >> +// RUN: %clang -### -target x86_64-windows-gnu -Fpic -fno-pic %s >> +// RUN: %clang -### -target x86_64-windows-gnu -fPIE -fno-pie %s >> +// RUN: %clang -### -target x86_64-windows-gnu -fpie -fno-pie %s >> + >> +// CHECK-PIC-ERROR: unsupported option '-fPIC' for target '{{.*}} >> +// CHECK-pic-ERROR: unsupported option '-fpic' for target '{{.*}} >> +// CHECK-PIE-ERROR: unsupported option '-fPIE' for target '{{.*}} >> +// CHECK-pie-ERROR: unsupported option '-fpie' for target '{{.*}} >> + >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > -- Saleem Abdulrasool compnerd (at) compnerd (dot) org
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits