From b3e30ec04348f3c87f13a33918971cc5cbb20860 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Tue, 14 Dec 2004 22:48:53 +0000 Subject: [PATCH] pa-host.c (MAP_FAILED): Define if not defined. * pa-host.c (MAP_FAILED): Define if not defined. (pa_gt_pch_use_address): Handle short reads. From-SVN: r92166 --- gcc/ChangeLog | 5 +++++ gcc/config/pa/pa-host.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c6a5746cae0..bb38fc88008 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-12-14 John David Anglin + + * pa-host.c (MAP_FAILED): Define if not defined. + (pa_gt_pch_use_address): Handle short reads. + 2004-12-14 Richard Henderson PR target/17990 diff --git a/gcc/config/pa/pa-host.c b/gcc/config/pa/pa-host.c index fed18f91451..0d86e5822f8 100644 --- a/gcc/config/pa/pa-host.c +++ b/gcc/config/pa/pa-host.c @@ -26,6 +26,10 @@ #include "hosthooks.h" #include "hosthooks-def.h" +#ifndef MAP_FAILED +#define MAP_FAILED (void *)-1L +#endif + static void *pa_gt_pch_get_address (size_t, int); static int pa_gt_pch_use_address (void *, size_t, int, size_t); @@ -114,8 +118,16 @@ pa_gt_pch_use_address (void *base, size_t size, int fd, size_t offset) if (lseek (fd, offset, SEEK_SET) == (off_t)-1) return -1; - if (read (fd, base, size) == -1) - return -1; + while (size) + { + ssize_t nbytes; + + nbytes = read (fd, base, MIN (size, SSIZE_MAX)); + if (nbytes <= 0) + return -1; + base = (char *) base + nbytes; + size -= nbytes; + } return 1; } -- 2.30.2