blob: 697469d87751d0a92eead5c994fc74c2cfee0f7a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
diff -ruNb gcc-7.1.0.orig/libiberty/lrealpath.c gcc-7.1.0/libiberty/lrealpath.c
--- gcc-7.1.0.orig/libiberty/lrealpath.c 2017-01-04 12:30:51.000000000 +0100
+++ gcc-7.1.0/libiberty/lrealpath.c 2017-05-28 00:13:05.844315144 +0200
@@ -138,15 +138,26 @@
{
char buf[MAX_PATH];
char* basename;
+ char* slash;
DWORD len = GetFullPathName (filename, MAX_PATH, buf, &basename);
if (len == 0 || len > MAX_PATH - 1)
return strdup (filename);
else
{
- /* The file system is case-preserving but case-insensitive,
- Canonicalize to lowercase, using the codepage associated
- with the process locale. */
- CharLowerBuff (buf, len);
+ /* Turn all back slashes back back into forward slashes
+ and don't make it all lowercase.
+ Rationale:
+ Windows is as happy with / as it is with \. This will
+ have been built using Cygwin, MSYS* or cross-compiled
+ from a system where dirsep is / so it is cleaner just
+ to keep the dirseps as / (and the case un-modified).
+ This way, the value will be consistent with the build
+ system and string operations (be they internal to this
+ software or external to it, e.g. processing map files
+ with sed) work as expected. */
+ slash = buf;
+ while ((slash = strchr(slash,'\\')) != NULL)
+ *slash = '/';
return strdup (buf);
}
}
|