On Cygwin, gas opens binary files with r instead of rb.
This causes corruption when Cygwin is installed with CR/LF mode.
For example, the .incbin directive is broken :
$ cat bug.s
.incbin fic.bin
$ od -t x1 fic.bin
000 41 0d 0a 42
004
$ as bug.s -o bug.o
bug.s: Assembler messages:
bug.s:1: Warning: truncated file `fic.bin', 3 of 4 bytes read
$ objdump -s bug.o
bug.o: file format pe-i386
Contents of section .text:
410a4242 90909090 90909090 90909090 A.BB
It can easily be fixed in gas/as.h :
#ifndef FOPEN_WB
/* #if defined GO32 || defined __MINGW32__ */
#if defined GO32 || defined __MINGW32__ || defined __CYGWIN__
#include fopen-bin.h
#else
#include fopen-same.h
#endif
#endif
Can someone check in the above code ?
Note : It may be better to use something stronger like USE_BINARY_FOPEN like in
the file sysdep.h in bfd and ld.
Vincent
--
Summary: incbin broken on Cygwin CR/LF
Product: binutils
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: gas
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: vincent dot riviere at freesbee dot fr
CC: bug-binutils at gnu dot org
GCC build triplet: i686-pc-cygwin
GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin
http://sourceware.org/bugzilla/show_bug.cgi?id=2991
--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.
___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils