summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/host-darwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/rs6000/host-darwin.c')
-rw-r--r--gcc/config/rs6000/host-darwin.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/gcc/config/rs6000/host-darwin.c b/gcc/config/rs6000/host-darwin.c
index e6263044bc5..9f47cac937d 100644
--- a/gcc/config/rs6000/host-darwin.c
+++ b/gcc/config/rs6000/host-darwin.c
@@ -180,16 +180,19 @@ darwin_rs6000_gt_pch_use_address (void *addr, size_t sz, int fd, size_t off)
if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
fatal_error ("couldn't unmap pch_address_space: %m\n");
- mmap_result = mmap (addr, sz,
- PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
- fd, off);
+ if (ret)
+ {
+ mmap_result = mmap (addr, sz,
+ PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
+ fd, off);
- /* The file might not be mmap-able. */
- ret = mmap_result == (void *) MAP_FAILED;
+ /* The file might not be mmap-able. */
+ ret = mmap_result == (void *) MAP_FAILED;
- /* Sanity check for broken MAP_FIXED. */
- if (ret && mmap_result != addr)
- abort ();
+ /* Sanity check for broken MAP_FIXED. */
+ if (!ret && mmap_result != addr)
+ abort ();
+ }
return ret;
}