mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-04-02 02:49:12 +00:00
This needs further investigation, but for now we can get the tested sources into the poky gcc harness Signed-off-by: Koen Kooi <k-kooi@ti.com>
208 lines
7.8 KiB
Diff
208 lines
7.8 KiB
Diff
2010-06-28 Julian Brown <julian@codesourcery.com>
|
|
|
|
Merge from Sourcery G++ 4.4:
|
|
|
|
Daniel Jacobowitz <dan@codesourcery.com>
|
|
Joseph Myers <joseph@codesourcery.com>
|
|
|
|
gcc/
|
|
* doc/invoke.texi (-Wno-poison-system-directories): Document.
|
|
* gcc.c (LINK_COMMAND_SPEC): Pass --no-poison-system-directories
|
|
if -Wno-poison-system-directories and --error-poison-system-directories
|
|
if -Werror=poison-system-directories to linker.
|
|
* incpath.c: Include flags.h. Include toplev.h.
|
|
(merge_include_chains): If ENABLE_POISON_SYSTEM_DIRECTORIES defined
|
|
and flag_poison_system_directories is true, warn for use of
|
|
/usr/include, /usr/local/include or /usr/X11R6/include.
|
|
* Makefile.in (incpath.o): Depend on $(FLAGS_H) and toplev.h.
|
|
* common.opt (--Wno-poison-system-directories): New.
|
|
* configure.ac (--enable-poison-system-directories): New option.
|
|
* configure: Regenerate.
|
|
* config.in: Regenerate.
|
|
|
|
Index: gcc-4.5/gcc/Makefile.in
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/Makefile.in 2010-09-23 16:44:12.000000000 -0700
|
|
+++ gcc-4.5/gcc/Makefile.in 2010-09-23 16:46:33.552416860 -0700
|
|
@@ -1969,7 +1969,7 @@ gcc.srcextra: gengtype-lex.c
|
|
|
|
incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
|
|
intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \
|
|
- $(MACHMODE_H)
|
|
+ $(MACHMODE_H) $(FLAGS_H) toplev.h
|
|
|
|
c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
|
$(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \
|
|
Index: gcc-4.5/gcc/common.opt
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/common.opt 2010-07-11 16:14:47.000000000 -0700
|
|
+++ gcc-4.5/gcc/common.opt 2010-09-23 16:46:33.556418045 -0700
|
|
@@ -152,6 +152,10 @@ Wpadded
|
|
Common Var(warn_padded) Warning
|
|
Warn when padding is required to align structure members
|
|
|
|
+Wpoison-system-directories
|
|
+Common Var(flag_poison_system_directories) Init(1)
|
|
+Warn for -I and -L options using system directories if cross compiling
|
|
+
|
|
Wshadow
|
|
Common Var(warn_shadow) Warning
|
|
Warn when one local variable shadows another
|
|
Index: gcc-4.5/gcc/config.in
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/config.in 2010-07-11 16:14:46.000000000 -0700
|
|
+++ gcc-4.5/gcc/config.in 2010-09-23 16:46:33.556418045 -0700
|
|
@@ -132,6 +132,12 @@
|
|
#endif
|
|
|
|
|
|
+/* Define to warn for use of native system header directories */
|
|
+#ifndef USED_FOR_TARGET
|
|
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
|
+#endif
|
|
+
|
|
+
|
|
/* Define if you want all operations on RTL (the basic data structure of the
|
|
optimizer and back end) to be checked for dynamic type safety at runtime.
|
|
This is quite expensive. */
|
|
Index: gcc-4.5/gcc/configure
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/configure 2010-09-23 16:44:11.000000000 -0700
|
|
+++ gcc-4.5/gcc/configure 2010-09-23 16:46:33.572415719 -0700
|
|
@@ -913,6 +913,7 @@ with_system_zlib
|
|
enable_maintainer_mode
|
|
enable_version_specific_runtime_libs
|
|
with_slibdir
|
|
+enable_poison_system_directories
|
|
enable_plugin
|
|
'
|
|
ac_precious_vars='build_alias
|
|
@@ -1620,6 +1621,8 @@ Optional Features:
|
|
--enable-version-specific-runtime-libs
|
|
specify that runtime libraries should be
|
|
installed in a compiler-specific directory
|
|
+ --enable-poison-system-directories
|
|
+ warn for use of native system header directories
|
|
--enable-plugin enable plugin support
|
|
|
|
Optional Packages:
|
|
@@ -25345,6 +25348,19 @@ fi
|
|
|
|
|
|
|
|
+# Check whether --enable-poison-system-directories was given.
|
|
+if test "${enable_poison_system_directories+set}" = set; then :
|
|
+ enableval=$enable_poison_system_directories;
|
|
+else
|
|
+ enable_poison_system_directories=no
|
|
+fi
|
|
+
|
|
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
|
+
|
|
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
|
+
|
|
+fi
|
|
+
|
|
# Substitute configuration variables
|
|
|
|
|
|
Index: gcc-4.5/gcc/configure.ac
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/configure.ac 2010-09-23 16:44:11.000000000 -0700
|
|
+++ gcc-4.5/gcc/configure.ac 2010-09-23 16:46:33.576417624 -0700
|
|
@@ -4439,6 +4439,16 @@ else
|
|
fi)
|
|
AC_SUBST(slibdir)
|
|
|
|
+AC_ARG_ENABLE([poison-system-directories],
|
|
+ AS_HELP_STRING([--enable-poison-system-directories],
|
|
+ [warn for use of native system header directories]),,
|
|
+ [enable_poison_system_directories=no])
|
|
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
|
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
|
+ [1],
|
|
+ [Define to warn for use of native system header directories])
|
|
+fi
|
|
+
|
|
# Substitute configuration variables
|
|
AC_SUBST(subdirs)
|
|
AC_SUBST(srcdir)
|
|
Index: gcc-4.5/gcc/doc/invoke.texi
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/doc/invoke.texi 2010-09-23 15:33:28.000000000 -0700
|
|
+++ gcc-4.5/gcc/doc/invoke.texi 2010-09-23 16:46:33.584416934 -0700
|
|
@@ -252,6 +252,7 @@ Objective-C and Objective-C++ Dialects}.
|
|
-Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol
|
|
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
|
|
-Wpointer-arith -Wno-pointer-to-int-cast @gol
|
|
+-Wno-poison-system-directories @gol
|
|
-Wredundant-decls @gol
|
|
-Wreturn-type -Wsequence-point -Wshadow @gol
|
|
-Wsign-compare -Wsign-conversion -Wstack-protector @gol
|
|
@@ -3603,6 +3604,14 @@ code. However, note that using @option{
|
|
option will @emph{not} warn about unknown pragmas in system
|
|
headers---for that, @option{-Wunknown-pragmas} must also be used.
|
|
|
|
+@item -Wno-poison-system-directories
|
|
+@opindex Wno-poison-system-directories
|
|
+Do not warn for @option{-I} or @option{-L} options using system
|
|
+directories such as @file{/usr/include} when cross compiling. This
|
|
+option is intended for use in chroot environments when such
|
|
+directories contain the correct headers and libraries for the target
|
|
+system rather than the host.
|
|
+
|
|
@item -Wfloat-equal
|
|
@opindex Wfloat-equal
|
|
@opindex Wno-float-equal
|
|
Index: gcc-4.5/gcc/gcc.c
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/gcc.c 2010-07-11 16:14:46.000000000 -0700
|
|
+++ gcc-4.5/gcc/gcc.c 2010-09-23 16:46:33.588417920 -0700
|
|
@@ -792,6 +792,8 @@ proper position among the other output f
|
|
%{flto} %{fwhopr} %l " LINK_PIE_SPEC \
|
|
"%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
|
|
%{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
|
|
+ %{Wno-poison-system-directories:--no-poison-system-directories}\
|
|
+ %{Werror=poison-system-directories:--error-poison-system-directories}\
|
|
%{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
|
|
%{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)\
|
|
%{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\
|
|
Index: gcc-4.5/gcc/incpath.c
|
|
===================================================================
|
|
--- gcc-4.5.orig/gcc/incpath.c 2010-07-11 16:14:44.000000000 -0700
|
|
+++ gcc-4.5/gcc/incpath.c 2010-09-23 16:46:33.588417920 -0700
|
|
@@ -30,6 +30,8 @@
|
|
#include "intl.h"
|
|
#include "incpath.h"
|
|
#include "cppdefault.h"
|
|
+#include "flags.h"
|
|
+#include "toplev.h"
|
|
|
|
/* Microsoft Windows does not natively support inodes.
|
|
VMS has non-numeric inodes. */
|
|
@@ -353,6 +355,24 @@ merge_include_chains (const char *sysroo
|
|
}
|
|
fprintf (stderr, _("End of search list.\n"));
|
|
}
|
|
+
|
|
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
|
|
+ if (flag_poison_system_directories)
|
|
+ {
|
|
+ struct cpp_dir *p;
|
|
+
|
|
+ for (p = heads[QUOTE]; p; p = p->next)
|
|
+ {
|
|
+ if ((!strncmp (p->name, "/usr/include", 12))
|
|
+ || (!strncmp (p->name, "/usr/local/include", 18))
|
|
+ || (!strncmp (p->name, "/usr/X11R6/include", 18)))
|
|
+ warning (OPT_Wpoison_system_directories,
|
|
+ "include location \"%s\" is unsafe for "
|
|
+ "cross-compilation",
|
|
+ p->name);
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
}
|
|
|
|
/* Use given -I paths for #include "..." but not #include <...>, and
|