Bug 345248 - add support for Solaris OS in valgrind

Authors of this port:
    Petr Pavlu         setup@dagobah.cz
    Ivo Raisr          ivosh@ivosh.net
    Theo Schlossnagle  theo@omniti.com
            


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15426 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/solaris12.supp b/solaris12.supp
new file mode 100644
index 0000000..2c68508
--- /dev/null
+++ b/solaris12.supp
@@ -0,0 +1,168 @@
+# This is a real problem in the Solaris libc. It is caused by a read past the
+# FILE structure. It's an intentional hack to differentiate between two file
+# structures, FILE and xFILE.
+{
+   Solaris:sprintf
+   Memcheck:Cond
+   fun:getxfdat
+   fun:_set_memstream
+   fun:sprintf
+}
+
+# The same problem as above.
+{
+   Solaris:snprintf
+   Memcheck:Cond
+   fun:getxfdat
+   fun:_set_memstream
+   fun:snprintf
+}
+
+# The same problem as above.
+{
+   Solaris:snprintf
+   Memcheck:Cond
+   fun:getxfdat
+   fun:_realbufend
+   fun:_ndoprnt
+   fun:snprintf
+}
+
+# The same problem as above.
+{
+   Solaris:vsnprintf
+   Memcheck:Cond
+   fun:getxfdat
+   fun:_set_memstream
+   fun:vsnprintf
+}
+
+# The same problem as above.
+{
+   Solaris:vsnprintf
+   Memcheck:Cond
+   fun:getxfdat
+   fun:_realbufend
+   fun:_ndoprnt
+   fun:vsnprintf
+}
+
+#----------------------------------------------------------------------------#
+# Solaris libc doesn't deallocate I/O buffers on program exit.
+{
+   Solaris:file_buffer_malloc
+   Memcheck:Leak
+   fun:malloc
+   fun:_findbuf
+   obj:/lib/libc.so.1
+   obj:/lib/libc.so.1
+}
+
+#----------------------------------------------------------------------------#
+# Solaris libc doesn't deallocate netconfig list pointed to by netpp. 
+# This includes other allocated structures and strings contained there.
+{
+   Solaris:setnetconfig-fgetnetconfig
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:calloc
+   fun:fgetnetconfig
+   fun:getnetlist
+   fun:setnetconfig
+}
+
+# The same problem as above.
+{
+   Solaris:setnetconfig-fgetnetconfig-getlookups-strdup
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   fun:strdup
+   fun:getlookups
+   fun:fgetnetconfig
+   fun:getnetlist
+   fun:setnetconfig
+}
+
+# The same problem as above.
+{
+   Solaris:setnetconfig-fgetnetconfig-getlookups-malloc
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   fun:getlookups
+   fun:fgetnetconfig
+   fun:getnetlist
+   fun:setnetconfig
+}
+
+# The same problem as above.
+{
+   Solaris:setnetconfig-fgetnetconfig-gettoken
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   fun:strdup
+   fun:gettoken
+   fun:fgetnetconfig
+   fun:getnetlist
+   fun:setnetconfig
+}
+
+# The same problem as above.
+{
+   Solaris:setnetconfig-getnetlist
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   fun:getnetlist
+   fun:setnetconfig
+}
+
+#----------------------------------------------------------------------------#
+# Solaris libc doesn't deallocate static strings netid_tcp_main
+# and netid_tcp_udp allocated in __rpc_getconfip.
+{
+   Solaris:__rpc_getconfip-netid_tcp+udp_main
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:malloc
+   fun:strdup
+   fun:__rpc_getconfip
+}
+
+#----------------------------------------------------------------------------#
+# Solaris libc doesn't deallocate global variable global_gt.
+{
+   Solaris:dgettext
+   Memcheck:Leak
+   match-leak-kinds: reachable
+   fun:calloc
+   fun:dgettext
+}
+
+#----------------------------------------------------------------------------#
+# Solaris libc reinitializes mutex udp->ld_lock in the child's post-fork
+# handler.
+{
+   Solaris:postfork_child_mutex_reinit
+   drd:MutexErr
+   fun:mutex_init
+   fun:postfork1_child
+   fun:forkx
+}
+
+#----------------------------------------------------------------------------#
+# Solaris libc implements pthread barrier with a mutex and a condition
+# variable. In pthread_barrier_wait(), the last thread returning with
+# SERIAL_THREAD first unlocks the mutex and then broadcasts the condition
+# variable. This is ok here because that mutex does not have any priorities
+# associated, therefore no unpredicatble scheduling behaviour can occurr.
+{
+   Solaris:pthread_barrier_wait
+   Helgrind:Misc
+   fun:pthread_cond_broadcast_WRK
+   fun:cond_broadcast
+   fun:pthread_barrier_wait
+}
+