From: jsg Date: Tue, 6 Jun 2017 09:40:24 +0000 (+0000) Subject: Enable -fwrapv by default with clang to treat signed integer overflows X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=7b4a6572144bf7b3a2d98f06f0d85f1eb74d6bc8;p=openbsd Enable -fwrapv by default with clang to treat signed integer overflows as defined. This is done to prevent dangerous optimisations which could remove security critical overflow checks. Base gcc has -fno-strict-overflow by default, with clang this is identical to -fwrapv. Prompted by naddy@ discovering a hang with a clang compiled i386 kernel that was resolved with -fwrapv. ok kettenis@ pascal@ --- diff --git a/gnu/llvm/tools/clang/lib/Driver/Tools.cpp b/gnu/llvm/tools/clang/lib/Driver/Tools.cpp index bd736c822c9..5eeb81f3039 100644 --- a/gnu/llvm/tools/clang/lib/Driver/Tools.cpp +++ b/gnu/llvm/tools/clang/lib/Driver/Tools.cpp @@ -5466,7 +5466,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_fno_strict_overflow)) { if (A->getOption().matches(options::OPT_fno_strict_overflow)) CmdArgs.push_back("-fwrapv"); - } + } else if (getToolChain().getTriple().isOSOpenBSD()) + CmdArgs.push_back("-fwrapv"); if (Arg *A = Args.getLastArg(options::OPT_freroll_loops, options::OPT_fno_reroll_loops))