
## AIX clients start off by executing a short code stub which
## loads the preloads, and then jumps to the real client.  The
## stub reads data belonging to V (by design) and it's easier
## to hide the resulting errors than mess properly with permissions.
{
   VG_(trampoline_stuff_start) hack
   Memcheck:Addr4
   fun:vgPlain_trampoline_stuff_start
}

## Not really a bug in the thread library, just padding 
## problems.
# Syscall param thread_setmystate(arg1) points to uninitialised byte(s)
#    at 0xD011F36C: _set_pthread+680 (in /usr/lib/libpthreads.a)
#    by 0xD01142E4: _alloc_initial_pthread+804 (in /usr/lib/libpthreads.a)
#    by 0xD01123AC: pthread_init+2880 (in /usr/lib/libpthreads.a)
#    by 0x10000344: call_pthread_init+20 (in /proc/557146/object/a.out)
#    by 0x10000258: __threads_init+64 (in /proc/557146/object/a.out)
#    by 0xD0325278: __modinit+356 (in /usr/lib/threads/libc.a)
#    by 0x10000198: __start+72 (in /proc/557146/object/a.out)
{
   AIX-thread_setmystate-padding-kludge-1
   Memcheck:Param
   thread_setmystate(arg1)
   fun:_set_pthread
   fun:_alloc_initial_pthread
   fun:pthread_init
}
{
   AIX-thread_setmystate-padding-kludge-1a
   Memcheck:Param
   thread_setmystate(arg1)
   fun:_set_pthread
   fun:_alloc_initial_pthread
   fun:__pth_init
}
{
   AIX-thread_setmystate-padding-kludge-2
   Memcheck:Param
   thread_setmystate(arg1)
   fun:_set_pthread
   fun:_fork_child
   fun:_atfork_child
   fun:__fork
}
{
   AIX-thread_setmystate-padding-kludge-3
   Memcheck:Param
   thread_setmystate(arg1)
   fun:_sigsetmask
   fun:_p_sigaction
}
{
   AIX-thread_setmystate-padding-kludge-4
   Memcheck:Param
   thread_setmystate(arg1)
   fun:_sigsetmask
   fun:sigthreadmask
}
{
   AIX-thread_setmystate-padding-kludge-5
   Memcheck:Param
   thread_setmystate(arg1)
   fun:_sigsetmask
   fun:_fork_*
}

# AIX's libc contains a qsort routine which expertly does
# memcpy(src, dst, N) for src==dst.  This is technically a
# violation of POSIX and so Memcheck complains.
{
   AIX-libc-qsort-bug-1
   Memcheck:Overlap
   fun:memcpy
   fun:qs2
   fun:qsort
}
{
   AIX-libc-qsort-bug-2
   Memcheck:Overlap
   fun:memcpy
   fun:qs2
   fun:qs2
   fun:qsort
}
{
   AIX-libc-qsort-bug-3
   Memcheck:Overlap
   fun:memcpy
   fun:qs2
   fun:qs2
   fun:qs2
}

## Thread library initialisation, cause unknown.
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD030DD30: fseeko64_unlocked (in /usr/lib/libc.a)
#    by 0xD030DFF0: fseeko64 (in /usr/lib/libc.a)
#    by 0xD0453F2C: nlist64 (in /usr/lib/libc.a)
#    by 0xD01267FC: _pth_init_kgetsig (in /usr/lib/libpthread.a)
#    by 0xD01123DC: pthread_init (in /usr/lib/libpthread.a)
#    by 0x10000344: call_pthread_init (in /proc/645084/object/a.out)
#    by 0x10000258: __threads_init (in /proc/645084/object/a.out)
#    by 0xD0325278: __modinit (in /usr/lib/libc.a)
#    by 0x10000198: (below main) (in /proc/645084/object/a.out)
{
   AIX-thread-library-init-1
   Memcheck:Cond
   fun:fseeko64_unlocked
   fun:fseeko64
}

## More of the same (cause again unknown)
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD030E1F0: __ftell (in /usr/lib/libc.a)
#    by 0xD030E334: ftello64 (in /usr/lib/libc.a)
#    by 0xD0454044: nlist64 (in /usr/lib/libc.a)
#    by 0xD01267FC: _pth_init_kgetsig (in /usr/lib/libpthread.a)
#    by 0xD01123DC: pthread_init (in /usr/lib/libpthread.a)
#    by 0x10000344: call_pthread_init (in /proc/448094/object/a.out)
#    by 0x10000258: __threads_init (in /proc/448094/object/a.out)
#    by 0xD0325278: __modinit (in /usr/lib/libc.a)
#    by 0x10000198: (below main) (in /proc/448094/object/a.out)
{
   AIX-thread-library-init-2
   Memcheck:Cond
   fun:__ftell
   fun:ftello64
   fun:nlist64
}

## Related wierdness (klseek is undocumented, so the wrapper
## is a guess at best)
{
   AIX-libc-klseek-1
   Memcheck:Param
   klseek(offset)
   fun:lseek64
   fun:fseeko64_unlocked
   fun:fseeko64
}
{
   AIX-libc-klseek-2
   Memcheck:Param
   klseek(whence)
   fun:lseek64
   fun:fseeko64_unlocked
   fun:fseeko64
}

## Buffer overrun in libc regexp stuff?
# Invalid read of size 1
#    at 0xD08A2F50: memcpy (mc_replace_strmem.c:437)
#    by 0xD0328B30: match_re (in /usr/lib/libc.a)
#    by 0xD032A464: match_re (in /usr/lib/libc.a)
#    by 0xD032A464: match_re (in /usr/lib/libc.a)
#    by 0xD032A464: match_re (in /usr/lib/libc.a)
#    by 0xD0328AD4: match_re (in /usr/lib/libc.a)
#    by 0xD032A464: match_re (in /usr/lib/libc.a)
#    by 0xD032816C: __regexec_std (in /usr/lib/libc.a)
#    by 0xD0330AA8: regexec (in /usr/lib/libc.a)
{
   AIX-regexp-dodgyness-1
   Memcheck:Addr1
   fun:memcpy
   fun:match_re
   fun:match_re
   fun:match_re
}

## Misuse of memcpy
# Source and destination overlap in memcpy(0x32154ECC, 0x32154EC8, 8)
#    at 0xD13A4F30: memcpy (mc_replace_strmem.c:437)
#    by 0xD03D34BC: __ntree_locate (in /usr/lib/libc.a)
#    by 0xD03D3090: ntree_search (in /usr/lib/libc.a)
#    by 0xD0406E8C: colon_search (in /usr/lib/libc.a)
#    by 0xD03DE068: method_getpw_common (in /usr/lib/libc.a)
#    by 0xD03DEB18: method_getpwuid (in /usr/lib/libc.a)
#    by 0xD03C89DC: _getpwuid_shadow_r (in /usr/lib/libc.a)
#    by 0xD03C62FC: _getpwuid_shadow (in /usr/lib/libc.a)
{
   AIX-overlapping-memcpy-1
   Memcheck:Overlap
   fun:memcpy
   fun:__ntree_locate
   fun:ntree_search
   fun:colon_search
}
{
   AIX-overlapping-memcpy-2
   Memcheck:Overlap
   fun:memcpy
   fun:__ntree_locate
   fun:__ntree_locate
   fun:ntree_search
}

## No idea what this is caused by
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD03069F8: fflush_unlocked (in /usr/lib/libc.a)
#    by 0xD03077AC: fflush (in /usr/lib/libc.a)
#    by 0xD03D545C: common_close (in /usr/lib/libc.a)
#    by 0xD03D46B8: common_unlock (in /usr/lib/libc.a)
#    by 0xD040712C: colon_search (in /usr/lib/libc.a)
#    by 0xD03DE068: method_getpw_common (in /usr/lib/libc.a)
#    by 0xD03DEB18: method_getpwuid (in /usr/lib/libc.a)
{
   AIX-fflush-unlocked-1
   Memcheck:Cond
   fun:fflush_unlocked
   fun:fflush
   fun:common_close
   fun:common_unlock
}

## No idea what this is caused by
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD03EBC30: __method_getentry_v2 (in /usr/lib/libc.a)
#    by 0xD03E887C: does_user_exist (in /usr/lib/libc.a)
#    by 0xD03E9010: getuserattrs (in /usr/lib/libc.a)
#    by 0xD03E4E68: getuserattr (in /usr/lib/libc.a)
#    by 0xD03C8BA4: _getpwuid_shadow_r (in /usr/lib/libc.a)
#    by 0xD03CBE4C: getpwuid (in /usr/lib/libc.a)
{
   AIX-__method_getentry_v2-1
   Memcheck:Cond
   fun:__method_getentry_v2
   fun:does_user_exist
   fun:getuserattrs
   fun:getuserattr
}
{
   AIX-__method_getentry_v2-2
   Memcheck:Cond
   fun:__method_getentry_v2
   fun:does_user_exist
   fun:process_module
   fun:getuserattrs
}

## No idea what this is caused by
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD03F7120: seekdir64 (in /usr/lib/libc.a)
#    by 0xD041A63C: opendir64 (in /usr/lib/libc.a)
#    by 0xD041961C: getwd (in /usr/lib/libc.a)
#    by 0xD04194B4: getcwd (in /usr/lib/libc.a)
{
   AIX-seekdir64
   Memcheck:Cond
   fun:seekdir64
   fun:opendir64
}

## No idea what this is caused by
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD036C80C: ungetwc (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD0369D94: ungetcc (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD03695EC: _doscan (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD037544C: sscanf (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD1BAD9BC: lapi_atoi (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1BA8DBC: _read_int_env (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1BAB86C: _lapi_init_env_once (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1BAB44C: _lapi_perproc_setup (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD0118E50: pthread_once (in /usr/lib/libpthreads.a(shr_xpg5.o))
#    by 0xD1BA86B8: LAPI__Init (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD0EC7A70: lapi_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
#    by 0xD0EC9524: mpci_connect (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
{
   AIX-LAPI-ungetwc-1
   Memcheck:Cond
   fun:ungetwc
   fun:ungetcc
   fun:_doscan
   fun:sscanf
}
{
   AIX-LAPI-ungetwc-2
   Memcheck:Cond
   fun:ungetwc
   fun:ungetcc
   fun:number
   fun:_doscan
}

## No idea what this is caused by
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD030CAD0: atoi (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD0E48DAC: _udp_open_socket (in /usr/lib/liblapi_r.a(liblapiudp_r.o))
#    by 0xD0E4B17C: _udp_open (in /usr/lib/liblapi_r.a(liblapiudp_r.o))
#    by 0xD1BAC77C: _lapi_init_function (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1BAE4F0: _lapi_non_pss_init (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1BA883C: LAPI__Init (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD0EC7A70: lapi_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
#    by 0xD0EC9524: mpci_connect (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
#    by 0xD06AA28C: _css_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD06AB664: _mp_init_msg_passing (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD0647F54: MPI__Init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
{
   AIX-LAPI-atoi-1
   Memcheck:Cond
   fun:atoi
   fun:_udp_open_socket
   fun:_udp_open
   fun:_lapi_init_function
}
{
   AIX-LAPI-atoi-2
   Memcheck:Value4
   fun:atoi
   fun:_udp_open_socket
   fun:_udp_open
   fun:_lapi_init_function
}
{
   AIX-LAPI-atoi-3
   Memcheck:Value8
   fun:atoi
   fun:_udp_open_socket
   fun:_udp_open
   fun:_lapi_init_function
}

## MPI stuff.  Not sure what's going on here.  Is this a 
## legit padding problem?  Dunno.
# Syscall param write(buf) points to uninitialised byte(s)
#    at 0xD0310068: write (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD1CD03B0: pm_SSM_write (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
#    by 0xD1CD5FB0: mp_main (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
#    by 0x100005D8: poe_remote_main (in /proc/872668/object/a.out)
#    by 0xD0325414: mod_init1 (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD0325328: __modinit (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0x10000198: (below main) (in /proc/872668/object/a.out)
#  Address 0x32131422 is 10 bytes inside a block of size 19 alloc'd
#    at 0xD4230514: malloc (vg_replace_malloc.c:168)
#    by 0xD1CD035C: pm_SSM_write (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
#    by 0xD1CD5FB0: mp_main (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
#    by 0x100005D8: poe_remote_main (in /proc/872668/object/a.out)
#    by 0xD0325414: mod_init1 (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD0325328: __modinit (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0x10000198: (below main) (in /proc/872668/object/a.out)
{
   AIX-MPI-pm_SSM_write-1
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_write
   fun:mp_main
}
{
   AIX-MPI-pm_SSM_write-2
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_write
   fun:_mp_send_child_pid
}
{
   AIX-MPI-pm_SSM_write-3
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_write
   fun:_mp_finalize_req
}
{
   AIX-MPI-pm_SSM_write-4
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_write
   fun:pm_atexit
}
{
   AIX-MPI-pm_SSM_write-5
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_write
   fun:_udp_init
}
{
   AIX-MPI-pm_SSM_write-6
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_write
   fun:_us_info
}
{
   AIX-MPI-pm_SSM_read-1
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_read
   fun:pm_atexit
}
{
   AIX-MPI-pm_SSM_read-2
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_read
   fun:poe_unlock_all
}
{
   AIX-MPI-pm_SSM_read-3
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_read
   fun:_css_init
}
{
   AIX-MPI-pm_SSM_read-3
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_read
   fun:pthread_mutex_lock
}
{
   AIX-MPI-pm_SSM_read-4
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_read
   fun:_mp_Wtime_stop
}
{
   AIX-MPI-pm_SSM_read-5
   Memcheck:Param
   write(buf)
   fun:write
   fun:pm_SSM_read
   fun:pthread_mutex_unlock
}


## More MPI stuff
# Invalid read of size 8
#    at 0xD3EB34D8: read_canopus (in /usr/lib/swclock.o)
#    by 0xD3EB31A0: swclockRead (hps_scri.c:431)
#    by 0xD08B6AD4: HPSOclk_reset (in /usr/lpp/ppe.poe/lib/libppe_r.a(dynamic.o))
#    by 0xD08B6CB4: HPSOclk_init (in /usr/lpp/ppe.poe/lib/libppe_r.a(dynamic.o))
#    by 0xD16BC9F0: _mp_Wtime_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
#    by 0xD1FEA3A8: _css_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1FEB664: _mp_init_msg_passing (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1F87F54: MPI__Init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#  Address 0x40000000 is not stack'd, malloc'd or (recently) free'd
{
   AIX-MPI-read_canopus
   Memcheck:Addr8
   fun:read_canopus
   fun:swclockRead
   fun:HPSOclk_reset
   fun:HPSOclk_init
}

## More MPI stuff (many variants of these)
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD1E8297C: ipcompare (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD033CADC: qs1 (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
#    by 0xD1E82A38: _derive_up_down_instances (in /usr/lib/liblapi_r.a(liblapi\
#_r.o))
#    by 0xD1E83484: NAM_monitor_thread (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD0111440: _pthread_body (in /usr/lib/libpthreads.a(shr_xpg5.o))
{
   AIX-MPI-ipcompare-1
   Memcheck:Cond
   fun:ipcompare
   fun:qs1
   fun:_derive_up_down_instances
   fun:NAM_monitor_thread
}
{
   AIX-MPI-ipcompare-2
   Memcheck:Cond
   fun:ipcompare
   fun:qs1
   fun:qsort
   fun:_derive_up_down_instances
}
{
   AIX-MPI-ipcompare-3
   Memcheck:Cond
   fun:ipcompare
   fun:qs1
   fun:qs1
   fun:qsort
}
{
   AIX-MPI-ipcompare-4
   Memcheck:Cond
   fun:ipcompare
   fun:qs1
   fun:qs1
   fun:qs1
}
{
   AIX-MPI-ipcompare-5
   Memcheck:Cond
   fun:ipcompare
   fun:bsearch_*_1
   fun:NAM_monitor_thread
}

## More MPI stuff
# Conditional jump or move depends on uninitialised value(s)
#    at 0xD1CA2240: barrier_shft_b (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1CE6FAC: _mpi_barrier (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1D11720: _mpi_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1D733D8: _css_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1D74644: _mp_init_msg_passing (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1D10F34: MPI__Init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD33DD5D0: PMPI_Init (libmpiwrap.c:1789)
#    by 0xD33E48F8: before (libmpiwrap.c:186)
#    by 0xD33DD55C: PMPI_Init (libmpiwrap.c:1788)
{
   AIX-MPI-barrier_shft_b-1
   Memcheck:Cond
   fun:barrier_shft_b
   fun:_mpi_barrier
   fun:_mpi_init
   fun:_css_init
}
{
   AIX-MPI-barrier_shft_b-2
   Memcheck:Cond
   fun:barrier_shft_b
   fun:_mpi_barrier
   fun:MPI__Finalize
}
{
   AIX-MPI-barrier_shft_b-3
   Memcheck:Cond
   fun:barrier_shft_b
   fun:_mpi_barrier
   fun:MPI__Barrier
}

## MPI
# Invalid read of size 1
#    at 0xD21B8FB8: can_writepkt (in /usr/lib/libhal_r.a(hal_hps.o))
#    by 0xD1E86D7C: _stripe_hal_writepkt_noflip (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1E33BB8: _process_one_contig_item (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1E4E3A8: _Am_xfer (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1E4EB9C: _Dgsp_xfer (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1E49EC0: LAPI__Xfer (in /usr/lib/liblapi_r.a(liblapi_r.o))
#    by 0xD1DCF2FC: mpci_send (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
#    by 0xD1C90F6C: _mpi_start (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1C90648: _mpi_xisend (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1C89898: MPI__Isend (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD3910FD4: generic_Isend (libmpiwrap.c:1129)
#    by 0xFFFFFFFB: ???
#  Address 0x370A4794 is 0 bytes after a block of size 20 alloc'd
#    at 0xD38DE514: malloc (vg_replace_malloc.c:168)
#    by 0x100004BC: main (mpi_vg_demo2.c:56)
{
   AIX-MPI-can_writepkt-1
   Memcheck:Addr1
   fun:can_writepkt
   fun:_stripe_hal_writepkt_noflip
   fun:_process_one_contig_item
   fun:_Am_xfer
}
{
   AIX-MPI-can_writepkt-2
   Memcheck:Addr1
   obj:*
   fun:_make_localbuf_copy
   fun:_Am_xfer
   fun:_Dgsp_xfer
}

## MPI
# Invalid write of size 4
#    at 0xD1D14B18: check_ranks (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#    by 0xD1D147C8: MPI__Group_incl (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
#  Address 0x2FF12154 is not stack'd, malloc'd or (recently) free'd
{
   AIX-MPI-check_ranks-1
   Memcheck:Addr4
   fun:check_ranks
   fun:MPI__Group_incl
}

## X, holes in structs?
{
   AIX-X11-write-_X11TransSocketWrite
   Memcheck:Param
   write(buf)
   fun:write
   fun:_X11TransSocketWrite
   fun:_X11TransWrite
}

## Who knows
{
   AIX-fread_unlocked-1
   Memcheck:Cond
   fun:*memcpy
   fun:fread_unlocked
   fun:fread
}
{
   AIX-fread_unlocked-2
   Memcheck:Value8
   fun:*memcpy
   fun:fread_unlocked
   fun:fread
}
{
   AIX-fread_unlocked-3
   Memcheck:Value4
   fun:*memcpy
   fun:fread_unlocked
   fun:fread
}
{
   AIX-fread_unlocked-4
   Memcheck:Cond
   fun:fread_unlocked
   fun:fread
}

## Looks like inlined strcpy etc in module with no symbols; nothing
# to be done about it.
{
   AIX-uconv-1
   Memcheck:Cond
   obj:/*/UTF32TBL__64
   obj:/*/UTF32TBL__64
   obj:/*/UTF32TBL__64
}
{
   AIX-uconv-2
   Memcheck:Value8
   obj:/*/UTF32TBL__64
   obj:/*/UTF32TBL__64
   obj:/*/UTF32TBL__64
}
{
   AIX-uconv-3
   Memcheck:Addr8
   obj:/*/UTF32TBL__64
   obj:/*/UTF32TBL__64
   obj:/*/UTF32TBL__64
}


#####################################################################
### AIX 64-bit                                                    ###
#####################################################################

{
   AIX64-uu-sz8
   Memcheck:Addr8
   obj:/usr/ccs/bin/usla64
   obj:/usr/ccs/bin/usla64
}
{
   AIX64-uu-sz4
   Memcheck:Addr4
   obj:/usr/ccs/bin/usla64
}
{
   AIX64-uu-sz2
   Memcheck:Addr2
   obj:/usr/ccs/bin/usla64
   obj:/usr/ccs/bin/usla64
}
{
   AIX64-uu-sz1
   Memcheck:Addr1
   obj:/usr/ccs/bin/usla64
   obj:/usr/ccs/bin/usla64
}

{
   AIX64-uc-sz8
   Memcheck:Addr8
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}
{
   AIX64-uc-sz4
   Memcheck:Addr4
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}
{
   AIX64-uc-sz2
   Memcheck:Addr2
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}
{
   AIX64-uc-sz1
   Memcheck:Addr1
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}

{
   AIX64-?uu-sz8
   Memcheck:Addr8
   fun:*
   obj:/usr/ccs/bin/usla64
   obj:/usr/ccs/bin/usla64
}
{
   AIX64-?uu-sz4
   Memcheck:Addr4
   fun:*
   obj:/usr/ccs/bin/usla64
   obj:/usr/ccs/bin/usla64
}

{
   AIX64-?uc-sz8
   Memcheck:Addr8
   fun:*
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}
{
   AIX64-?uc-sz4
   Memcheck:Addr4
   fun:*
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}
{
   AIX64-?uc-sz2
   Memcheck:Addr2
   fun:*
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}
{
   AIX64-?uc-sz1
   Memcheck:Addr1
   fun:*
   obj:/usr/ccs/bin/usla64
   obj:*/libc.a(shr*.o)
}

{
   AIX64-usla_exec_init_mods-sz8
   Memcheck:Addr8
   fun:usl_exec_init_mods
}

{
   AIX64-usla_main-sz8
   Memcheck:Addr8
   fun:usla_main
}

{
   AIX64-__modfini64-sz8
   Memcheck:Addr8
   fun:__modfini64
}

{
   AIX64-load-lib?-sz8
   Memcheck:Addr8
   fun:load
   obj:*/lib?.a(shr*.o)
}

{
   AIX64-__loadx-libc-sz8
   Memcheck:Addr8
   fun:__loadx
   obj:*/libc.a(shr*.o)
}

{
   AIX64-loadquery-libC-sz8
   Memcheck:Addr8
   fun:loadquery
   obj:*/libC.a(shr*.o)
}

{
   AIX64-__loadx-pthread_init-sz8
   Memcheck:Addr8
   fun:__loadx
   fun:*pth*_init
}

{
   AIX64-unload-libC-sz8
   Memcheck:Addr8
   fun:unload
   obj:*/libC.a(shr*.o)
}

{
   AIX64-loadquery-__C_runtime_startup-sz8
   Memcheck:Addr8
   fun:loadquery
   fun:__C_runtime_startup
}

{
   AIX64-load-libppe-sz8
   Memcheck:Addr8
   fun:load
   obj:*/libppe*.a(*.o)
}

#####

{
   AIX-libodm_tsd_destroy-free
   Memcheck:Free
   fun:free
   fun:libodm_tsd_destroy
   fun:__odm_initfini_fini
}

{
   AIX64-usl-resolve-sz1
   Memcheck:Addr1
   obj:*
   fun:usl_resolve
   fun:uload
   fun:load
}
