From 1efa38d1a7eda7384e59feae004b653b6c192710 Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <ian@gcc.gnu.org>
Date: Tue, 17 Jan 2012 14:18:39 +0000
Subject: [PATCH] libgo: Solaris and Irix compatibility patches.

From Rainer Orth.

From-SVN: r183246
---
 libgo/configure               | 1 +
 libgo/configure.ac            | 1 +
 libgo/runtime/go-map-delete.c | 2 +-
 libgo/runtime/go-map-index.c  | 4 ++--
 libgo/runtime/mem.c           | 6 +++++-
 5 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/libgo/configure b/libgo/configure
index 7e8a38d37b4c..8c8fe38bc8e9 100755
--- a/libgo/configure
+++ b/libgo/configure
@@ -13467,6 +13467,7 @@ is_darwin=no
 is_freebsd=no
 is_irix=no
 is_linux=no
+is_netbsd=no
 is_rtems=no
 is_solaris=no
 GOOS=unknown
diff --git a/libgo/configure.ac b/libgo/configure.ac
index 81326557afa3..cd6b1a9ac824 100644
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -126,6 +126,7 @@ is_darwin=no
 is_freebsd=no
 is_irix=no
 is_linux=no
+is_netbsd=no
 is_rtems=no
 is_solaris=no
 GOOS=unknown
diff --git a/libgo/runtime/go-map-delete.c b/libgo/runtime/go-map-delete.c
index cb10d8dcdc0e..b25760fc8204 100644
--- a/libgo/runtime/go-map-delete.c
+++ b/libgo/runtime/go-map-delete.c
@@ -20,7 +20,7 @@ __go_map_delete (struct __go_map *map, const void *key)
   const struct __go_map_descriptor *descriptor;
   const struct __go_type_descriptor *key_descriptor;
   uintptr_t key_offset;
-  _Bool (*equalfn) (const void*, const void*, size_t);
+  _Bool (*equalfn) (const void*, const void*, uintptr_t);
   size_t key_hash;
   size_t key_size;
   size_t bucket_index;
diff --git a/libgo/runtime/go-map-index.c b/libgo/runtime/go-map-index.c
index ffb532bee888..a602d2ad04a6 100644
--- a/libgo/runtime/go-map-index.c
+++ b/libgo/runtime/go-map-index.c
@@ -21,7 +21,7 @@ __go_map_rehash (struct __go_map *map)
   const struct __go_type_descriptor *key_descriptor;
   uintptr_t key_offset;
   size_t key_size;
-  size_t (*hashfn) (const void *, size_t);
+  uintptr_t (*hashfn) (const void *, uintptr_t);
   uintptr_t old_bucket_count;
   void **old_buckets;
   uintptr_t new_bucket_count;
@@ -80,7 +80,7 @@ __go_map_index (struct __go_map *map, const void *key, _Bool insert)
   const struct __go_map_descriptor *descriptor;
   const struct __go_type_descriptor *key_descriptor;
   uintptr_t key_offset;
-  _Bool (*equalfn) (const void*, const void*, size_t);
+  _Bool (*equalfn) (const void*, const void*, uintptr_t);
   size_t key_hash;
   size_t key_size;
   size_t bucket_index;
diff --git a/libgo/runtime/mem.c b/libgo/runtime/mem.c
index 04fca2c65b1a..a1c5eaa36d7f 100644
--- a/libgo/runtime/mem.c
+++ b/libgo/runtime/mem.c
@@ -1,3 +1,7 @@
+/* Defining _XOPEN_SOURCE hides the declaration of madvise() on Solaris <
+   11 and the MADV_DONTNEED definition on IRIX 6.5.  */
+#undef _XOPEN_SOURCE
+
 #include <errno.h>
 #include <unistd.h>
 
@@ -67,7 +71,7 @@ runtime_SysAlloc(uintptr n)
 }
 
 void
-runtime_SysUnused(void *v, uintptr n)
+runtime_SysUnused(void *v __attribute__ ((unused)), uintptr n __attribute__ ((unused)))
 {
 #ifdef MADV_DONTNEED
 	runtime_madvise(v, n, MADV_DONTNEED);
-- 
GitLab