diff options
| author | Richard Purdie <richard@openedhand.com> | 2008-03-18 10:41:39 +0000 |
|---|---|---|
| committer | Richard Purdie <richard@openedhand.com> | 2008-03-18 10:41:39 +0000 |
| commit | 1255ee64ee58fb5f0acd0bdbf4f0a54afd5ceeaf (patch) | |
| tree | 293d34ede70b906b04967ac077e32a8fee4e855b /meta/packages/gcc/gcc-3.4.4 | |
| parent | 402c7dcb2790bd51de9436befe8c273e538be441 (diff) | |
| download | poky-1255ee64ee58fb5f0acd0bdbf4f0a54afd5ceeaf.tar.gz | |
gcc: Merge in the major cleanup I made in OE.dev
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4038 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/gcc/gcc-3.4.4')
3 files changed, 434 insertions, 0 deletions
diff --git a/meta/packages/gcc/gcc-3.4.4/GCOV_PREFIX_STRIP-cross-profile_3.4.patch b/meta/packages/gcc/gcc-3.4.4/GCOV_PREFIX_STRIP-cross-profile_3.4.patch new file mode 100644 index 0000000000..701a687e05 --- /dev/null +++ b/meta/packages/gcc/gcc-3.4.4/GCOV_PREFIX_STRIP-cross-profile_3.4.patch | |||
| @@ -0,0 +1,389 @@ | |||
| 1 | 2005-05-04 Grigory Zagorodnev <grigory.zagorodnev@intel.com> | ||
| 2 | H.J. Lu <hongjiu.lu@intel.com> | ||
| 3 | |||
| 4 | |||
| 5 | Cross-profiling support: relocate .gcda files when | ||
| 6 | running at system other than executable been built on. | ||
| 7 | |||
| 8 | |||
| 9 | * gcov-io.c (gcov_open): When in libgcov library | ||
| 10 | use given data file relocation prefix to build file name. | ||
| 11 | * gcov-io.h (gcov_open): Updated proto to accept | ||
| 12 | data file relocation prefix. | ||
| 13 | * libgcov.c (create_file_directory): New function. | ||
| 14 | (gcov_prefix): New static variable to hold data file | ||
| 15 | relocation prefix. | ||
| 16 | (gcov_version): Use relocation prefix. | ||
| 17 | (gcov_exit): Always try to create directory for output | ||
| 18 | file. Relocate filename at each use. | ||
| 19 | (__gcov_init): Initialize directory relocation prefix | ||
| 20 | if required. Strip off leading directories from | ||
| 21 | the initial filename. | ||
| 22 | * tsystem.h: include filenames.h | ||
| 23 | (DIR_SEPARATOR): Macro copied from system.h. | ||
| 24 | (DIR_SEPARATOR_2): Likewise. | ||
| 25 | * doc/gcov.texi (Cross-profiling): New node documenting | ||
| 26 | cross-profiling management. | ||
| 27 | * doc/invoke.texi (-fprofile-arcs): xref to cross-profiling. | ||
| 28 | |||
| 29 | Grigory Zagorodnev | ||
| 30 | Intel Corporation | ||
| 31 | |||
| 32 | --- gcc-3.4/gcc/gcov-io.c.prefix 2004-02-26 13:54:47.000000000 -0800 | ||
| 33 | +++ gcc-3.4/gcc/gcov-io.c 2005-05-04 11:46:01.000000000 -0700 | ||
| 34 | @@ -55,13 +55,14 @@ static inline gcov_unsigned_t from_file | ||
| 35 | |||
| 36 | GCOV_LINKAGE int | ||
| 37 | #if IN_LIBGCOV | ||
| 38 | -gcov_open (const char *name) | ||
| 39 | +gcov_open (const char *prefix, const char *name) | ||
| 40 | #else | ||
| 41 | gcov_open (const char *name, int mode) | ||
| 42 | #endif | ||
| 43 | { | ||
| 44 | #if IN_LIBGCOV | ||
| 45 | const int mode = 0; | ||
| 46 | + char *tmp; | ||
| 47 | #endif | ||
| 48 | #if GCOV_LOCKED | ||
| 49 | struct flock s_flock; | ||
| 50 | @@ -83,6 +84,14 @@ gcov_open (const char *name, int mode) | ||
| 51 | #if !IN_LIBGCOV | ||
| 52 | gcov_var.endian = 0; | ||
| 53 | #endif | ||
| 54 | + | ||
| 55 | +#if IN_LIBGCOV | ||
| 56 | + /* Build complete filename with prefix */ | ||
| 57 | + tmp = alloca( strlen(prefix) + strlen(name) + 1); | ||
| 58 | + *tmp = '\0'; | ||
| 59 | + name = strcat( strcat(tmp, prefix), name); | ||
| 60 | +#endif | ||
| 61 | + | ||
| 62 | #if GCOV_LOCKED | ||
| 63 | if (mode > 0) | ||
| 64 | fd = open (name, O_RDWR); | ||
| 65 | --- gcc-3.4/gcc/gcov-io.h.prefix 2005-05-02 15:37:58.000000000 -0700 | ||
| 66 | +++ gcc-3.4/gcc/gcov-io.h 2005-05-04 11:46:01.000000000 -0700 | ||
| 67 | @@ -502,7 +502,7 @@ GCOV_LINKAGE struct gcov_var | ||
| 68 | functions for writing. Your file may become corrupted if you break | ||
| 69 | these invariants. */ | ||
| 70 | #if IN_LIBGCOV | ||
| 71 | -GCOV_LINKAGE int gcov_open (const char */*name*/) ATTRIBUTE_HIDDEN; | ||
| 72 | +GCOV_LINKAGE int gcov_open (const char */*prefix*/, const char */*name*/) ATTRIBUTE_HIDDEN; | ||
| 73 | #else | ||
| 74 | GCOV_LINKAGE int gcov_open (const char */*name*/, int /*direction*/); | ||
| 75 | GCOV_LINKAGE int gcov_magic (gcov_unsigned_t, gcov_unsigned_t); | ||
| 76 | --- gcc-3.4/gcc/libgcov.c.prefix 2004-02-26 13:54:47.000000000 -0800 | ||
| 77 | +++ gcc-3.4/gcc/libgcov.c 2005-05-04 12:01:58.000000000 -0700 | ||
| 78 | @@ -92,6 +92,70 @@ static struct gcov_info *gcov_list; | ||
| 79 | object file included in multiple programs. */ | ||
| 80 | static gcov_unsigned_t gcov_crc32; | ||
| 81 | |||
| 82 | +/* Directory prefix to relocate coverage data file names */ | ||
| 83 | +static char *gcov_prefix = 0; | ||
| 84 | + | ||
| 85 | +/* Level of dirs to strip off the initial filename to relocate */ | ||
| 86 | +static int gcov_prefix_strip = 0; | ||
| 87 | + | ||
| 88 | +static int | ||
| 89 | +create_file_directory (const char *prefix, const char *filename) | ||
| 90 | +{ | ||
| 91 | + char *dname; | ||
| 92 | + char sep, *r, *s; | ||
| 93 | + size_t plen, flen; | ||
| 94 | + | ||
| 95 | + /* Detect directory separator */ | ||
| 96 | + s = strrchr (prefix, DIR_SEPARATOR); | ||
| 97 | +#ifdef DIR_SEPARATOR_2 | ||
| 98 | + if (! s) | ||
| 99 | + s = strrchr (prefix, DIR_SEPARATOR_2); | ||
| 100 | +#endif | ||
| 101 | + if (s) | ||
| 102 | + sep = *s; | ||
| 103 | + else | ||
| 104 | + sep = DIR_SEPARATOR; | ||
| 105 | + | ||
| 106 | + /* join prefix and filename, split path */ | ||
| 107 | + plen = strlen(prefix); | ||
| 108 | + flen = strlen(filename); | ||
| 109 | + r = alloca(plen + flen + 1); | ||
| 110 | + strncpy(r, prefix, plen); | ||
| 111 | + strncpy(r + plen, filename, flen); | ||
| 112 | + r[plen + flen] = '\0'; | ||
| 113 | + s = strrchr(r, sep); | ||
| 114 | + if (s) | ||
| 115 | + *(s + 1) = '\0'; | ||
| 116 | + | ||
| 117 | + if (access (r, F_OK) == 0) | ||
| 118 | + return 0; | ||
| 119 | + | ||
| 120 | + /* Skip consecutive separators. */ | ||
| 121 | + for (dname = r; *dname && *dname == sep; ++dname); | ||
| 122 | + while (1) | ||
| 123 | + { | ||
| 124 | + char *s = strchr (dname, sep); | ||
| 125 | + if (s == 0) | ||
| 126 | + break; | ||
| 127 | + *s = '\0'; | ||
| 128 | + /* Try to make directory if it doesn't already exist. */ | ||
| 129 | + if (access (r, F_OK) == -1 | ||
| 130 | + && mkdir (r, 0755) == -1 | ||
| 131 | + /* The directory might have been made by another process. */ | ||
| 132 | + && errno != EEXIST) | ||
| 133 | + { | ||
| 134 | + *s = sep; | ||
| 135 | + fprintf (stderr, "profiling:%s:Cannot create directory\n", r); | ||
| 136 | + return -1; | ||
| 137 | + }; | ||
| 138 | + *s = sep; | ||
| 139 | + /* Skip consecutive separators. */ | ||
| 140 | + for (dname = s + 1; *dname && *dname == sep; ++dname) | ||
| 141 | + ; | ||
| 142 | + } | ||
| 143 | + return 0; | ||
| 144 | +} | ||
| 145 | + | ||
| 146 | static int | ||
| 147 | gcov_version (struct gcov_info *ptr, gcov_unsigned_t version) | ||
| 148 | { | ||
| 149 | @@ -103,8 +167,8 @@ gcov_version (struct gcov_info *ptr, gco | ||
| 150 | GCOV_UNSIGNED2STRING (e, GCOV_VERSION); | ||
| 151 | |||
| 152 | fprintf (stderr, | ||
| 153 | - "profiling:%s:Version mismatch - expected %.4s got %.4s\n", | ||
| 154 | - ptr->filename, e, v); | ||
| 155 | + "profiling:%s%s:Version mismatch - expected %.4s got %.4s\n", | ||
| 156 | + gcov_prefix, ptr->filename, e, v); | ||
| 157 | return 0; | ||
| 158 | } | ||
| 159 | return 1; | ||
| 160 | @@ -204,9 +268,14 @@ gcov_exit (void) | ||
| 161 | fi_stride &= ~(__alignof__ (struct gcov_fn_info) - 1); | ||
| 162 | } | ||
| 163 | |||
| 164 | - if (!gcov_open (gi_ptr->filename)) | ||
| 165 | + if (create_file_directory (gcov_prefix, gi_ptr->filename)) | ||
| 166 | { | ||
| 167 | - fprintf (stderr, "profiling:%s:Cannot open\n", gi_ptr->filename); | ||
| 168 | + fprintf (stderr, "profiling:%s%s:Skip\n", gcov_prefix, gi_ptr->filename); | ||
| 169 | + continue; | ||
| 170 | + } | ||
| 171 | + else if (!gcov_open (gcov_prefix, gi_ptr->filename)) | ||
| 172 | + { | ||
| 173 | + fprintf (stderr, "profiling:%s%s:Cannot open\n", gcov_prefix, gi_ptr->filename); | ||
| 174 | continue; | ||
| 175 | } | ||
| 176 | |||
| 177 | @@ -216,8 +285,8 @@ gcov_exit (void) | ||
| 178 | /* Merge data from file. */ | ||
| 179 | if (tag != GCOV_DATA_MAGIC) | ||
| 180 | { | ||
| 181 | - fprintf (stderr, "profiling:%s:Not a gcov data file\n", | ||
| 182 | - gi_ptr->filename); | ||
| 183 | + fprintf (stderr, "profiling:%s%s:Not a gcov data file\n", | ||
| 184 | + gcov_prefix, gi_ptr->filename); | ||
| 185 | read_fatal:; | ||
| 186 | gcov_close (); | ||
| 187 | continue; | ||
| 188 | @@ -250,8 +319,8 @@ gcov_exit (void) | ||
| 189 | || gcov_read_unsigned () != fi_ptr->checksum) | ||
| 190 | { | ||
| 191 | read_mismatch:; | ||
| 192 | - fprintf (stderr, "profiling:%s:Merge mismatch for %s\n", | ||
| 193 | - gi_ptr->filename, | ||
| 194 | + fprintf (stderr, "profiling:%s%s:Merge mismatch for %s\n", | ||
| 195 | + gcov_prefix, gi_ptr->filename, | ||
| 196 | f_ix + 1 ? "function" : "summaries"); | ||
| 197 | goto read_fatal; | ||
| 198 | } | ||
| 199 | @@ -309,8 +378,8 @@ gcov_exit (void) | ||
| 200 | if (!gcov_is_eof ()) | ||
| 201 | { | ||
| 202 | read_error:; | ||
| 203 | - fprintf (stderr, error < 0 ? "profiling:%s:Overflow merging\n" | ||
| 204 | - : "profiling:%s:Error merging\n", gi_ptr->filename); | ||
| 205 | + fprintf (stderr, error < 0 ? "profiling:%s%s:Overflow merging\n" | ||
| 206 | + : "profiling:%s%s:Error merging\n", gcov_prefix, gi_ptr->filename); | ||
| 207 | goto read_fatal; | ||
| 208 | } | ||
| 209 | rewrite:; | ||
| 210 | @@ -357,8 +426,8 @@ gcov_exit (void) | ||
| 211 | && (!GCOV_LOCKED || cs_all->runs == cs_prg->runs) | ||
| 212 | && memcmp (cs_all, cs_prg, sizeof (*cs_all))) | ||
| 213 | { | ||
| 214 | - fprintf (stderr, "profiling:%s:Invocation mismatch - some data files may have been removed%s", | ||
| 215 | - gi_ptr->filename, GCOV_LOCKED | ||
| 216 | + fprintf (stderr, "profiling:%s%s:Invocation mismatch - some data files may have been removed%s", | ||
| 217 | + gcov_prefix, gi_ptr->filename, GCOV_LOCKED | ||
| 218 | ? "" : " or concurrent update without locking support"); | ||
| 219 | all.checksum = ~0u; | ||
| 220 | } | ||
| 221 | @@ -418,9 +487,9 @@ gcov_exit (void) | ||
| 222 | gcov_write_summary (GCOV_TAG_PROGRAM_SUMMARY, &program); | ||
| 223 | if ((error = gcov_close ())) | ||
| 224 | fprintf (stderr, error < 0 ? | ||
| 225 | - "profiling:%s:Overflow writing\n" : | ||
| 226 | - "profiling:%s:Error writing\n", | ||
| 227 | - gi_ptr->filename); | ||
| 228 | + "profiling:%s%s:Overflow writing\n" : | ||
| 229 | + "profiling:%s%s:Error writing\n", | ||
| 230 | + gcov_prefix, gi_ptr->filename); | ||
| 231 | } | ||
| 232 | } | ||
| 233 | |||
| 234 | @@ -430,11 +499,69 @@ gcov_exit (void) | ||
| 235 | void | ||
| 236 | __gcov_init (struct gcov_info *info) | ||
| 237 | { | ||
| 238 | + /* Save initial filename pointer to calculate CRC. */ | ||
| 239 | + const char *ptr = info->filename; | ||
| 240 | + | ||
| 241 | if (!info->version) | ||
| 242 | return; | ||
| 243 | + | ||
| 244 | + /* Initialize directory prefix if requred */ | ||
| 245 | + if (gcov_prefix == 0) | ||
| 246 | + { | ||
| 247 | + if ((gcov_prefix = getenv("GCOV_PREFIX"))) | ||
| 248 | + { | ||
| 249 | + char *tmp; | ||
| 250 | + | ||
| 251 | + /* Normalize prefix: take off trailing separator. */ | ||
| 252 | + tmp = gcov_prefix + strlen(gcov_prefix) - 1; | ||
| 253 | + if (IS_DIR_SEPARATOR(*tmp)) | ||
| 254 | + *tmp = '\0'; | ||
| 255 | + | ||
| 256 | + /* Check if the level of dirs to strip off specified */ | ||
| 257 | + if ((tmp = getenv("GCOV_PREFIX_STRIP"))) | ||
| 258 | + { | ||
| 259 | + gcov_prefix_strip = atoi (tmp); | ||
| 260 | + /* Do not consider negative values. */ | ||
| 261 | + if (gcov_prefix_strip < 0) | ||
| 262 | + gcov_prefix_strip = 0; | ||
| 263 | + }; | ||
| 264 | + } | ||
| 265 | + else | ||
| 266 | + gcov_prefix = (char *) ""; | ||
| 267 | + }; | ||
| 268 | + | ||
| 269 | + /* Strip off leading directories from the initial filename */ | ||
| 270 | + if (gcov_prefix_strip > 0) | ||
| 271 | + { | ||
| 272 | + char sep, *s; | ||
| 273 | + int level; | ||
| 274 | + const char *fname = info->filename; | ||
| 275 | + | ||
| 276 | + /* Detect directory separator */ | ||
| 277 | + s = strrchr (fname, DIR_SEPARATOR); | ||
| 278 | +#ifdef DIR_SEPARATOR_2 | ||
| 279 | + if (! s) | ||
| 280 | + s = strrchr (fname, DIR_SEPARATOR_2); | ||
| 281 | +#endif | ||
| 282 | + if (s) | ||
| 283 | + sep = *s; | ||
| 284 | + else | ||
| 285 | + sep = DIR_SEPARATOR; | ||
| 286 | + | ||
| 287 | + /* Skip selected directory levels */ | ||
| 288 | + for ( level = gcov_prefix_strip; level > 0; level--) | ||
| 289 | + if ((s = strchr(fname + 1, sep))) | ||
| 290 | + fname = s; | ||
| 291 | + else | ||
| 292 | + break; | ||
| 293 | + | ||
| 294 | + /* From this point info block refers stripped file name and | ||
| 295 | + further operations must add prefix to get complete name.*/ | ||
| 296 | + info->filename = fname; | ||
| 297 | + }; | ||
| 298 | + | ||
| 299 | if (gcov_version (info, info->version)) | ||
| 300 | { | ||
| 301 | - const char *ptr = info->filename; | ||
| 302 | gcov_unsigned_t crc32 = gcov_crc32; | ||
| 303 | |||
| 304 | do | ||
| 305 | --- gcc-3.4/gcc/tsystem.h.prefix 2003-11-12 16:07:48.000000000 -0800 | ||
| 306 | +++ gcc-3.4/gcc/tsystem.h 2005-05-04 12:12:08.000000000 -0700 | ||
| 307 | @@ -106,4 +106,15 @@ extern int errno; | ||
| 308 | #define NULL 0 | ||
| 309 | #endif | ||
| 310 | |||
| 311 | +/* Filename handling macros. */ | ||
| 312 | +#include "filenames.h" | ||
| 313 | + | ||
| 314 | +/* These should be phased out in favor of IS_DIR_SEPARATOR, where possible. */ | ||
| 315 | +#ifndef DIR_SEPARATOR | ||
| 316 | +# define DIR_SEPARATOR '/' | ||
| 317 | +# ifdef HAVE_DOS_BASED_FILE_SYSTEM | ||
| 318 | +# define DIR_SEPARATOR_2 '\\' | ||
| 319 | +# endif | ||
| 320 | +#endif | ||
| 321 | + | ||
| 322 | #endif /* ! GCC_TSYSTEM_H */ | ||
| 323 | Index: gcc-3.4/gcc/doc/gcov.texi | ||
| 324 | =================================================================== | ||
| 325 | RCS file: /cvsroot/gcc/gcc/gcc/doc/gcov.texi,v | ||
| 326 | retrieving revision 1.19.4.3 | ||
| 327 | diff -u -p -r1.19.4.3 gcov.texi | ||
| 328 | --- gcc-3.4/gcc/doc/gcov.texi 14 Mar 2004 22:31:20 -0000 1.19.4.3 | ||
| 329 | +++ gcc-3.4/gcc/doc/gcov.texi 4 May 2005 13:44:25 -0000 | ||
| 330 | @@ -42,6 +42,7 @@ test code coverage in your programs. | ||
| 331 | * Invoking Gcov:: How to use gcov. | ||
| 332 | * Gcov and Optimization:: Using gcov with GCC optimization. | ||
| 333 | * Gcov Data Files:: The files used by gcov. | ||
| 334 | +* Cross-profiling:: Data files relocation. | ||
| 335 | @end menu | ||
| 336 | |||
| 337 | @node Gcov Intro | ||
| 338 | @@ -510,3 +511,36 @@ information. | ||
| 339 | The full details of the file format is specified in @file{gcov-io.h}, | ||
| 340 | and functions provided in that header file should be used to access the | ||
| 341 | coverage files. | ||
| 342 | + | ||
| 343 | +@node Cross-profiling | ||
| 344 | +@section Data files relocation to support cross-profiling | ||
| 345 | + | ||
| 346 | +Running the program will cause profile output to be generated. For each | ||
| 347 | +source file compiled with @option{-fprofile-arcs}, an accompanying @file{.gcda} | ||
| 348 | +file will be placed in the object file directory. That implicitly requires | ||
| 349 | +running the program at the same system as it was build or having same | ||
| 350 | +absolute directory structure on the target system (program will try | ||
| 351 | +to create needed directory structure). | ||
| 352 | + | ||
| 353 | +To support cross-profiling, program compiled with @option{-fprofile-arcs} | ||
| 354 | +performs data file relocation basing on two environment variables: | ||
| 355 | + | ||
| 356 | +@itemize @bullet | ||
| 357 | +@item | ||
| 358 | +GCOV_PREFIX contains the prefix to add to the absolute paths | ||
| 359 | +in the object file. | ||
| 360 | + | ||
| 361 | +@item | ||
| 362 | +GCOV_PREFIX_STRIP indicates the how many initial directory names to strip off | ||
| 363 | +the hardwired absolute paths. Default value is 0. | ||
| 364 | +@end itemize | ||
| 365 | + | ||
| 366 | +For example, if object file @file{/user/build/foo.o} was build with | ||
| 367 | +@option{-fprofile-arcs}, the final executable will try to create data file | ||
| 368 | +@file{/user/build/foo.gcda} when running at the target system and will | ||
| 369 | +fail if corresponding directory does not exists and is not allowed to create. | ||
| 370 | + | ||
| 371 | +In this case, manipulating environment variables you can relocate data file | ||
| 372 | +to the suitable local directory. For our example, setting @samp{GCOV_PREFIX=/target/run} | ||
| 373 | +and @samp{GCOV_PREFIX_STRIP=1} values will force use of @file{/target/run/build/foo.gcda} | ||
| 374 | +file name. | ||
| 375 | Index: gcc-3.4/gcc/doc/invoke.texi | ||
| 376 | =================================================================== | ||
| 377 | RCS file: /cvsroot/gcc/gcc/gcc/doc/invoke.texi,v | ||
| 378 | retrieving revision 1.390.2.40 | ||
| 379 | diff -u -p -r1.390.2.40 invoke.texi | ||
| 380 | --- gcc-3.4/gcc/doc/invoke.texi 22 Apr 2005 06:49:59 -0000 1.390.2.40 | ||
| 381 | +++ gcc-3.4/gcc/doc/invoke.texi 4 May 2005 13:44:25 -0000 | ||
| 382 | @@ -3158,6 +3158,7 @@ explicitly specified and it is not the f | ||
| 383 | the basename of the source file. In both cases any suffix is removed | ||
| 384 | (e.g. @file{foo.gcda} for input file @file{dir/foo.c}, or | ||
| 385 | @file{dir/foo.gcda} for output file specified as @option{-o dir/foo.o}). | ||
| 386 | +@xref{Cross-profiling}. | ||
| 387 | |||
| 388 | @itemize | ||
| 389 | |||
diff --git a/meta/packages/gcc/gcc-3.4.4/zecke-no-host-includes.patch b/meta/packages/gcc/gcc-3.4.4/zecke-no-host-includes.patch new file mode 100644 index 0000000000..069a965012 --- /dev/null +++ b/meta/packages/gcc/gcc-3.4.4/zecke-no-host-includes.patch | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | Index: gcc-3.4.4/gcc/c-incpath.c | ||
| 2 | =================================================================== | ||
| 3 | --- gcc-3.4.4.orig/gcc/c-incpath.c 2004-05-31 12:37:47.000000000 +0200 | ||
| 4 | +++ gcc-3.4.4/gcc/c-incpath.c 2006-05-15 20:07:31.000000000 +0200 | ||
| 5 | @@ -328,6 +328,27 @@ | ||
| 6 | else | ||
| 7 | heads[chain] = p; | ||
| 8 | tails[chain] = p; | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +#ifdef CROSS_COMPILE | ||
| 12 | + /* A common error when cross compiling is including | ||
| 13 | + host headers. This code below will try to fail fast | ||
| 14 | + for cross compiling. Currently we consider /usr/include, | ||
| 15 | + /opt/include and /sw/include as harmful. */ | ||
| 16 | + { | ||
| 17 | + /* printf("Adding Path: %s\n", p->name ); */ | ||
| 18 | + if( strstr(p->name, "/usr/include" ) == p->name ) { | ||
| 19 | + fprintf(stderr, _("CROSS COMPILE Badness: /usr/include in INCLUDEPATH: %s\n"), p->name); | ||
| 20 | + abort(); | ||
| 21 | + } else if( strstr(p->name, "/sw/include") == p->name ) { | ||
| 22 | + fprintf(stderr, _("CROSS COMPILE Badness: /sw/include in INCLUDEPATH: %s\n"), p->name); | ||
| 23 | + abort(); | ||
| 24 | + } else if( strstr(p->name, "/opt/include") == p->name ) { | ||
| 25 | + fprintf(stderr, _("CROSS COMPILE Badness: /opt/include in INCLUDEPATH: %s\n"), p->name); | ||
| 26 | + abort(); | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | +#endif | ||
| 30 | } | ||
| 31 | |||
| 32 | /* Exported function to handle include chain merging, duplicate | ||
diff --git a/meta/packages/gcc/gcc-3.4.4/zecke-xgcc-cpp.patch b/meta/packages/gcc/gcc-3.4.4/zecke-xgcc-cpp.patch new file mode 100644 index 0000000000..ab6a3fd771 --- /dev/null +++ b/meta/packages/gcc/gcc-3.4.4/zecke-xgcc-cpp.patch | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | Index: gcc-3.4.4/Makefile.in | ||
| 2 | =================================================================== | ||
| 3 | --- gcc-3.4.4.orig/Makefile.in 2005-05-19 11:58:00.000000000 +0200 | ||
| 4 | +++ gcc-3.4.4/Makefile.in 2006-08-06 13:08:14.000000000 +0200 | ||
| 5 | @@ -21964,6 +21964,8 @@ | ||
| 6 | AS="$(AS_FOR_TARGET)"; export AS; \ | ||
| 7 | CC="$(CC_FOR_TARGET)"; export CC; \ | ||
| 8 | CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ | ||
| 9 | + CPP="$(CC_FOR_TARGET) -E"; export CCP; \ | ||
| 10 | + CPPFLAGS=""; export CPPFLAGS; \ | ||
| 11 | CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ | ||
| 12 | CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \ | ||
| 13 | CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ | ||
