diff options
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch')
-rw-r--r-- | meta-oe/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch b/meta-oe/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch new file mode 100644 index 000000000..429e9ffd0 --- /dev/null +++ b/meta-oe/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch | |||
@@ -0,0 +1,29 @@ | |||
1 | diff -rupN gcc-4.2.orig/gcc/c-incpath.c gcc-4.2/gcc/c-incpath.c | ||
2 | --- gcc-4.2.orig/gcc/c-incpath.c 2007-09-01 11:28:30.000000000 -0400 | ||
3 | +++ gcc-4.2/gcc/c-incpath.c 2008-08-17 16:56:01.000000000 -0400 | ||
4 | @@ -340,13 +340,18 @@ add_path (char *path, int chain, int cxx | ||
5 | cpp_dir *p; | ||
6 | |||
7 | #if defined (HAVE_DOS_BASED_FILE_SYSTEM) | ||
8 | - /* Convert all backslashes to slashes. The native CRT stat() | ||
9 | - function does not recognize a directory that ends in a backslash | ||
10 | - (unless it is a drive root dir, such "c:\"). Forward slashes, | ||
11 | - trailing or otherwise, cause no problems for stat(). */ | ||
12 | - char* c; | ||
13 | - for (c = path; *c; c++) | ||
14 | - if (*c == '\\') *c = '/'; | ||
15 | + /* Remove unnecessary trailing slashes. On some versions of MS | ||
16 | + Windows, trailing _forward_ slashes cause no problems for stat(). | ||
17 | + On newer versions, stat() does not recognise a directory that ends | ||
18 | + in a '\\' or '/', unless it is a drive root dir, such as "c:/", | ||
19 | + where it is obligatory. */ | ||
20 | + int pathlen = strlen (path); | ||
21 | + char* end = path + pathlen - 1; | ||
22 | + /* Preserve the lead '/' or lead "c:/". */ | ||
23 | + char* start = path + (pathlen > 2 && path[1] == ':' ? 3 : 1); | ||
24 | + | ||
25 | + for (; end > start && IS_DIR_SEPARATOR (*end); end--) | ||
26 | + *end = 0; | ||
27 | #endif | ||
28 | |||
29 | p = XNEW (cpp_dir); | ||