diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-9.3/0002-gcc-poison-system-directories.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-9.3/0002-gcc-poison-system-directories.patch | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-9.3/0002-gcc-poison-system-directories.patch b/meta/recipes-devtools/gcc/gcc-9.3/0002-gcc-poison-system-directories.patch new file mode 100644 index 0000000000..f427ee67c1 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-9.3/0002-gcc-poison-system-directories.patch | |||
@@ -0,0 +1,203 @@ | |||
1 | From 5368cd0293ce50a69ced6e4b25ba6c8d8e014256 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Fri, 29 Mar 2013 08:59:00 +0400 | ||
4 | Subject: [PATCH 02/39] gcc: poison-system-directories | ||
5 | |||
6 | Add /sw/include and /opt/include based on the original | ||
7 | zecke-no-host-includes.patch patch. The original patch checked for | ||
8 | /usr/include, /sw/include and /opt/include and then triggered a failure and | ||
9 | aborted. | ||
10 | |||
11 | Instead, we add the two missing items to the current scan. If the user | ||
12 | wants this to be a failure, they can add "-Werror=poison-system-directories". | ||
13 | |||
14 | Signed-off-by: Mark Hatle <mark.hatle@windriver.com> | ||
15 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
16 | |||
17 | Upstream-Status: Pending | ||
18 | --- | ||
19 | gcc/common.opt | 4 ++++ | ||
20 | gcc/config.in | 6 ++++++ | ||
21 | gcc/configure | 16 ++++++++++++++++ | ||
22 | gcc/configure.ac | 10 ++++++++++ | ||
23 | gcc/doc/invoke.texi | 9 +++++++++ | ||
24 | gcc/gcc.c | 2 ++ | ||
25 | gcc/incpath.c | 21 +++++++++++++++++++++ | ||
26 | 7 files changed, 68 insertions(+) | ||
27 | |||
28 | diff --git a/gcc/common.opt b/gcc/common.opt | ||
29 | index d342c4f3749..c64fd4a6c50 100644 | ||
30 | --- a/gcc/common.opt | ||
31 | +++ b/gcc/common.opt | ||
32 | @@ -684,6 +684,10 @@ Wreturn-local-addr | ||
33 | Common Var(warn_return_local_addr) Init(1) Warning | ||
34 | Warn about returning a pointer/reference to a local or temporary variable. | ||
35 | |||
36 | +Wpoison-system-directories | ||
37 | +Common Var(flag_poison_system_directories) Init(1) Warning | ||
38 | +Warn for -I and -L options using system directories if cross compiling | ||
39 | + | ||
40 | Wshadow | ||
41 | Common Var(warn_shadow) Warning | ||
42 | Warn when one variable shadows another. Same as -Wshadow=global. | ||
43 | diff --git a/gcc/config.in b/gcc/config.in | ||
44 | index a718ceaf3da..5713342efb1 100644 | ||
45 | --- a/gcc/config.in | ||
46 | +++ b/gcc/config.in | ||
47 | @@ -200,6 +200,12 @@ | ||
48 | #endif | ||
49 | |||
50 | |||
51 | +/* Define to warn for use of native system header directories */ | ||
52 | +#ifndef USED_FOR_TARGET | ||
53 | +#undef ENABLE_POISON_SYSTEM_DIRECTORIES | ||
54 | +#endif | ||
55 | + | ||
56 | + | ||
57 | /* Define if you want all operations on RTL (the basic data structure of the | ||
58 | optimizer and back end) to be checked for dynamic type safety at runtime. | ||
59 | This is quite expensive. */ | ||
60 | diff --git a/gcc/configure b/gcc/configure | ||
61 | index a065ba23728..2e26dd33310 100755 | ||
62 | --- a/gcc/configure | ||
63 | +++ b/gcc/configure | ||
64 | @@ -996,6 +996,7 @@ with_system_zlib | ||
65 | enable_maintainer_mode | ||
66 | enable_link_mutex | ||
67 | enable_version_specific_runtime_libs | ||
68 | +enable_poison_system_directories | ||
69 | enable_plugin | ||
70 | enable_host_shared | ||
71 | enable_libquadmath_support | ||
72 | @@ -1749,6 +1750,8 @@ Optional Features: | ||
73 | --enable-version-specific-runtime-libs | ||
74 | specify that runtime libraries should be installed | ||
75 | in a compiler-specific directory | ||
76 | + --enable-poison-system-directories | ||
77 | + warn for use of native system header directories | ||
78 | --enable-plugin enable plugin support | ||
79 | --enable-host-shared build host code as shared libraries | ||
80 | --disable-libquadmath-support | ||
81 | @@ -29753,6 +29756,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then : | ||
82 | fi | ||
83 | |||
84 | |||
85 | +# Check whether --enable-poison-system-directories was given. | ||
86 | +if test "${enable_poison_system_directories+set}" = set; then : | ||
87 | + enableval=$enable_poison_system_directories; | ||
88 | +else | ||
89 | + enable_poison_system_directories=no | ||
90 | +fi | ||
91 | + | ||
92 | +if test "x${enable_poison_system_directories}" = "xyes"; then | ||
93 | + | ||
94 | +$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h | ||
95 | + | ||
96 | +fi | ||
97 | + | ||
98 | # Substitute configuration variables | ||
99 | |||
100 | |||
101 | diff --git a/gcc/configure.ac b/gcc/configure.ac | ||
102 | index 3a7251102ef..12d1d04e645 100644 | ||
103 | --- a/gcc/configure.ac | ||
104 | +++ b/gcc/configure.ac | ||
105 | @@ -6380,6 +6380,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs, | ||
106 | [specify that runtime libraries should be | ||
107 | installed in a compiler-specific directory])]) | ||
108 | |||
109 | +AC_ARG_ENABLE([poison-system-directories], | ||
110 | + AS_HELP_STRING([--enable-poison-system-directories], | ||
111 | + [warn for use of native system header directories]),, | ||
112 | + [enable_poison_system_directories=no]) | ||
113 | +if test "x${enable_poison_system_directories}" = "xyes"; then | ||
114 | + AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], | ||
115 | + [1], | ||
116 | + [Define to warn for use of native system header directories]) | ||
117 | +fi | ||
118 | + | ||
119 | # Substitute configuration variables | ||
120 | AC_SUBST(subdirs) | ||
121 | AC_SUBST(srcdir) | ||
122 | diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi | ||
123 | index 0ab6c9c6449..c3d3d51a28f 100644 | ||
124 | --- a/gcc/doc/invoke.texi | ||
125 | +++ b/gcc/doc/invoke.texi | ||
126 | @@ -333,6 +333,7 @@ Objective-C and Objective-C++ Dialects}. | ||
127 | -Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wpadded @gol | ||
128 | -Wparentheses -Wno-pedantic-ms-format @gol | ||
129 | -Wplacement-new -Wplacement-new=@var{n} @gol | ||
130 | +-Wno-poison-system-directories @gol | ||
131 | -Wpointer-arith -Wpointer-compare -Wno-pointer-to-int-cast @gol | ||
132 | -Wno-pragmas -Wno-prio-ctor-dtor -Wredundant-decls @gol | ||
133 | -Wrestrict -Wno-return-local-addr @gol | ||
134 | @@ -6290,6 +6291,14 @@ made up of data only and thus requires no special treatment. But, for | ||
135 | most targets, it is made up of code and thus requires the stack to be | ||
136 | made executable in order for the program to work properly. | ||
137 | |||
138 | +@item -Wno-poison-system-directories | ||
139 | +@opindex Wno-poison-system-directories | ||
140 | +Do not warn for @option{-I} or @option{-L} options using system | ||
141 | +directories such as @file{/usr/include} when cross compiling. This | ||
142 | +option is intended for use in chroot environments when such | ||
143 | +directories contain the correct headers and libraries for the target | ||
144 | +system rather than the host. | ||
145 | + | ||
146 | @item -Wfloat-equal | ||
147 | @opindex Wfloat-equal | ||
148 | @opindex Wno-float-equal | ||
149 | diff --git a/gcc/gcc.c b/gcc/gcc.c | ||
150 | index 4f57765b012..a2601a6bb06 100644 | ||
151 | --- a/gcc/gcc.c | ||
152 | +++ b/gcc/gcc.c | ||
153 | @@ -1042,6 +1042,8 @@ proper position among the other output files. */ | ||
154 | "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \ | ||
155 | "%X %{o*} %{e*} %{N} %{n} %{r}\ | ||
156 | %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \ | ||
157 | + %{Wno-poison-system-directories:--no-poison-system-directories} \ | ||
158 | + %{Werror=poison-system-directories:--error-poison-system-directories} \ | ||
159 | %{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \ | ||
160 | VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \ | ||
161 | %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ | ||
162 | diff --git a/gcc/incpath.c b/gcc/incpath.c | ||
163 | index bcbe2082905..5752298bbf2 100644 | ||
164 | --- a/gcc/incpath.c | ||
165 | +++ b/gcc/incpath.c | ||
166 | @@ -26,6 +26,7 @@ | ||
167 | #include "intl.h" | ||
168 | #include "incpath.h" | ||
169 | #include "cppdefault.h" | ||
170 | +#include "diagnostic-core.h" | ||
171 | |||
172 | /* Microsoft Windows does not natively support inodes. | ||
173 | VMS has non-numeric inodes. */ | ||
174 | @@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose) | ||
175 | } | ||
176 | fprintf (stderr, _("End of search list.\n")); | ||
177 | } | ||
178 | + | ||
179 | +#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES | ||
180 | + if (flag_poison_system_directories) | ||
181 | + { | ||
182 | + struct cpp_dir *p; | ||
183 | + | ||
184 | + for (p = heads[INC_QUOTE]; p; p = p->next) | ||
185 | + { | ||
186 | + if ((!strncmp (p->name, "/usr/include", 12)) | ||
187 | + || (!strncmp (p->name, "/usr/local/include", 18)) | ||
188 | + || (!strncmp (p->name, "/usr/X11R6/include", 18)) | ||
189 | + || (!strncmp (p->name, "/sw/include", 11)) | ||
190 | + || (!strncmp (p->name, "/opt/include", 12))) | ||
191 | + warning (OPT_Wpoison_system_directories, | ||
192 | + "include location \"%s\" is unsafe for " | ||
193 | + "cross-compilation", | ||
194 | + p->name); | ||
195 | + } | ||
196 | + } | ||
197 | +#endif | ||
198 | } | ||
199 | |||
200 | /* Use given -I paths for #include "..." but not #include <...>, and | ||
201 | -- | ||
202 | 2.25.1 | ||
203 | |||