Fix the BFD library to handle Windows pathnames with more than 260 characters and UNIX style directory separators.
PR 25713 * bfdio.c (_bfd_real_fopen): Convert UNIX style sirectory separators into DOS style when creating a WIN32 fullpath.
This commit is contained in:
parent
5e365e474b
commit
ca859a8939
@ -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
|
||||
|
13
bfd/bfdio.c
13
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;
|
||||
|
Loading…
Reference in New Issue
Block a user