aboutsummaryrefslogtreecommitdiff
path: root/lang/clang-devel/files
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2010-10-08 14:00:32 +0000
committerBrooks Davis <brooks@FreeBSD.org>2010-10-08 14:00:32 +0000
commit83be75421039cd85a18a9c71bcab1c0e7a52ecba (patch)
tree166150fa1545ff5da77ffef996e97a92ee35740b /lang/clang-devel/files
parent5c5b2dc4b75b3f53a7ecffe57c0ae2ab6c4d9db1 (diff)
Notes
Diffstat (limited to 'lang/clang-devel/files')
-rw-r--r--lang/clang-devel/files/patch-Makefile.rules26
-rw-r--r--lang/clang-devel/files/patch-tools_clang_Makefile10
-rw-r--r--lang/clang-devel/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h16
-rw-r--r--lang/clang-devel/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp26
-rw-r--r--lang/clang-devel/files/patch-tools_clang_lib_Headers_Makefile2
-rw-r--r--lang/clang-devel/files/patch-tools_clang_lib_Sema_SemaChecking.cpp45
-rw-r--r--lang/clang-devel/files/patch-tools_clang_tools_scan-build_scan-build23
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);