packages: gcc/gcc-branch.diff - updated

arekm arekm at pld-linux.org
Fri May 27 22:50:45 CEST 2011


Author: arekm                        Date: Fri May 27 20:50:45 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- updated

---- Files affected:
packages/gcc:
   gcc-branch.diff (1.44 -> 1.45) 

---- Diffs:

================================================================
Index: packages/gcc/gcc-branch.diff
diff -u packages/gcc/gcc-branch.diff:1.44 packages/gcc/gcc-branch.diff:1.45
--- packages/gcc/gcc-branch.diff:1.44	Sun Mar 27 15:07:14 2011
+++ packages/gcc/gcc-branch.diff	Fri May 27 22:42:14 2011
@@ -1,8 +1,501 @@
+Index: libgomp/configure
+===================================================================
+--- libgomp/configure	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libgomp/configure	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -15780,20 +15780,24 @@
+ # If we never went through the LIBGOMP_CHECK_LINKER_FEATURES macro, then we
+ # don't know enough about $LD to do tricks...
+ 
+-# FIXME  The following test is too strict, in theory.
+-if test $enable_shared = no || test "x$LD" = x; then
+-  enable_symvers=no
+-else
+-  if test $with_gnu_ld = yes ; then
+-    enable_symvers=gnu
++
++# Turn a 'yes' into a suitable default.
++if test x$enable_symvers = xyes ; then
++  # FIXME  The following test is too strict, in theory.
++  if test $enable_shared = no || test "x$LD" = x; then
++    enable_symvers=no
+   else
+-    case ${target_os} in
+-      # Sun symbol versioning exists since Solaris 2.5.
+-      solaris2.[5-9]* | solaris2.1[0-9]*)
+-        enable_symvers=sun ;;
+-      *)
+-        enable_symvers=no ;;
+-    esac
++    if test $with_gnu_ld = yes ; then
++      enable_symvers=gnu
++    else
++      case ${target_os} in
++        # Sun symbol versioning exists since Solaris 2.5.
++        solaris2.[5-9]* | solaris2.1[0-9]*)
++          enable_symvers=sun ;;
++        *)
++          enable_symvers=no ;;
++      esac
++    fi
+   fi
+ fi
+ 
+Index: libgomp/fortran.c
+===================================================================
+--- libgomp/fortran.c	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libgomp/fortran.c	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
++/* Copyright (C) 2005, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
+    Contributed by Jakub Jelinek <jakub at redhat.com>.
+ 
+    This file is part of the GNU OpenMP Library (libgomp).
+@@ -27,6 +27,7 @@
+ #include "libgomp.h"
+ #include "libgomp_f.h"
+ #include <stdlib.h>
++#include <limits.h>
+ 
+ #ifdef HAVE_ATTRIBUTE_ALIAS
+ /* Use internal aliases if possible.  */
+@@ -244,6 +245,8 @@
+ omp_lock_symver (omp_test_nest_lock_)
+ #endif
+ 
++#define TO_INT(x) ((x) > INT_MIN ? (x) < INT_MAX ? (x) : INT_MAX : INT_MIN)
++
+ void
+ omp_set_dynamic_ (const int32_t *set)
+ {
+@@ -253,7 +256,7 @@
+ void
+ omp_set_dynamic_8_ (const int64_t *set)
+ {
+-  omp_set_dynamic (*set);
++  omp_set_dynamic (!!*set);
+ }
+ 
+ void
+@@ -265,7 +268,7 @@
+ void
+ omp_set_nested_8_ (const int64_t *set)
+ {
+-  omp_set_nested (*set);
++  omp_set_nested (!!*set);
+ }
+ 
+ void
+@@ -277,7 +280,7 @@
+ void
+ omp_set_num_threads_8_ (const int64_t *set)
+ {
+-  omp_set_num_threads (*set);
++  omp_set_num_threads (TO_INT (*set));
+ }
+ 
+ int32_t
+@@ -343,7 +346,7 @@
+ void
+ omp_set_schedule_8_ (const int32_t *kind, const int64_t *modifier)
+ {
+-  omp_set_schedule (*kind, *modifier);
++  omp_set_schedule (*kind, TO_INT (*modifier));
+ }
+ 
+ void
+@@ -381,7 +384,7 @@
+ void
+ omp_set_max_active_levels_8_ (const int64_t *levels)
+ {
+-  omp_set_max_active_levels (*levels);
++  omp_set_max_active_levels (TO_INT (*levels));
+ }
+ 
+ int32_t
+@@ -405,7 +408,7 @@
+ int32_t
+ omp_get_ancestor_thread_num_8_ (const int64_t *level)
+ {
+-  return omp_get_ancestor_thread_num (*level);
++  return omp_get_ancestor_thread_num (TO_INT (*level));
+ }
+ 
+ int32_t
+@@ -417,7 +420,7 @@
+ int32_t
+ omp_get_team_size_8_ (const int64_t *level)
+ {
+-  return omp_get_team_size (*level);
++  return omp_get_team_size (TO_INT (*level));
+ }
+ 
+ int32_t
+Index: libgomp/ChangeLog
+===================================================================
+--- libgomp/ChangeLog	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libgomp/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -1,3 +1,37 @@
++2011-05-19  Jakub Jelinek  <jakub at redhat.com>
++
++	PR c++/49043
++	* testsuite/libgomp.c++/pr49043.C: New test.
++
++	PR c++/48869
++	* testsuite/libgomp.c++/pr48869.C: New test.
++
++2011-05-06  Jakub Jelinek  <jakub at redhat.com>
++
++	PR fortran/48894
++	* fortran.c: Include limits.h.
++	(TO_INT): Define.
++	(omp_set_dynamic_8_, omp_set_num_threads_8_): Use !!*set instead of
++	*set.
++	(omp_set_num_threads_8_, omp_set_schedule_8_,
++	omp_set_max_active_levels_8_, omp_get_ancestor_thread_num_8_,
++	omp_get_team_size_8_): Use TO_INT macro.
++	* testsuite/libgomp.fortran/pr48894.f90: New test.
++
++2011-04-13  Jakub Jelinek  <jakub at redhat.com>
++
++	PR middle-end/48591
++	* testsuite/libgomp.c/pr48591.c: New test.
++
++2011-03-28  Rainer Orth  <ro at CeBiTec.Uni-Bielefeld.DE>
++
++	Backport from mainline:
++	2011-03-21  Rainer Orth  <ro at CeBiTec.Uni-Bielefeld.DE>
++
++	PR bootstrap/48135
++	* acinclude.m4 (enable_symvers): Handle --disable-symvers.
++	* configure: Regenerate.
++
+ 2011-03-25  Release Manager
+ 
+ 	* GCC 4.6.0 released.
+Index: libgomp/testsuite/libgomp.c++/pr49043.C
+===================================================================
+--- libgomp/testsuite/libgomp.c++/pr49043.C	(.../tags/gcc_4_6_0_release)	(wersja 0)
++++ libgomp/testsuite/libgomp.c++/pr49043.C	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -0,0 +1,19 @@
++// PR c++/49043
++// { dg-options "-std=c++0x" }
++// { dg-do run }
++
++extern "C" void abort ();
++
++int
++main ()
++{
++  int r = 0;
++  #pragma omp parallel for reduction (+:r)
++    for (int a = 0; a < 10; ++a)
++      {
++	auto func = [=] () { return a; };
++	r += func ();
++      }
++  if (r != 45)
++    abort ();
++}
+Index: libgomp/testsuite/libgomp.c++/pr48869.C
+===================================================================
+--- libgomp/testsuite/libgomp.c++/pr48869.C	(.../tags/gcc_4_6_0_release)	(wersja 0)
++++ libgomp/testsuite/libgomp.c++/pr48869.C	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -0,0 +1,68 @@
++// PR c++/48869
++// { dg-do run }
++// { dg-options "-std=gnu++0x" }
++
++template <const int N>
++struct A
++{
++  A () {}
++  A (const A&) = delete;
++  void foo () {}
++  ~A () {}
++};
++
++template <const int N>
++struct B
++{
++  B () {}
++  B (const B&) {}
++  void foo () {}
++  ~B () {}
++};
++
++void __attribute__((used))
++foo (B<6> b6)
++{
++  #pragma omp task
++    b6.foo ();
++}
++
++int
++main ()
++{
++  A<0> a0;
++  #pragma omp task shared(a0)
++    a0.foo ();
++  #pragma omp task default(shared)
++    a0.foo ();
++  #pragma omp parallel shared(a0)
++    #pragma omp task
++      a0.foo ();
++  #pragma omp task
++  {
++    A<1> a1;
++    a1.foo ();
++  }
++  B<0> b0;
++  #pragma omp task shared(b0)
++    b0.foo ();
++  B<1> b1;
++  #pragma omp task default(shared)
++    b1.foo ();
++  B<2> b2;
++  #pragma omp parallel shared(b2)
++    #pragma omp task
++      b2.foo ();
++  B<3> b3;
++  #pragma omp task
++    b3.foo ();
++  B<4> b4;
++  #pragma omp parallel private (b4)
++    #pragma omp task
++      b4.foo ();
++  B<5> b5;
++  #pragma omp parallel firstprivate (b5)
++    #pragma omp task
++      b5.foo ();
++  return 0;
++}
+Index: libgomp/testsuite/libgomp.fortran/pr48894.f90
+===================================================================
+--- libgomp/testsuite/libgomp.fortran/pr48894.f90	(.../tags/gcc_4_6_0_release)	(wersja 0)
++++ libgomp/testsuite/libgomp.fortran/pr48894.f90	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -0,0 +1,23 @@
++! PR fortran/48894
++! { dg-do run }
++! { dg-options "-fdefault-integer-8" }
++
++  use omp_lib
++  integer, parameter :: zero = 0
++  integer :: err
++  logical :: l
++  err = 0
++  !$omp parallel
++    !$omp parallel private (l)
++      l = omp_get_ancestor_thread_num (-HUGE (zero)) .ne. -1
++      l = l .or. (omp_get_ancestor_thread_num (HUGE (zero)) .ne. -1)
++      l = l .or. (omp_get_team_size (-HUGE (zero)) .ne. -1)
++      l = l .or. (omp_get_team_size (HUGE (zero)) .ne. -1)
++      if (l) then
++        !$omp atomic
++          err = err + 1
++      endif
++    !$omp end parallel
++  !$omp end parallel
++  if (err .ne. 0) call abort
++end
+Index: libgomp/testsuite/libgomp.c/pr48591.c
+===================================================================
+--- libgomp/testsuite/libgomp.c/pr48591.c	(.../tags/gcc_4_6_0_release)	(wersja 0)
++++ libgomp/testsuite/libgomp.c/pr48591.c	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -0,0 +1,22 @@
++/* PR middle-end/48591 */
++/* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* } } */
++/* { dg-options "-fopenmp" } */
++
++extern void abort (void);
++
++int
++main ()
++{
++  __float128 f = 0.0;
++  int i;
++  #pragma omp parallel for reduction(+:f)
++    for (i = 0; i < 128; i++)
++      f += 0.5Q;
++  if (f != 64.0Q)
++    abort ();
++  #pragma omp atomic
++    f += 8.5Q;
++  if (f != 72.5Q)
++    abort ();
++  return 0;
++}
+Index: libgomp/acinclude.m4
+===================================================================
+--- libgomp/acinclude.m4	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libgomp/acinclude.m4	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -228,20 +228,24 @@
+ # If we never went through the LIBGOMP_CHECK_LINKER_FEATURES macro, then we
+ # don't know enough about $LD to do tricks...
+ AC_REQUIRE([LIBGOMP_CHECK_LINKER_FEATURES])
+-# FIXME  The following test is too strict, in theory.
+-if test $enable_shared = no || test "x$LD" = x; then
+-  enable_symvers=no
+-else
+-  if test $with_gnu_ld = yes ; then
+-    enable_symvers=gnu
++
++# Turn a 'yes' into a suitable default.
++if test x$enable_symvers = xyes ; then
++  # FIXME  The following test is too strict, in theory.
++  if test $enable_shared = no || test "x$LD" = x; then
++    enable_symvers=no
+   else
+-    case ${target_os} in
+-      # Sun symbol versioning exists since Solaris 2.5.
+-      solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
+-        enable_symvers=sun ;;
+-      *)
+-        enable_symvers=no ;;
+-    esac
++    if test $with_gnu_ld = yes ; then
++      enable_symvers=gnu
++    else
++      case ${target_os} in
++        # Sun symbol versioning exists since Solaris 2.5.
++        solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
++          enable_symvers=sun ;;
++        *)
++          enable_symvers=no ;;
++      esac
++    fi
+   fi
+ fi
+ 
+Index: libquadmath/configure
+===================================================================
+--- libquadmath/configure	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libquadmath/configure	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -747,6 +747,7 @@
+ enable_libtool_lock
+ enable_maintainer_mode
+ enable_multilib
++enable_symvers
+ enable_generated_files_in_srcdir
+ '
+       ac_precious_vars='build_alias
+@@ -1391,6 +1392,7 @@
+   --enable-maintainer-mode  enable make rules and dependencies not useful
+ 			  (and sometimes confusing) to the casual installer
+   --enable-multilib       build many library versions (default)
++  --disable-symvers       disable symbol versioning for libquadmath
+   --enable-generated-files-in-srcdir
+                           put copies of generated files in source dir intended
+                           for creating source tarballs for users without
+@@ -10511,7 +10513,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 10514 "configure"
++#line 10516 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -10617,7 +10619,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 10620 "configure"
++#line 10622 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -12339,19 +12341,27 @@
+ # Check for symbol versioning (copied from libssp).
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symbol versioning is supported" >&5
+ $as_echo_n "checking whether symbol versioning is supported... " >&6; }
+-if test x$gcc_no_link = xyes; then
+-  # If we cannot link, we cannot build shared libraries, so do not use
+-  # symbol versioning.
+-  quadmath_use_symver=no
++# Check whether --enable-symvers was given.
++if test "${enable_symvers+set}" = set; then :
++  enableval=$enable_symvers; quadmath_use_symver=$enableval
+ else
+-  save_LDFLAGS="$LDFLAGS"
+-  LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
+-  cat > conftest.map <<EOF
++  quadmath_use_symver=yes
++fi
++
++if test "x$quadmath_use_symver" = xyes; then
++  if test x$gcc_no_link = xyes; then
++    # If we cannot link, we cannot build shared libraries, so do not use
++    # symbol versioning.
++    quadmath_use_symver=no
++  else
++    save_LDFLAGS="$LDFLAGS"
++    LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
++    cat > conftest.map <<EOF
+ FOO_1.0 {
+   global: *foo*; bar; local: *;
+ };
+ EOF
+-  if test x$gcc_no_link = xyes; then
++    if test x$gcc_no_link = xyes; then
+   as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+@@ -12372,18 +12382,18 @@
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+-  if test x$quadmath_use_symver = xno; then
+-    case "$target_os" in
+-      solaris2*)
+-        LDFLAGS="$save_LDFLAGS"
+-        LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
+-        # Sun ld cannot handle wildcards and treats all entries as undefined.
+-        cat > conftest.map <<EOF
++    if test x$quadmath_use_symver = xno; then
++      case "$target_os" in
++        solaris2*)
++          LDFLAGS="$save_LDFLAGS"
++          LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
++          # Sun ld cannot handle wildcards and treats all entries as undefined.
++          cat > conftest.map <<EOF
+ FOO_1.0 {
+   global: foo; local: *;
+ };
+ EOF
+-        if test x$gcc_no_link = xyes; then
++          if test x$gcc_no_link = xyes; then
+   as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+@@ -12404,10 +12414,11 @@
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+-        ;;
+-    esac
++          ;;
++      esac
++    fi
++    LDFLAGS="$save_LDFLAGS"
+   fi
+-  LDFLAGS="$save_LDFLAGS"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $quadmath_use_symver" >&5
+ $as_echo "$quadmath_use_symver" >&6; }
 Index: libquadmath/ChangeLog
 ===================================================================
---- libquadmath/ChangeLog	(.../tags/gcc_4_6_0_release)	(wersja 171573)
-+++ libquadmath/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 171573)
-@@ -1,3 +1,11 @@
+--- libquadmath/ChangeLog	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libquadmath/ChangeLog	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -1,3 +1,20 @@
++2011-03-28  Rainer Orth  <ro at CeBiTec.Uni-Bielefeld.DE>
++
++	Backport from mainline:
++	2011-03-21  Rainer Orth  <ro at CeBiTec.Uni-Bielefeld.DE>
++
++	PR bootstrap/48135
++	* configure.ac (quadmath_use_symver): Handle --disable-symvers.
++	* configure: Regenerate.
++
 +2011-03-26  Jakub Jelinek  <jakub at redhat.com>
 +
 +	Backport from mainline
@@ -16,8 +509,8 @@
  	* GCC 4.6.0 released.
 Index: libquadmath/printf/printf_fp.c
 ===================================================================
---- libquadmath/printf/printf_fp.c	(.../tags/gcc_4_6_0_release)	(wersja 171573)
-+++ libquadmath/printf/printf_fp.c	(.../branches/gcc-4_6-branch)	(wersja 171573)
+--- libquadmath/printf/printf_fp.c	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libquadmath/printf/printf_fp.c	(.../branches/gcc-4_6-branch)	(wersja 174359)
 @@ -1197,7 +1197,7 @@
  	    if (*copywc == decimalwc)
  	      memcpy (cp, decimal, decimal_len), cp += decimal_len;
@@ -27,10 +520,814 @@
  	    else
  	      *cp++ = (char) *copywc;
  	}
+Index: libquadmath/configure.ac
+===================================================================
+--- libquadmath/configure.ac	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ libquadmath/configure.ac	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -164,35 +164,42 @@
+ 
+ # Check for symbol versioning (copied from libssp).
+ AC_MSG_CHECKING([whether symbol versioning is supported])
+-if test x$gcc_no_link = xyes; then
+-  # If we cannot link, we cannot build shared libraries, so do not use
+-  # symbol versioning.
+-  quadmath_use_symver=no
+-else
+-  save_LDFLAGS="$LDFLAGS"
+-  LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
+-  cat > conftest.map <<EOF
++AC_ARG_ENABLE(symvers,
++AS_HELP_STRING([--disable-symvers],
++  [disable symbol versioning for libquadmath]),
++quadmath_use_symver=$enableval,
++quadmath_use_symver=yes)
++if test "x$quadmath_use_symver" = xyes; then
++  if test x$gcc_no_link = xyes; then
++    # If we cannot link, we cannot build shared libraries, so do not use
++    # symbol versioning.
++    quadmath_use_symver=no
++  else
++    save_LDFLAGS="$LDFLAGS"
++    LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
++    cat > conftest.map <<EOF
+ FOO_1.0 {
+   global: *foo*; bar; local: *;
+ };
+ EOF
+-  AC_TRY_LINK([int foo;],[],[quadmath_use_symver=gnu],[quadmath_use_symver=no])
+-  if test x$quadmath_use_symver = xno; then
+-    case "$target_os" in
+-      solaris2*)
+-        LDFLAGS="$save_LDFLAGS"
+-        LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
+-        # Sun ld cannot handle wildcards and treats all entries as undefined.
+-        cat > conftest.map <<EOF
++    AC_TRY_LINK([int foo;],[],[quadmath_use_symver=gnu],[quadmath_use_symver=no])
++    if test x$quadmath_use_symver = xno; then
++      case "$target_os" in
++        solaris2*)
++          LDFLAGS="$save_LDFLAGS"
++          LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
++          # Sun ld cannot handle wildcards and treats all entries as undefined.
++          cat > conftest.map <<EOF
+ FOO_1.0 {
+   global: foo; local: *;
+ };
+ EOF
+-        AC_TRY_LINK([int foo;],[],[quadmath_use_symver=sun],[quadmath_use_symver=no])
+-        ;;
+-    esac
++          AC_TRY_LINK([int foo;],[],[quadmath_use_symver=sun],[quadmath_use_symver=no])
++          ;;
++      esac
++    fi
++    LDFLAGS="$save_LDFLAGS"
+   fi
+-  LDFLAGS="$save_LDFLAGS"
+ fi
+ AC_MSG_RESULT($quadmath_use_symver)
+ AM_CONDITIONAL(LIBQUAD_USE_SYMVER, [test "x$quadmath_use_symver" != xno])
+Index: gcc/tree-vrp.c
+===================================================================
+--- gcc/tree-vrp.c	(.../tags/gcc_4_6_0_release)	(wersja 174359)
++++ gcc/tree-vrp.c	(.../branches/gcc-4_6-branch)	(wersja 174359)
+@@ -1,5 +1,5 @@
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gcc/gcc-branch.diff?r1=1.44&r2=1.45&f=u



More information about the pld-cvs-commit mailing list