[LLVMdev] (no subject) (original) (raw)
John Criswell jtcriswel at gmail.com
Wed Jul 22 09:17:15 PDT 2015
- Previous message: [LLVMdev] (no subject)
- Next message: [LLVMdev] LLVM IR on different platforms
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 7/22/15 10:33 AM, Kenneth Adam Miller wrote:
I'm pretty sure that the output tells you that there's no makefile to execute such commands. If you didn't know it, LLVM makes use of cmake, so you make have to generate your makefile with "cmake ." (or at least that's the way I remembered it). Then type make.
That's probably not the problem. SAFECode does not use cmake at present.
First, Nikhail, were you able to compile the other components of SAFECode on Windows (namely, safecode/lib and safecode/runtime)? Also, were you able to compile unmodified clang and use it on Windows? You need to verify that these things work. If regular Clang doesn't work on Windows, SAFECode Clang won't work, either.
Second, to answer your specific question, you are probably seeing this problem because SAFECode needs to be reintegrated into Clang. The way we do that is to:
- Remove the old safecode/tools/clang directory.
- Use svn copy to copy clang into safecode/tools/clang
- Modify the Makefiles in safecode/tools/clang so that clang can compile from within the SAFECode source tree.
- Modify safecode/tools/clang so that it runs the SAFECode passes when the -fmemsafety option is used.
I have done steps 1 and 2. Peter is currently working on step 3. I recommend you help him on Step 3. Step 3 requires understanding LLVM Makefiles (http://llvm.org/docs/MakefileGuide.html). I sent a patch to you and Peter showing how I integrated SAFECode into Clang for LLVM 3.2. You can use that as a guide to integrating SAFECode into LLVM 3.7. I have attached it here for reference.
So, to recap:
Let me know if regular Clang works on Windows.
If regular Clang works, try to help Peter with Step 3.
Regards,
John Criswell
On Wed, Jul 22, 2015 at 7:10 AM, Nikhil Reddy Kothapally <nikhilreddykotha at gmail.com <mailto:nikhilreddykotha at gmail.com>> wrote: Hello, I have tried a lot fix this error but am not able to can you please find me a solution am trying to compile the SAFECode in Cygwin Environment to work for windows. used make -j4 command to make the files in cygwin i have got this error
make[5]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode/tools/clang/include' /usr/bin/cp: cannot stat '/home/uidr7475/Work/LLVMSRC/projects/safecode/tools/clang/lib/Makefile': No such file or directory make[5]: Entering directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode/tools/clang/lib' make[5]: *** No rule to make target 'all'. Stop. make[5]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode/tools/clang/lib' /home/uidr7475/Work/LLVMSRC/Makefile.rules:862: recipe for target 'all' failed make[4]: *** [all] Error 1 make[4]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode/tools/clang' /home/uidr7475/Work/LLVMSRC/Makefile.rules:921: recipe for target 'clang/.makeall' failed make[3]: *** [clang/.makeall] Error 2 make[3]: *** Waiting for unfinished jobs.... llvm[4]: Linking Release+Asserts Shared Library cygLTO.dll llvm[4]: Building Release+Asserts Archive Library libLTO.a make[4]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode/tools/LTO' make[3]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode/tools' /home/uidr7475/Work/LLVMSRC/Makefile.rules:862: recipe for target 'all' failed make[2]: *** [all] Error 1 make[2]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects/safecode' /home/uidr7475/Work/LLVMSRC/Makefile.rules:862: recipe for target 'all' failed make[1]: *** [all] Error 1 make[1]: Leaving directory '/home/uidr7475/Work/LLVMOBJ/projects' /home/uidr7475/Work/LLVMSRC/Makefile.rules:947: recipe for target 'all' failed make: *** [all] Error 1 Thank You, Kind Regards, Nikhil Reddy Kothapally Master Student Technische Universität Chemnitz,(Germany) Automotive Software Engineering.
LLVM Developers mailing list LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
LLVM Developers mailing list LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-- John Criswell Assistant Professor Department of Computer Science, University of Rochester http://www.cs.rochester.edu/u/criswell
-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150722/8c8c6e03/attachment.html> -------------- next part -------------- Index: lib/CodeGen/BackendUtil.cpp
--- lib/CodeGen/BackendUtil.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/CodeGen/BackendUtil.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -35,6 +35,31 @@ #include "llvm/Transforms/IPO.h" #include "llvm/Transforms/IPO/PassManagerBuilder.h" #include "llvm/Transforms/Scalar.h" + +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" + +#include "CommonMemorySafetyPasses.h" +#include "safecode/ArrayBoundsCheck.h" +#include "safecode/BaggyBoundsChecks.h" +#include "safecode/CFIChecks.h" +#include "safecode/CStdLib.h" +#include "safecode/DebugInstrumentation.h" +#include "safecode/FormatStrings.h" +#include "safecode/InitAllocas.h" +#include "safecode/InvalidFreeChecks.h" +#include "safecode/GEPChecks.h" +#include "safecode/LoggingFunctions.h" +#include "safecode/OptimizeChecks.h" +#include "safecode/RegisterBounds.h" +#include "safecode/RegisterRuntimeInitializer.h" +#include "safecode/RewriteOOB.h" +#include "safecode/SAFECodeMSCInfo.h" +#include "safecode/SAFECodePasses.h" +#include "safecode/SpecializeCMSCalls.h" +#include "SoftBound/InitializeSoftBound.h" +#include "SoftBound/SoftBoundCETSPass.h" + + using namespace clang; using namespace llvm; @@ -267,7 +292,85 @@ MPM->add(createStripSymbolsPass(true)); } + // Add the memory safety passes for control-flow integrity + if (CodeGenOpts.MemSafety) { + // Make sure everything that can be in an LLVM register is. + MPM->add (createPromoteMemoryToRegisterPass()); + MPM->add (createUnifyFunctionExitNodesPass()); + MPM->add (new CFIChecks()); + } + PMBuilder.populateModulePassManager(*MPM); + + if (CodeGenOpts.SoftBound) { + // Make sure SoftBound+CETS is run after optimization with atleast mem2reg run + MPM->add(new DominatorTree()); + MPM->add(new DominanceFrontier()); + MPM->add(new LoopInfo()); + MPM->add(new InitializeSoftBound()); + MPM->add(new SoftBoundCETSPass()); + } + + // Add the memory safety passes + if (CodeGenOpts.MemSafety) { + // + // Add passes that record information about run-time checks. + // + MPM->add (createCommonMSCInfoPass()); + MPM->add (createSAFECodeMSCInfoPass()); + + // C standard library / format string function transforms + MPM->add (new StringTransform()); + if (!CodeGenOpts.BaggyBounds) { + MPM->add (new FormatStringTransform()); + MPM->add (new RegisterVarargCallSites()); + MPM->add (new LoggingFunctions()); + } + + MPM->add (new InitAllocas()); + MPM->add (new RegisterGlobalVariables()); + MPM->add (new RegisterMainArgs()); + MPM->add (new InsertFreeChecks()); + MPM->add (new RegisterCustomizedAllocation()); + MPM->add (new RegisterFunctionByvalArguments ()); + MPM->add (new LoopInfo ()); + MPM->add (new DominatorTree ()); + MPM->add (new DominanceFrontier ()); + MPM->add (new RegisterStackObjPass ()); + MPM->add (new RegisterRuntimeInitializer(CodeGenOpts.MemSafetyLogFile.c_str())); + MPM->add (new DebugInstrument()); + MPM->add (createInstrumentMemoryAccessesPass()); + MPM->add (new ScalarEvolution()); + MPM->add (new ArrayBoundsCheckLocal()); + MPM->add (new InsertGEPChecks()); + MPM->add (createSpecializeCMSCallsPass()); + MPM->add (createExactCheckOptPass()); + + MPM->add (new DominatorTree()); + MPM->add (new ScalarEvolution()); + MPM->add (createOptimizeImpliedFastLSChecksPass()); + + MPM->add (new OptimizeChecks()); + if (CodeGenOpts.MemSafeTerminate) { + MPM->add (llvm::createSCTerminatePass ()); + } + } + + if (CodeGenOpts.BaggyBounds) { + MPM->add (new InsertBaggyBoundsChecks()); + } + + // + // Rerun the LLVM optimizations again. + // + PMBuilder.populateModulePassManager(*MPM); + + // For SAFECode, do the debug instrumentation and OOB rewriting after + // all optimization is done. + if (CodeGenOpts.MemSafety) { + MPM->add (new DebugInstrument()); + MPM->add (new RewriteOOB()); + } } TargetMachine *EmitAssemblyHelper::CreateTargetMachine(bool MustCreateTM) { Index: lib/Parse/ParseStmt.cpp
--- lib/Parse/ParseStmt.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Parse/ParseStmt.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -2197,7 +2197,7 @@ // The name in a catch exception-declaration is local to the handler and // shall not be redeclared in the outermost block of the handler. ParseScope CatchScope(this, Scope::DeclScope | Scope::ControlScope | - (FnCatch ? Scope::FnCatchScope : Scope::CatchScope)); + (FnCatch ? Scope::FnCatchScope : 0)); // exception-declaration is equivalent to '...' or a parameter-declaration // without default arguments. Index: lib/Parse/ParseDeclCXX.cpp
--- lib/Parse/ParseDeclCXX.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Parse/ParseDeclCXX.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -706,7 +706,8 @@ if (SkipUntil(tok::r_paren, /StopAtSemi=/true, /DontConsume=/true)) { EndLoc = ConsumeParen(); } else { - if (PP.isBacktrackEnabled() && Tok.is(tok::semi)) { + assert(Tok.is(tok::semi)); + if (PP.isBacktrackEnabled()) { // Backtrack to get the location of the last token before the semi. PP.RevertCachedTokens(2); ConsumeToken(); // the semi. Index: lib/Frontend/InitHeaderSearch.cpp
--- lib/Frontend/InitHeaderSearch.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Frontend/InitHeaderSearch.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -26,6 +26,17 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/Path.h" +// Include llvm/Config/config.h here as it contains the #defines +// normally set in clang/Config/config.h. While we have modified +// the SAFECode configure script to configure clang/Config/config.h, +// the current configure code does not insert any definitions into +// clang/Config/config.h. While we could modify the SAFECode +// configure script further to handle this, there seems to be no +// point as long as we can piggy back on llvm/Config/config.h +// +// JRM -- 8/26/12 +// +#include "llvm/Config/config.h" #include "clang/Config/config.h" // C_INCLUDE_DIRS using namespace clang; Index: lib/Frontend/CompilerInvocation.cpp
--- lib/Frontend/CompilerInvocation.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Frontend/CompilerInvocation.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -384,6 +384,15 @@ Args.hasArg(OPT_cl_unsafe_math_optimizations) || Args.hasArg(OPT_cl_fast_relaxed_math); Opts.UnwindTables = Args.hasArg(OPT_munwind_tables); + Opts.MemSafety = Args.hasArg(OPT_memsafety); + Opts.BaggyBounds = Args.hasArg(OPT_bbc); + Opts.SoftBound = Args.hasArg(OPT_softbound); + Opts.MemSafeTerminate = Args.hasArg(OPT_terminate); + if (Arg *A = Args.getLastArg(OPT_msLogFile)) { + Opts.MemSafetyLogFile = A->getValue(); + } else { + Opts.MemSafetyLogFile = ""; + } Opts.RelocationModel = Args.getLastArgValue(OPT_mrelocation_model, "pic"); Opts.TrapFuncName = Args.getLastArgValue(OPT_ftrap_function_EQ); Opts.BoundsChecking = Args.getLastArgIntValue(OPT_fbounds_checking_EQ, 0, Index: lib/Sema/IdentifierResolver.cpp
--- lib/Sema/IdentifierResolver.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Sema/IdentifierResolver.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -135,13 +135,16 @@ // of the controlled statement. // assert(S->getParent() && "No TUScope?"); + if (S->getFlags() & Scope::FnTryScope) + return S->getParent()->isDeclScope(D); if (S->getParent()->getFlags() & Scope::ControlScope) { - S = S->getParent(); - if (S->isDeclScope(D)) - return true; + if (S->getParent()->getFlags() & Scope::FnCatchScope) { + S = S->getParent(); + if (S->isDeclScope(D)) + return true; + } + return S->getParent()->isDeclScope(D); } - if (S->getFlags() & Scope::FnTryCatchScope) - return S->getParent()->isDeclScope(D); } return false; } Index: lib/Lex/Makefile
--- lib/Lex/Makefile (.../cfe/branches/release_32) (revision 242032) +++ lib/Lex/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -12,7 +12,8 @@ ##===----------------------------------------------------------------------===## CLANG_LEVEL := ../.. -include $(CLANG_LEVEL)/../../Makefile.config +LEVEL := $(CLANG_LEVEL)/../.. +include $(CLANG_LEVEL)/../../Makefile.common LIBRARYNAME := clangLex Index: lib/Driver/Driver.cpp
--- lib/Driver/Driver.cpp (.../cfe/branches/release_32) (revision 242032)
+++ lib/Driver/Driver.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -38,6 +38,17 @@
#include
+// Include llvm/Config/config.h here as it contains the #defines
+// normally set in clang/Config/config.h. While we have modified
+// the SAFECode configure script to configure clang/Config/config.h,
+// the current configure code does not insert any definitions into
+// clang/Config/config.h. While we could modify the SAFECode
+// configure script further to handle this, there seems to be no
+// point as long as we can piggy back on llvm/Config/config.h
+//
+// JRM -- 8/26/12
+//
+#include "llvm/Config/config.h"
#include "clang/Config/config.h"
using namespace clang::driver;
Index: lib/Driver/Tools.cpp
--- lib/Driver/Tools.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Driver/Tools.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -2523,6 +2523,30 @@ CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel))); }
- // Handle the memory safety options
- if (Args.getLastArg(options::OPT_softbound)){
- CmdArgs.push_back("-fsoftbound");
- }
- if (Args.getLastArg(options::OPT_memsafety)) {
- CmdArgs.push_back("-fmemsafety");
- }
- if (Args.getLastArg(options::OPT_bbc)) {
- CmdArgs.push_back("-bbc");
- }
- if (Args.getLastArg(options::OPT_terminate)) {
- CmdArgs.push_back("-fmemsafety-terminate");
- }
- if (Arg *MemSafetyLogOpt = Args.getLastArg(options::OPT_msLogFile)) {
- CmdArgs.push_back("-fmemsafety-logfile");
- CmdArgs.push_back(MemSafetyLogOpt->getValue());
- }
- // --param ssp-buffer-size= for (arg_iterator it = Args.filtered_begin(options::OPT__param), ie = Args.filtered_end(); it != ie; ++it) {
@@ -4778,6 +4802,37 @@ Args.AddAllArgs(CmdArgs, options::OPT_T_Group); Args.AddAllArgs(CmdArgs, options::OPT_F);
//
// Add in any memory safety libraries. Even if we're not compiling C++ code,
// we need to link in the C++ standard libraries.
//
if (Args.hasArg(options::OPT_softbound)){
CmdArgs.push_back("-lsoftbound_rt");
// CmdArgs.push_back("-lrt");
CmdArgs.push_back("-lm");
if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nodefaultlibs)) {
getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
}
}
if (Args.hasArg(options::OPT_memsafety)) {
if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
} else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
}
CmdArgs.push_back("-lgdtoa");
if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nodefaultlibs)) {
getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
}
}
const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("ld")); C.addCommand(new Command(JA, *this, Exec, CmdArgs)); @@ -5066,6 +5121,29 @@
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
//
// Add in any memory safety libraries.
//
if (Args.hasArg(options::OPT_softbound)){
CmdArgs.push_back("-lsoftbound_rt");
CmdArgs.push_back("-lstdc++");
CmdArgs.push_back("-lrt");
CmdArgs.push_back("-lm");
}
if (Args.hasArg(options::OPT_memsafety)) {
if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
} else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
}
CmdArgs.push_back("-lgdtoa");
CmdArgs.push_back("-lstdc++");
}
if (!Args.hasArg(options::OPT_nostdlib) && !Args.hasArg(options::OPT_nodefaultlibs)) { // FIXME: For some reason GCC passes -lgcc before adding
@@ -5182,6 +5260,27 @@
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
- //
- // Add in any memory safety libraries.
- //
- if (Args.hasArg(options::OPT_softbound)){
- CmdArgs.push_back("-lsoftbound_rt");
- CmdArgs.push_back("-lrt");
- CmdArgs.push_back("-lm");
- CmdArgs.push_back("-lstdc++");
- }
- if (Args.hasArg(options::OPT_memsafety)) {
- if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
- } else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
- }
- CmdArgs.push_back("-lgdtoa");
- CmdArgs.push_back("-lstdc++");
- }
- if (!Args.hasArg(options::OPT_nostdlib) && !Args.hasArg(options::OPT_nodefaultlibs)) { if (D.CCCIsCXX) {
@@ -5546,6 +5645,27 @@
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
- //
- // Add in any memory safety libraries.
- //
- if (Args.hasArg(options::OPT_softbound)){
- CmdArgs.push_back("-lsoftbound_rt");
- CmdArgs.push_back("-lstdc++");
- CmdArgs.push_back("-lrt");
- CmdArgs.push_back("-lm");
- }
- if (Args.hasArg(options::OPT_memsafety)) {
- if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
- } else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
- }
- CmdArgs.push_back("-lgdtoa");
- CmdArgs.push_back("-lstdc++");
- }
- if (!Args.hasArg(options::OPT_nostdlib) && !Args.hasArg(options::OPT_nodefaultlibs)) { if (D.CCCIsCXX) {
@@ -5716,6 +5836,27 @@
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
- //
- // Add in any memory safety libraries.
- //
- if (Args.hasArg(options::OPT_softbound)){
- CmdArgs.push_back("-lsoftbound_rt");
- CmdArgs.push_back("-lstdc++");
- CmdArgs.push_back("-lrt");
- CmdArgs.push_back("-lm");
- }
- if (Args.hasArg(options::OPT_memsafety)) {
- if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
- } else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
- }
- CmdArgs.push_back("-lgdtoa");
- CmdArgs.push_back("-lstdc++");
- }
- if (!Args.hasArg(options::OPT_nostdlib) && !Args.hasArg(options::OPT_nodefaultlibs)) { if (D.CCCIsCXX) {
@@ -6060,6 +6201,26 @@
SanitizerArgs Sanitize(D, Args);
- // Add in any memory safety libraries.
- //
- if (Args.hasArg(options::OPT_softbound)){
- CmdArgs.push_back("-lsoftbound_rt");
- CmdArgs.push_back("-lrt");
- CmdArgs.push_back("-lm");
- CmdArgs.push_back("-lstdc++");
- }
- if (Args.hasArg(options::OPT_memsafety)) {
- if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
- } else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
- }
- CmdArgs.push_back("-lgdtoa");
- CmdArgs.push_back("-lstdc++");
- }
- // Call this before we add the C++ ABI library. if (Sanitize.needsUbsanRt()) addUbsanRTLinux(getToolChain(), Args, CmdArgs);
@@ -6175,6 +6336,26 @@
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
//
// Add in any memory safety libraries.
//
if (Args.hasArg(options::OPT_softbound)){
CmdArgs.push_back("-lsoftbound_rt");
CmdArgs.push_back("-lrt");
CmdArgs.push_back("-lm");
CmdArgs.push_back("-lstdc++");
}
if (Args.hasArg(options::OPT_memsafety)) {
if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
} else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
}
CmdArgs.push_back("-lgdtoa");
CmdArgs.push_back("-lstdc++");
}
addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
if (!Args.hasArg(options::OPT_nostdlib) &&
@@ -6291,6 +6472,25 @@ Args.AddAllArgs(CmdArgs, options::OPT_e);
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
//
// Add in any memory safety libraries.
//
if (Args.hasArg(options::OPT_softbound)){
CmdArgs.push_back("-lsoftbound_rt");
CmdArgs.push_back("-lrt");
CmdArgs.push_back("-lm");
CmdArgs.push_back("-lstdc++");
}
if (Args.hasArg(options::OPT_memsafety)) {
if (Args.hasArg(options::OPT_bbc)) {
CmdArgs.push_back("-lsc_bb_rt");
} else {
CmdArgs.push_back("-lsc_dbg_rt");
CmdArgs.push_back("-lpoolalloc_bitmap");
}
CmdArgs.push_back("-lgdtoa");
CmdArgs.push_back("-lstdc++");
}
if (!Args.hasArg(options::OPT_nostdlib) && !Args.hasArg(options::OPT_nodefaultlibs)) {
Property changes on: lib/Driver/Tools.cpp ___________________________________________________________________ Modified: svn:mergeinfo Merged /cfe/branches/release_32/lib/Driver/Tools.cpp:r167704-169383 Merged /cfe/trunk/lib/Driver/Tools.cpp:r163908-167703,167918,167925,167935,168269,168277-168278,168303,168355,168379,168674,168818 Merged /safecode/trunk/tools/clang/lib/Driver/Tools.cpp:r161304 Merged /safecode/branches/release_30/tools/clang/lib/Driver/Tools.cpp:r161128-166576 Index: lib/Driver/ToolChains.cpp
--- lib/Driver/ToolChains.cpp (.../cfe/branches/release_32) (revision 242032) +++ lib/Driver/ToolChains.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -35,6 +35,17 @@ #include // ::getenv +// Include llvm/Config/config.h here as it contains the #defines +// normally set in clang/Config/config.h. While we have modified +// the SAFECode configure script to configure clang/Config/config.h, +// the current configure code does not insert any definitions into +// clang/Config/config.h. While we could modify the SAFECode +// configure script further to handle this, there seems to be no +// point as long as we can piggy back on llvm/Config/config.h +// +// JRM -- 8/26/12 +// +#include "llvm/Config/config.h" #include "clang/Config/config.h" // for GCC_INSTALL_PREFIX using namespace clang::driver; @@ -1855,8 +1866,6 @@ UbuntuNatty, UbuntuOneiric, UbuntuPrecise, - UbuntuQuantal, - UbuntuRaring, UnknownDistro }; @@ -1874,7 +1883,7 @@ } static bool IsUbuntu(enum LinuxDistro Distro) { - return Distro >= UbuntuHardy && Distro <= UbuntuRaring; + return Distro >= UbuntuHardy && Distro <= UbuntuPrecise; } static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) { @@ -1896,8 +1905,6 @@ .Case("natty", UbuntuNatty) .Case("oneiric", UbuntuOneiric) .Case("precise", UbuntuPrecise) - .Case("quantal", UbuntuQuantal) - .Case("raring", UbuntuRaring) .Default(UnknownDistro); return Version; } Index: Makefile
--- Makefile (.../cfe/branches/release_32) (revision 242032) +++ Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -67,9 +67,14 @@ # Set up Clang's tblgen. ifndef CLANG_TBLGEN ifeq ($(LLVM_CROSS_COMPILING),1) + # this clause should probably be altered for SAFECode as well, + # but I'm not sure what to do with it. + # + # -- JRM - 12/08/27 + # CLANG_TBLGEN := (BuildLLVMToolDir)/clang−tblgen(BuildLLVMToolDir)/clang-tblgen(BuildLLVMToolDir)/clang−tblgen(BUILD_EXEEXT) else - CLANG_TBLGEN := (LLVMToolDir)/clang−tblgen(LLVMToolDir)/clang-tblgen(LLVMToolDir)/clang−tblgen(EXEEXT) + CLANG_TBLGEN := (ToolDir)/clang−tblgen(ToolDir)/clang-tblgen(ToolDir)/clang−tblgen(EXEEXT) endif endif ClangTableGen = (CLANGTBLGEN)(CLANG_TBLGEN) (CLANGTBLGEN)(TableGen.Flags) Index: test/Parser/bracket-crash.cpp
--- test/Parser/bracket-crash.cpp (.../cfe/branches/release_32) (revision 242032) +++ test/Parser/bracket-crash.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -4,6 +4,3 @@ struct{ a }
-// PR14549. Must be at end of file. -decltype( Index: test/CXX/basic/basic.scope/basic.scope.local/p2.cpp
--- test/CXX/basic/basic.scope/basic.scope.local/p2.cpp (.../cfe/branches/release_32) (revision 242032) +++ test/CXX/basic/basic.scope/basic.scope.local/p2.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -35,26 +35,3 @@ int i; // expected-error{{redefinition of 'i'}} } }
-void func8() { - int i; - try { - int i; - } catch (...) { - } -}
-void func9() { - if (bool b = true) - try { - int b; // FIXME: this probably should be invalid, maybe - } catch (...) { - } -}
-void func10() { - if (bool b = true) - if (true) { - int b; // FIXME: decide whether this is valid - } -} Index: test/SemaCXX/warn-unreachable.cpp
--- test/SemaCXX/warn-unreachable.cpp (.../cfe/branches/release_32) (revision 242032) +++ test/SemaCXX/warn-unreachable.cpp (.../safecode/branches/release_32/tools/clang) (revision 242032)
Property changes on: test/SemaCXX/warn-unreachable.cpp ___________________________________________________________________ Modified: svn:mergeinfo Reverse-merged /cfe/trunk/test/SemaCXX/warn-unreachable.cpp:r121961 Merged /cfe/trunk/test/SemaCXX/warn-unreachable.cpp:r163908-167703 Merged /safecode/trunk/tools/clang/test/SemaCXX/warn-unreachable.cpp:r161304 Merged /safecode/branches/release_30/tools/clang/test/SemaCXX/warn-unreachable.cpp:r161128-166576 Merged /cfe/branches/release_32/test/SemaCXX/warn-unreachable.cpp:r167704-169383 Index: test/Driver/pic.c
--- test/Driver/pic.c (.../cfe/branches/release_32) (revision 242032) +++ test/Driver/pic.c (.../safecode/branches/release_32/tools/clang) (revision 242032)
Property changes on: test/Driver/pic.c ___________________________________________________________________ Modified: svn:mergeinfo Merged /safecode/branches/release_30/tools/clang/test/Driver/pic.c:r161128-166576 Merged /cfe/branches/release_32/test/Driver/pic.c:r167704-168525,168538-169383 Merged /cfe/trunk/test/Driver/pic.c:r163908-167703,167918,167925,167935,168063,168269,168277-168278,168303,168355,168379,168674,168818 Merged /safecode/trunk/tools/clang/test/Driver/pic.c:r161304 Index: runtime/Makefile
--- runtime/Makefile (.../cfe/branches/release_32) (revision 242032) +++ runtime/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -8,8 +8,11 @@ ##===----------------------------------------------------------------------===## CLANG_LEVEL := .. -include $(CLANG_LEVEL)/../../Makefile.config +LEVEL := $(CLANG_LEVEL)/../.. + +include $(CLANG_LEVEL)/../../Makefile.common + ifndef NO_RUNTIME_LIBS PARALLEL_DIRS := compiler-rt libcxx Index: include/clang/Frontend/CodeGenOptions.h
--- include/clang/Frontend/CodeGenOptions.h (.../cfe/branches/release_32) (revision 242032) +++ include/clang/Frontend/CodeGenOptions.h (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -106,6 +106,9 @@ /// A list of command-line options to forward to the LLVM backend. std::vectorstd::string BackendOptions; + /// The filename to use for logging memory safety violations + std::string MemSafetyLogFile; + public: // Define accessors/mutators for code generation options of enumeration type. #define CODEGENOPT(Name, Bits, Default) Index: include/clang/Frontend/CodeGenOptions.def
--- include/clang/Frontend/CodeGenOptions.def (.../cfe/branches/release_32) (revision 242032) +++ include/clang/Frontend/CodeGenOptions.def (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -91,6 +91,12 @@ CODEGENOPT(UnsafeFPMath , 1, 0) ///< Allow unsafe floating point optzns. CODEGENOPT(UnwindTables , 1, 0) ///< Emit unwind tables. +CODEGENOPT(MemSafety , 1, 0) /// Instrument code with memory safety checks +CODEGENOPT(BaggyBounds , 1, 0) /// Use Baggy Bounds Checking +CODEGENOPT(MemSafeTerminate , 1, 0) /// Terminate program on failed memsafe checks +CODEGENOPT(SoftBound , 1, 0) /// SoftBound+CETS pointer based checking + + /// Attempt to use register sized accesses to bit-fields in structures, when /// possible. CODEGENOPT(UseRegisterSizedBitfieldAccess , 1, 0) Index: include/clang/Sema/Scope.h
--- include/clang/Sema/Scope.h (.../cfe/branches/release_32) (revision 242032) +++ include/clang/Sema/Scope.h (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -84,18 +84,11 @@ /// TryScope - This is the scope of a C++ try statement. TryScope = 0x1000, - /// CatchScope - This is the scope of a C++ catch statement. - CatchScope = 0x2000,
- /// FnTryCatchScope - This is the scope for a function-level C++ try or
- /// catch scope.
- FnTryCatchScope = 0x4000,
/// FnTryScope - This is the scope of a function-level C++ try scope.
- FnTryScope = TryScope | FnTryCatchScope,
FnTryScope = 0x3000,
/// FnCatchScope - This is the scope of a function-level C++ catch scope.
- FnCatchScope = CatchScope | FnTryCatchScope
- FnCatchScope = 0x4000
}; private: /// The parent scope for this scope. This is null for the translation-unit Index: include/clang/Driver/CC1Options.td
--- include/clang/Driver/CC1Options.td (.../cfe/branches/release_32) (revision 242032)
+++ include/clang/Driver/CC1Options.td (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -526,6 +526,22 @@
HelpText<"OpenCL language standard to compile for">;
//===----------------------------------------------------------------------===//
+// Memory Safety Options
+//===----------------------------------------------------------------------===//
+
+def memsafety : Flag<["-"], "fmemsafety">,
+ HelpText<"Instrument program with memory-safety checks">;
+def bbc : Flag<["-"], "bbc">,
+ HelpText<"Use Baggy Bounds Checking">;
+def msLogFile : Separate<["-"], "fmemsafety-logfile">,
+ MetaVarName<"">, HelpText<"Specify memory safety checks log file">;
+def terminate : Flag<["-"], "fmemsafety-terminate">,
+ HelpText<"Terminate program on failed memory-safety checks">;
+def softbound: Flag<["-"], "fsoftbound">,
+ HelpText<"Instrument program with SoftBound+CETS style pointer based memory safety checks">;
+
+
+//===----------------------------------------------------------------------===//
// CUDA Options
//===----------------------------------------------------------------------===//
Index: docs/ReleaseNotes.html
--- docs/ReleaseNotes.html (.../cfe/branches/release_32) (revision 242032) +++ docs/ReleaseNotes.html (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -43,6 +43,12 @@
Written by the LLVM Team
+These are in-progress notes for the upcoming Clang 3.2
+release.
+You may prefer the
+Clang 3.1
+Release Notes.
+
Introduction
@@ -85,7 +91,7 @@ them. The improvements since the 3.1 release include:-
-
- -Wuninitialized has been taught to recognize uninitialized uses +
- -Wuninitialized has been taught to recognise uninitialized uses which always occur when an explicitly-written non-constant condition is either true or false. For example: @@ -164,11 +170,14 @@ -
- The Address Sanitizer feature and Clang's -fcatch-undefined-behavior option have been moved to a unified flag set: - -fsanitize. This flag can be used to enable the different dynamic checking tools when building. For example, - -faddress-sanitizer is now -fsanitize=address, and -fcatch-undefined-behavior is now - -fsanitize=undefined. With this release the set of checks available continues to grow, see the Clang - documentation and specific sanitizer notes below for details. +
- Clang's -fcatch-undefined-behavior option has been renamed to + -fsanitize=undefined and has grown the ability to check for several + new types of undefined behavior. See the Users Manual for more information. + + + + +
pointer_with_type_tag
and type_tag_for_datatype
attributes in Clang language extensions documentation.
-Documentation comment support
-Clang now supports documentation comments written in a Doxygen-like syntax. -Clang parses the comments and can detect syntactic and semantic errors in -comments. These warnings are off by default. Pass -Wdocumentation -flag to enable warnings about documentation comments.
-
For example, given:
-/// \param [in] Str the string.
-/// \returns a modified string.
-void do_something(const std::string &str);
-
clang -Wdocumentation will emit two warnings:
-doc-test.cc:3:6: warning: '\returns' command used in a comment that is attached to a function returning void [-Wdocumentation]
-/// \returns a modified string.
- ~^~~~~~~~~~~~~~~~~~~~~~~~~~
-doc-test.cc:2:17: warning: parameter 'Str' not found in the function declaration [-Wdocumentation]
-/// \param [in] Str the string.
- ^
-doc-test.cc:2:17: note: did you mean 'str'?
-/// \param [in] Str the string.
- ^
- str
-
libclang includes a new API, clang_FullComment_getAsXML, to convert -comments to XML documents. This API can be used to build documentation -extraction tools.
New Compiler Flags
@@ -259,8 +239,7 @@C11 Feature Support
-
Clang 3.2 adds support for the C11 _Alignof
keyword, pedantic warning through option
- -Wempty-translation-unit
(C11 6.9p1)
...
C++ Language Changes in Clang
@@ -268,42 +247,40 @@C++11 Feature Support
-Clang 3.2 supports most of the language features
- added in the latest ISO C++ standard,C++ 2011.
- Use -std=c++11
or -std=gnu++11
to enable support for these features. In addition to the features supported by Clang 3.1, the
- following features have been added:
...
--
-
- Implemented the C++11 discarded value expression rules for volatile lvalues. -
- Support for the C++11 enum forward declarations. -
- Handling of C++11 attribute namespaces (automatically). -
- Implemented C++11 [conv.prom]p4: an enumeration with a fixed underlying type has integral promotions - to both its underlying type and to its underlying type's promoted type. -
Objective-C Language Changes in Clang
-
Bug-fixes, no functionality changes.
+...
+Internal API Changes
+ + +These are major API changes that have happened since the 3.1 release of + Clang. If upgrading an external codebase that uses Clang as a library, this + section should help get you past the largest hurdles of upgrading.
+ +API change 1
+ +...
+ +Python Binding Changes
-The following classes and methods have been added: +The following methods have been added:-
-
- class CompilationDatabaseError(Exception) -
- class CompileCommand(object) -
- class CompileCommands(object) -
- class CompilationDatabase(ClangObject) -
- Cursor.is_static_method -
- Cursor.is_static_method -
- SourceLocation.from_offset -
- Cursor.is_static_method +
- ...
Significant Known Problems
+ + +Additional Information
@@ -319,7 +296,18 @@ the mailing list. + + + + + Index: utils/TableGen/Makefile--- utils/TableGen/Makefile (.../cfe/branches/release_32) (revision 242032) +++ utils/TableGen/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -9,7 +9,7 @@ LEVEL = ../../../.. TOOLNAME = clang-tblgen -USEDLIBS = LLVMTableGen.a LLVMSupport.a +LLVMLIBS = LLVMTableGen.a LLVMSupport.a # This tool has no plugins, optimize startup time. TOOL_NO_EXPORTS = 1 Index: tools/driver/Makefile
--- tools/driver/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/driver/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -14,7 +14,7 @@
# We don't currently expect production Clang builds to be interested in
# plugins. This is important for startup performance.
ifdef CLANG_IS_PRODUCTION
-TOOL_NO_EXPORTS := 1
+#TOOL_NO_EXPORTS := 1
endif
ifdef CLANG_ORDER_FILE
@@ -22,22 +22,29 @@
endif
# Include tool version information on OS X.
-TOOL_INFO_PLIST := Info.plist
+#TOOL_INFO_PLIST := Info.plist
# Include this here so we can get the configuration of the targets that have
# been configured for construction. We have to do this early so we can set up
# LINK_COMPONENTS before including Makefile.rules
-include $(CLANG_LEVEL)/../../Makefile.config
+LEVEL := $(CLANG_LEVEL)/../..
+
+include $(CLANG_LEVEL)/../../Makefile.common
+
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter codegen
- instrumentation ipo linker selectiondag
+ instrumentation ipo linker Core selectiondag
USEDLIBS = clangFrontendTool.a clangFrontend.a clangDriver.a
clangSerialization.a clangCodeGen.a clangParse.a clangSema.a
clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a
clangStaticAnalyzerCore.a
clangAnalysis.a clangARCMigrate.a
clangRewriteFrontend.a clangRewriteCore.a
- clangEdit.a clangAST.a clangLex.a clangBasic.a
+ clangEdit.a clangAST.a clangLex.a clangBasic.a
+
+ abc.a addchecks.a sc-support.a baggyboundscheck.a debuginstr.a
+ softbound.a formatstrings.a convert.a cstdlib.a optchecks.a oob.a
+ cmspasses.a
include $(CLANG_LEVEL)/Makefile
Index: tools/libclang/Makefile
--- tools/libclang/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/libclang/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -10,12 +10,14 @@
CLANG_LEVEL := ../..
LIBRARYNAME = clang
-EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/libclang.exports
+#EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/libclang.exports
LINK_LIBS_IN_SHARED = 1
SHARED_LIBRARY = 1
-include $(CLANG_LEVEL)/../../Makefile.config
+LEVEL := $(CLANG_LEVEL)/../..
+
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangARCMigrate.a clangRewriteCore.a clangRewriteFrontend.a
clangFrontend.a clangDriver.a
Index: tools/Makefile
--- tools/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -9,8 +9,10 @@
CLANG_LEVEL := ..
-include $(CLANG_LEVEL)/../../Makefile.config
+LEVEL := $(CLANG_LEVEL)/../..
+include $(CLANG_LEVEL)/../../Makefile.common
+
DIRS := driver libclang c-index-test arcmt-test c-arcmt-test diagtool
clang-check
Index: tools/clang-check/Makefile
--- tools/clang-check/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/clang-check/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -9,12 +9,14 @@
CLANG_LEVEL := ../..
+LEVEL := $(CLANG_LEVEL)/../..
+
TOOLNAME = clang-check
# No plugins, optimize startup time.
-TOOL_NO_EXPORTS = 1
+#TOOL_NO_EXPORTS = 1
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a
clangTooling.a clangParse.a clangSema.a clangAnalysis.a
Index: tools/diagtool/Makefile
--- tools/diagtool/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/diagtool/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -8,15 +8,17 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL := ../..
+LEVEL := $(CLANG_LEVEL)/../..
+
TOOLNAME = diagtool
# No plugins, optimize startup time.
-TOOL_NO_EXPORTS := 1
+#TOOL_NO_EXPORTS := 1
# Don't install this.
NO_INSTALL = 1
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangFrontend.a clangDriver.a clangSerialization.a clangParse.a
clangSema.a clangAnalysis.a clangEdit.a clangAST.a clangLex.a
Index: tools/arcmt-test/Makefile
--- tools/arcmt-test/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/arcmt-test/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -8,15 +8,17 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL := ../..
+LEVEL := $(CLANG_LEVEL)/../..
+
TOOLNAME = arcmt-test
# No plugins, optimize startup time.
-TOOL_NO_EXPORTS = 1
+#TOOL_NO_EXPORTS = 1
# Don't install this. It is used for tests.
NO_INSTALL = 1
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangARCMigrate.a clangRewriteCore.a
clangFrontend.a clangDriver.a clangSerialization.a clangParse.a
Index: tools/c-arcmt-test/Makefile
--- tools/c-arcmt-test/Makefile (.../cfe/branches/release_32) (revision 242032) +++ tools/c-arcmt-test/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -8,10 +8,12 @@ ##===----------------------------------------------------------------------===## CLANG_LEVEL := ../.. +LEVEL := $(CLANG_LEVEL)/../.. + TOOLNAME = c-arcmt-test # No plugins, optimize startup time. -TOOL_NO_EXPORTS = 1 +#TOOL_NO_EXPORTS = 1 # Don't install this. It is used for tests. NO_INSTALL = 1 @@ -19,7 +21,7 @@ # Include this here so we can get the configuration of the targets that have # been configured for construction. We have to do this early so we can set up # LINK_COMPONENTS before including Makefile.rules -include $(CLANG_LEVEL)/../../Makefile.config +include $(CLANG_LEVEL)/../../Makefile.common LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc Index: tools/c-index-test/Makefile
--- tools/c-index-test/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ tools/c-index-test/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -8,6 +8,9 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL := ../..
+LEVEL := $(CLANG_LEVEL)/../..
+
+
TOOLNAME = c-index-test
# If a separate install prefix was specified for internal tools, use it
@@ -15,12 +18,12 @@
INTERNAL_TOOL = 1
# No plugins, optimize startup time.
-TOOL_NO_EXPORTS = 1
+#TOOL_NO_EXPORTS = 1
# Include this here so we can get the configuration of the targets that have
# been configured for construction. We have to do this early so we can set up
# LINK_COMPONENTS before including Makefile.rules
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clang.a clangFrontend.a clangDriver.a
Index: unittests/Tooling/Makefile
--- unittests/Tooling/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ unittests/Tooling/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -8,8 +8,9 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL = ../..
+LEVEL := $(CLANG_LEVEL)/../..
TESTNAME = Tooling
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a
clangParse.a clangRewriteCore.a clangRewriteFrontend.a
Index: unittests/Makefile
--- unittests/Makefile (.../cfe/branches/release_32) (revision 242032) +++ unittests/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032) @@ -18,6 +18,8 @@ endif # CLANG_LEVEL +LEVEL := $(CLANG_LEVEL)/../.. + include $(CLANG_LEVEL)/Makefile ifndef IS_UNITTEST_LEVEL Index: unittests/ASTMatchers/Makefile
--- unittests/ASTMatchers/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ unittests/ASTMatchers/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -9,8 +9,10 @@
CLANG_LEVEL = ../..
+LEVEL := $(CLANG_LEVEL)/../..
+
TESTNAME = ASTMatchers
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a
clangRewriteCore.a clangRewriteFrontend.a
Index: unittests/Frontend/Makefile
--- unittests/Frontend/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ unittests/Frontend/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -8,8 +8,9 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL = ../..
+LEVEL := $(CLANG_LEVEL)/../..
TESTNAME = Frontend
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangFrontendTool.a clangFrontend.a clangDriver.a
clangSerialization.a clangCodeGen.a clangParse.a clangSema.a
Index: unittests/AST/Makefile
--- unittests/AST/Makefile (.../cfe/branches/release_32) (revision 242032)
+++ unittests/AST/Makefile (.../safecode/branches/release_32/tools/clang) (revision 242032)
@@ -8,8 +8,9 @@
##===----------------------------------------------------------------------===##
CLANG_LEVEL = ../..
+LEVEL := $(CLANG_LEVEL)/../..
TESTNAME = AST
-include $(CLANG_LEVEL)/../../Makefile.config
+include $(CLANG_LEVEL)/../../Makefile.common
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser support mc
USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a
clangRewriteCore.a clangRewriteFrontend.a
Index: .
--- . (.../cfe/branches/release_32) (revision 242032) +++ . (.../safecode/branches/release_32/tools/clang) (revision 242032)
Property changes on: .
Modified: svn:mergeinfo Reverse-merged /cfe/trunk:r167766,169084,169688,170147 Merged /cfe/trunk:r163908-167703 Merged /safecode/trunk/tools/clang:r161304 Merged /safecode/branches/release_30/tools/clang:r161128-166576 Merged /cfe/branches/release_32:r167704-169383
- Previous message: [LLVMdev] (no subject)
- Next message: [LLVMdev] LLVM IR on different platforms
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]