2010-01-11 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
authorhutchinsonandy <hutchinsonandy@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jan 2010 23:15:32 +0000 (23:15 +0000)
committerhutchinsonandy <hutchinsonandy@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jan 2010 23:15:32 +0000 (23:15 +0000)
   * lto.c (O_BINARY): Define.
   (lto_read_section_data): Open file in binary mode.
   * lto-elf.c (O_BINARY): Define.
   (lto_elf_file_open): Open file in binary mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155820 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/lto/ChangeLog
gcc/lto/lto-elf.c
gcc/lto/lto.c

index 5e52527..a726d32 100644 (file)
@@ -1,3 +1,10 @@
+2010-01-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
+
+       * lto.c (O_BINARY): Define.
+       (lto_read_section_data): Open file in binary mode.
+       * lto-elf.c (O_BINARY): Define.
+       (lto_elf_file_open): Open file in binary mode. 
+
 2010-01-08  Richard Guenther  <rguenther@suse.de>
 
        PR lto/42528
index 0311dde..b70648d 100644 (file)
@@ -29,6 +29,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "ggc.h"
 #include "lto-streamer.h"
 
+/* Handle opening elf files on hosts, such as Windows, that may use 
+   text file handling that will break binary access.  */
+
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+
 
 /* Initialize FILE, an LTO file object for FILENAME.  */
 static void
@@ -580,7 +587,8 @@ lto_elf_file_open (const char *filename, bool writable)
   elf_file->fd = -1;
 
   /* Open the file.  */
-  elf_file->fd = open (fname, writable ? O_WRONLY|O_CREAT : O_RDONLY, 0666);
+  elf_file->fd = open (fname, writable ? O_WRONLY|O_CREAT|O_BINARY 
+                                      : O_RDONLY|O_BINARY, 0666);
   if (elf_file->fd == -1)
     {
       error ("could not open file %s", fname);
index 1608e56..de53a09 100644 (file)
@@ -50,6 +50,14 @@ along with GCC; see the file COPYING3.  If not see
 #include <sys/mman.h>
 #endif
 
+/* Handle opening elf files on hosts, such as Windows, that may use 
+   text file handling that will break binary access.  */
+
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+
+
 DEF_VEC_P(bitmap);
 DEF_VEC_ALLOC_P(bitmap,heap);
 
@@ -421,7 +429,7 @@ lto_read_section_data (struct lto_file_decl_data *file_data,
   if (fd == -1)
     {
       fd_name = xstrdup (file_data->file_name);
-      fd = open (file_data->file_name, O_RDONLY);
+      fd = open (file_data->file_name, O_RDONLY|O_BINARY);
       if (fd == -1)
        return NULL;
     }