aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/bfdio.c13
2 files changed, 17 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 06a9f12..b3cefd9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-05-18 Jaydeep Chauhan <jaydeepchauhan1494@gmail.com>
+
+ PR 25713
+ * bfdio.c (_bfd_real_fopen): Convert UNIX style sirectory
+ separators into DOS style when creating a WIN32 fullpath.
+
2020-05-14 Nelson Chu <nelson.chu@sifive.com>
* elfnn-riscv.c (elfNN_riscv_mkobject): New function. We need this
diff --git a/bfd/bfdio.c b/bfd/bfdio.c
index 29834d9..bba8d89 100644
--- a/bfd/bfdio.c
+++ b/bfd/bfdio.c
@@ -120,13 +120,22 @@ _bfd_real_fopen (const char *filename, const char *modes)
if (filelen > MAX_PATH - 1)
{
- FILE *file;
- char* fullpath = (char *) malloc (filelen + 8);
+ FILE * file;
+ char * fullpath = (char *) malloc (filelen + 8);
+ int i;
/* Add a Microsoft recommended prefix that
will allow the extra-long path to work. */
strcpy (fullpath, "\\\\?\\");
strcat (fullpath, filename);
+
+ /* Convert any UNIX style path separators into the DOS form. */
+ for (i = 0, fullpath[i]; i++)
+ {
+ if (IS_UNIX_DIR_SEPARATOR (fullpath[i]))
+ fullpath[i] = '\\';
+ }
+
file = close_on_exec (fopen (fullpath, modes));
free (fullpath);
return file;