diff options
author | Brooks Davis <brooks@FreeBSD.org> | 2010-10-08 14:00:32 +0000 |
---|---|---|
committer | Brooks Davis <brooks@FreeBSD.org> | 2010-10-08 14:00:32 +0000 |
commit | 83be75421039cd85a18a9c71bcab1c0e7a52ecba (patch) | |
tree | 166150fa1545ff5da77ffef996e97a92ee35740b /lang/clang-devel/files | |
parent | 5c5b2dc4b75b3f53a7ecffe57c0ae2ab6c4d9db1 (diff) |
Notes
Diffstat (limited to 'lang/clang-devel/files')
7 files changed, 143 insertions, 5 deletions
diff --git a/lang/clang-devel/files/patch-Makefile.rules b/lang/clang-devel/files/patch-Makefile.rules new file mode 100644 index 000000000000..4c4c1bfcdd44 --- /dev/null +++ b/lang/clang-devel/files/patch-Makefile.rules @@ -0,0 +1,26 @@ + +$FreeBSD$ + +--- Makefile.rules.orig ++++ Makefile.rules +@@ -406,6 +406,7 @@ + LibDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/lib + ToolDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/bin + ExmplDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/examples ++LLVMIncDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/include + LLVMLibDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/lib + LLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/bin + LLVMExmplDir:= $(LLVM_OBJ_ROOT)/$(BuildMode)/examples +@@ -628,10 +629,10 @@ + LD.Flags += -L$(LibDir) -L$(LLVMLibDir) + CPP.BaseFlags += -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS + # All -I flags should go here, so that they don't confuse llvm-config. +-CPP.Flags += $(sort -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \ ++CPP.Flags += $(sort -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) -I$(LLVMIncDir) \ + $(patsubst %,-I%/include,\ + $(PROJ_OBJ_ROOT) $(PROJ_SRC_ROOT) \ +- $(LLVM_OBJ_ROOT) $(LLVM_SRC_ROOT))) \ ++ $(LLVM_SRC_ROOT))) \ + $(CPP.BaseFlags) + + ifeq ($(BUILD_COMPONENT), 1) diff --git a/lang/clang-devel/files/patch-tools_clang_Makefile b/lang/clang-devel/files/patch-tools_clang_Makefile index 09ca4da51a86..331b1a29c15e 100644 --- a/lang/clang-devel/files/patch-tools_clang_Makefile +++ b/lang/clang-devel/files/patch-tools_clang_Makefile @@ -3,10 +3,12 @@ $FreeBSD$ --- tools/clang/Makefile.orig +++ tools/clang/Makefile -@@ -1,5 +1,5 @@ - LEVEL = ../.. --DIRS := include lib tools docs -+DIRS := include lib tools %%DOCSRCDIR%% +@@ -14,7 +14,7 @@ + + IS_TOP_LEVEL := 1 + CLANG_LEVEL := . +-DIRS := include lib tools runtime docs ++DIRS := include lib tools runtime %%DOCSRCDIR%% PARALLEL_DIRS := diff --git a/lang/clang-devel/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h b/lang/clang-devel/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h new file mode 100644 index 000000000000..45a6b81cb300 --- /dev/null +++ b/lang/clang-devel/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h @@ -0,0 +1,16 @@ + +$FreeBSD$ + +--- tools/clang/include/clang/Analysis/Analyses/FormatString.h.orig ++++ tools/clang/include/clang/Analysis/Analyses/FormatString.h +@@ -139,6 +139,10 @@ + SArg, + + // ** Printf-specific ** ++ ++ // FreeBSD specific specifiers ++ bArg, ++ DArg, + + // Objective-C specific specifiers. + ObjCObjArg, // '@' diff --git a/lang/clang-devel/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp b/lang/clang-devel/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp new file mode 100644 index 000000000000..5bfe4b850724 --- /dev/null +++ b/lang/clang-devel/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp @@ -0,0 +1,26 @@ + +$FreeBSD: /tmp/pcvs/ports/lang/clang-devel/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp,v 1.1 2010-10-08 14:00:31 brooks Exp $ + +--- tools/clang/lib/Analysis/PrintfFormatString.cpp.orig ++++ tools/clang/lib/Analysis/PrintfFormatString.cpp +@@ -192,11 +192,20 @@ + case '@': k = ConversionSpecifier::ObjCObjArg; break; + // Glibc specific. + case 'm': k = ConversionSpecifier::PrintErrno; break; ++ // FreeBSD format extensions ++ case 'b': k = ConversionSpecifier::bArg; break; /* check for int and then char * */ ++ case 'r': k = ConversionSpecifier::xArg; break; ++ case 'y': k = ConversionSpecifier::iArg; break; ++ case 'D': k = ConversionSpecifier::DArg; break; /* check for u_char * pointer and a char * string */ ++ + } + PrintfConversionSpecifier CS(conversionPosition, k); + FS.setConversionSpecifier(CS); + if (CS.consumesDataArgument() && !FS.usesPositionalArg()) + FS.setArgIndex(argIndex++); ++ // FreeBSD extension ++ if (k == ConversionSpecifier::bArg || k == ConversionSpecifier::DArg) ++ argIndex++; + + if (k == ConversionSpecifier::InvalidSpecifier) { + // Assume the conversion takes one argument. diff --git a/lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile b/lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile index a131848ac069..789ee4e09995 100644 --- a/lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile +++ b/lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile @@ -1,5 +1,5 @@ -$FreeBSD: /tmp/pcvs/ports/lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile,v 1.1 2010-02-16 18:27:16 brooks Exp $ +$FreeBSD: /tmp/pcvs/ports/lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile,v 1.2 2010-10-08 14:00:31 brooks Exp $ --- tools/clang/lib/Headers/Makefile.orig +++ tools/clang/lib/Headers/Makefile diff --git a/lang/clang-devel/files/patch-tools_clang_lib_Sema_SemaChecking.cpp b/lang/clang-devel/files/patch-tools_clang_lib_Sema_SemaChecking.cpp new file mode 100644 index 000000000000..db618b150ef1 --- /dev/null +++ b/lang/clang-devel/files/patch-tools_clang_lib_Sema_SemaChecking.cpp @@ -0,0 +1,45 @@ + +$FreeBSD: /tmp/pcvs/ports/lang/clang-devel/files/patch-tools_clang_lib_Sema_SemaChecking.cpp,v 1.1 2010-10-08 14:00:31 brooks Exp $ + +--- tools/clang/lib/Sema/SemaChecking.cpp.orig ++++ tools/clang/lib/Sema/SemaChecking.cpp +@@ -1511,6 +1511,39 @@ + CoveredArgs.set(argIndex); + } + ++ // FreeBSD extensions ++ if (CS.getKind() == ConversionSpecifier::bArg || CS.getKind() == ConversionSpecifier::DArg) { ++ // claim the second argument ++ CoveredArgs.set(argIndex + 1); ++ ++ // Now type check the data expression that matches the ++ // format specifier. ++ const Expr *Ex = getDataArg(argIndex); ++ QualType type = (CS.getKind() == ConversionSpecifier::bArg) ? S.Context.IntTy : S.Context.getPointerType(S.Context.UnsignedCharTy); ++ //const analyze_printf::ArgTypeResult &ATR = S.Context.IntTy; ++ const analyze_printf::ArgTypeResult &ATR = type; ++ if (ATR.isValid() && !ATR.matchesType(S.Context, Ex->getType())) ++ S.Diag(getLocationOfByte(CS.getStart()), ++ diag::warn_printf_conversion_argument_type_mismatch) ++ << ATR.getRepresentativeType(S.Context) << Ex->getType() ++ << getSpecifierRange(startSpecifier, specifierLen) ++ << Ex->getSourceRange(); ++ ++ // Now type check the data expression that matches the ++ // format specifier. ++ Ex = getDataArg(argIndex + 1); ++ const analyze_printf::ArgTypeResult &ATR2 = ArgTypeResult::CStrTy; ++ if (ATR2.isValid() && !ATR2.matchesType(S.Context, Ex->getType())) ++ S.Diag(getLocationOfByte(CS.getStart()), ++ diag::warn_printf_conversion_argument_type_mismatch) ++ << ATR2.getRepresentativeType(S.Context) << Ex->getType() ++ << getSpecifierRange(startSpecifier, specifierLen) ++ << Ex->getSourceRange(); ++ ++ return true; ++ } ++ // END OF FREEBSD EXTENSIONS ++ + // Check for using an Objective-C specific conversion specifier + // in a non-ObjC literal. + if (!IsObjCLiteral && CS.isObjCArg()) { diff --git a/lang/clang-devel/files/patch-tools_clang_tools_scan-build_scan-build b/lang/clang-devel/files/patch-tools_clang_tools_scan-build_scan-build new file mode 100644 index 000000000000..f5bd884e8b2c --- /dev/null +++ b/lang/clang-devel/files/patch-tools_clang_tools_scan-build_scan-build @@ -0,0 +1,23 @@ + +$FreeBSD: /tmp/pcvs/ports/lang/clang-devel/files/patch-tools_clang_tools_scan-build_scan-build,v 1.1 2010-10-08 14:00:31 brooks Exp $ + +--- tools/clang/tools/scan-build/scan-build.orig ++++ tools/clang/tools/scan-build/scan-build +@@ -423,7 +423,7 @@ + + my $Dir = shift; + +- my $JS = Cwd::realpath("$RealBin/sorttable.js"); ++ my $JS = Cwd::realpath("%%DATADIR%%/sorttable.js"); + + DieDiag("Cannot find 'sorttable.js'.\n") + if (! -r $JS); +@@ -433,7 +433,7 @@ + DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n") + if (! -r "$Dir/sorttable.js"); + +- my $CSS = Cwd::realpath("$RealBin/scanview.css"); ++ my $CSS = Cwd::realpath("%%DATADIR%%/scanview.css"); + + DieDiag("Cannot find 'scanview.css'.\n") + if (! -r $CSS); |