This is the mail archive of the cygwin@sourceware.cygnus.com
mailing list for the Cygwin project. See the Cygwin
home page for more information.
[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]
Re: bug in strip 2.9.4
- To: "Pierre A. Humblet" <Pierre.Humblet@eurecom.fr>
- Subject: Re: bug in strip 2.9.4
- From: Mumit Khan <khan@xraylith.wisc.edu>
- Date: Sun, 28 Feb 1999 02:00:51 -0600 (CST)
- cc: bug-gnu-utils@gnu.org, cygwin@sourceware.cygnus.com
- Delivered-To: listarch-cygwin@sourceware.cygnus.com
- Delivered-To: mailing list cygwin@sourceware.cygnus.com
- In-Reply-To: <3.0.5.32.19990227183336.00812600@pop.ne.mediaone.net>
- Mailing-List: contact cygwin-help@sourceware.cygnus.com; run by ezmlm
- Sender: cygwin-owner@sourceware.cygnus.com
On Sat, 27 Feb 1999, Pierre A. Humblet wrote:
> strip 2.9.4 in Binutils-2.9 has a bug when stripping a file accessed through a link, on systems that open files by default in text mode (such as cygwin).
> The new executable file has an incorrect length.
>
> I believe the bug occurs in the file binutils/objcopy.c, in the function
> simple_copy. The open() and creat() below will open in text mode and the
> copy won't be properly executed for binary files.
>
> fromfd = open (from, O_RDONLY);
> if (fromfd < 0)
> return -1;
> tofd = creat (to, 0777);
>
Good catch. We could do something like the following:
int flags = O_RDONLY;
#ifdef O_BINARY
flags |= O_BINARY;
#endif
fromfd = open (from, flags);
if (fromfd < 0)
return -1;
tofd = creat (to, 0777);
As you note, we also need to handle the descriptor returned by creat
(which is somewhat equiv to open'ing with a few flags -- O_CREAT |
O_TRUNC | O_WRONLY).
How about just using setmode on both the descriptors? Would that work?
fromfd = open (from, O_RDONLY);
if (fromfd < 0)
return -1;
tofd = creat (to, 0777);
#if _WIN32
setmode (fromfd, O_BINARY);
setmode (tofd, O_BINARY);
#endif
Regards,
Mumit
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com