UOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
+[GNU C Library minor version number used on the target, or 0.])
AC_ARG_ENABLE(gnu-unique-object,
[AS_HELP_STRING([--enable-gnu-unique-object],
--
Joseph S. Myers
jos...@codesourcery.com
filter %el, $(firstword $(subst -, ,$(target,el)
to determine endianness for Debian multiarch purposes, and I think this
will need to change when you allow --with-endian to control the
endianness.
--
Joseph S. Myers
jos...@codesourcery.com
e fp_operation && flag_trapping_math
is the right thing to check (although there are certain subcases,
depending on the types involved, where in fact you can't have traps).
That in turn is the default, suggesting just removing the CASE_CONVERT and
FIX_TRUNC_EXPR cases (the effect of
he jit
> branch? (I've been rebasing, and plan to repost the fixed-up patches
> for review shortly)
I don't see it as a blocker, but I would not be surprised if having the
libraries statically linked into libgccjit.so causes problems (is it safe
to have two completely separate co
test for x86_64 and not i?86, because
they cover exactly the same set of targets (if only LP64 x86 / x86_64 is
relevant, use { { i?86-*-* x86_64-*-* } && lp64 }).
--
Joseph S. Myers
jos...@codesourcery.com
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+/^[A-Z]/ {
+ version = $1;
+ next;
+}
+
+$1 == symbol {
+ print version
+ exit
+}
--
Joseph S. Myers
jos...@codesourcery.com
hen building for the target, rather than fixing it
to work (although meaningless) for the target.
--
Joseph S. Myers
jos...@codesourcery.com
On Sat, 25 Oct 2014, Marek Polacek wrote:
> + pp_c_ws_string (cpp, "aka");
That should be _("aka"), as it's an English word, not a C syntax
construct.
OK with that change.
--
Joseph S. Myers
jos...@codesourcery.com
pretation, and if so then give diagnostics using the
new macro that uses warning_at instead of pedwarn.
(And otherwise the code would fall through to the existing cases relating
to mismatch in signedness between two pointers to integers.)
--
Joseph S. Myers
jos...@codesourcery.com
1-fp t-softfp t-hardfp"
;;
+ e500v2)
+ tmake_file="${tmake_file} t-hardfp-sfdf rs6000/t-e500v2-fp
t-softfp t-hardfp"
+ ;;
*)
echo "Unknown ppc_fp_type $ppc_fp_type" 1>&2
exit 1
--
Joseph S. Myers
jos...@codesourcery.com
ow to find GMP include files])
from gcc/configure.ac;
(b) copy
GMPINC = @GMPINC@
from gcc/Makefile.in;
(c) add $(GMPINC) to AM_CPPFLAGS.
--
Joseph S. Myers
jos...@codesourcery.com
ems to lose the information about which extensions are supported by
GCC (given that not all of ACLE is supported; e.g. arm_acle.h has only the
CRC intrinsics, while __fp16 isn't supported for AArch64 and the support
for ARM corresponds to an older version of the specification).
--
other such configure options for
MPFR, MPC, CLooG, ISL, libiconv at least - whether they are relevant
depends on whether your code ends up including the relevant headers.)
--
Joseph S. Myers
jos...@codesourcery.com
New command-line options need documenting in invoke.texi.
--
Joseph S. Myers
jos...@codesourcery.com
On Sat, 25 Oct 2014, DJ Delorie wrote:
> Fixed PR/63582. Tested with no regressions on x86-64 and ix86. Ok?
>
> * tree.c (build_common_tree_nodes): Don't even store the
> __int128 types if they're not supported.
OK.
--
Joseph S. Myers
jos...@codesourcery.com
LOAT_MODE_P (mode) && SPE_SIMD_REGNO_P (regno))
reg_size = UNITS_PER_FP_WORD;
else
--
Joseph S. Myers
jos...@codesourcery.com
icky, but I hope what
> I did would work fine.
>
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
>
> 2014-10-23 Marek Polacek
>
> PR c/63626
> * c-decl.c (pop_scope): Don't print warning in external_scope.
>
> * gcc.dg/pr63626.c: New test.
OK.
--
Joseph S. Myers
jos...@codesourcery.com
Continuing the cleanups of libgcc soft-fp configuration for
powerpc*-*-linux* in preparation for implementing
TARGET_ATOMIC_ASSIGN_EXPAND_FENV for soft-float and e500, this patch
optimizes the choice of which functions to build for the 32-bit
classic hard-float and soft-float cases. (e500 will be
On Wed, 22 Oct 2014, Richard Biener wrote:
> On October 22, 2014 7:19:33 PM CEST, "Joseph S. Myers"
> wrote:
> >On Wed, 22 Oct 2014, Rainer Orth wrote:
> >
> >> 2014-10-22 Rainer Orth
> >>
> >>* Makefile.in (build/genmat
modules.
--
Joseph S. Myers
jos...@codesourcery.com
t to use \n only -
if in the end something is output on a text stream, it's stdio's job to
convert \n to \r\n as needed.
--
Joseph S. Myers
jos...@codesourcery.com
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp"
+ fi
extra_parts="$extra_parts ecrti.o ecrtn.o ncrti.o ncrtn.o"
md_unwind_header=rs6000/linux-unwind.h
;;
--
Joseph S. Myers
jos...@codesourcery.com
On Tue, 21 Oct 2014, Manuel López-Ibáñez wrote:
> On 19 October 2014 18:08, Joseph S. Myers wrote:
> > On Sat, 18 Oct 2014, Manuel López-Ibáñez wrote:
> >
> >> What about this version?
> >>
> >> Give an error whenever the @dfn{base standard} (see @opti
+ if (!host_compiler)
> +fatal_error ("COLLECT_GCC must be set.");
Diagnostics should not end with ".".
--
Joseph S. Myers
jos...@codesourcery.com
soft-float and e500 in
TARGET_ATOMIC_ASSIGN_EXPAND_FENV that will need that (along with libgcc
changes to make libgcc's copies of the soft-fp functions into compat
symbols when they are available in glibc). That's nothing to do with the
timeout issue.
--
Joseph S. Myers
jos...@codesourcery.com
On Mon, 20 Oct 2014, David Malcolm wrote:
> On Fri, 2014-10-17 at 21:52 +0000, Joseph S. Myers wrote:
> [...snip static linkage discussion...]
>
> > The dump file handling appears to have no I/O error checking (no checking
> > for error on fopen, nothing obvious to pre
On Mon, 20 Oct 2014, David Malcolm wrote:
> +Necessary to regenerate @file{jit/docs/_build/texinfo} from the .rst
I'd say @file{.rst}, but otherwise looks OK to me.
--
Joseph S. Myers
jos...@codesourcery.com
(and so not include system headers directly if
they are included by system.h) even if no other GCC headers are useful in
any way.
--
Joseph S. Myers
jos...@codesourcery.com
n C99 and add
> pedwarn for it.
>
> * gcc.dg/pr63567-3.c: New test.
> * gcc.dg/pr63567-4.c: New test.
OK.
--
Joseph S. Myers
jos...@codesourcery.com
nt bug there's no need for you to
fix), but still as a design principle things should be structured to avoid
splitting up English fragments like that.
--
Joseph S. Myers
jos...@codesourcery.com
-time undefined behavior.
--
Joseph S. Myers
jos...@codesourcery.com
ic-errors may give an error *if* there is compile-time
undefined behavior (not if the not-definedness is something other than
undefined behavior, or is undefined behavior only if the code in question
is executed, although it will still give a warning for such cases if
-pedantic does).
--
Jo
ther cases, but not
cases where the standard requires successful translation).
--
Joseph S. Myers
jos...@codesourcery.com
seems much
better only handled on GIMPLE. It seems more plausible something could
depend on STRIP_[SIGN_]NOPS calls.
--
Joseph S. Myers
jos...@codesourcery.com
r error on fclose (or fwrite)).
--
Joseph S. Myers
jos...@codesourcery.com
Although Sphinx isn't a build dependency, as a dependency for
regenerating checked-in files I think it should be documented in
install.texi (like autoconf, gettext, etc.).
--
Joseph S. Myers
jos...@codesourcery.com
s even in C99 and add pedwarn
> for it.
>
> * gcc.dg/pr61096-1.c: Change dg-error into dg-warning.
> * gcc.dg/pr63567-1.c: New test.
> * gcc.dg/pr63567-2.c: New test.
OK.
--
Joseph S. Myers
jos...@codesourcery.com
e code is only invalid
at runtime and is valid at compile time as long as it never gets
executed).
--
Joseph S. Myers
jos...@codesourcery.com
ic links." I'm doubtful that's of practical
relevance to systems people are building GCC on any more.
I don't have any comments on the other parts of this patch.
--
Joseph S. Myers
jos...@codesourcery.com
On Fri, 17 Oct 2014, Manuel López-Ibáñez wrote:
> Thus, I drafted some guidelines
> at:https://gcc.gnu.org/wiki/Better_Diagnostics#guidelines
>
> Please, could you take a look and comment whether I got it right/wrong?
Yes, that looks right to me.
--
Joseph S. Myers
jos...@codesourcery.com
d on x86_64-linux, ok for trunk?
OK.
--
Joseph S. Myers
jos...@codesourcery.com
code; in this case of require_constant with a compound literal, we know
the code is invalid in ISO C terms, so it's safe to diagnose it then
interpret it in a sensible way.)
--
Joseph S. Myers
jos...@codesourcery.com
Changes to architecture-independent files must use
architecture-independent conditionals, so __BYTE_ORDER__ not __ARMEB__.
--
Joseph S. Myers
jos...@codesourcery.com
y for calculations where bit offsets
are relevant. But under the existing logic, bitsizetype is expected to be
bigger than sizetype, even if inefficient.)
--
Joseph S. Myers
jos...@codesourcery.com
G + 1 looks logically correct for
bitsizetype). The other changes are OK.
--
Joseph S. Myers
jos...@codesourcery.com
On Wed, 15 Oct 2014, Jeff Law wrote:
> On 10/15/14 15:46, Joseph S. Myers wrote:
> > On Wed, 15 Oct 2014, Marek Polacek wrote:
> >
> > > We've got a complaint that the "dereferencing pointer to incomplete
> > > type" error is printed for all occurr
e type. I think there should be some sort of annotation of
the type (either in the type itself, or on the side) that *only* means an
error has been given for the type being incomplete, rather than inserting
error_mark_node into the type.
--
Joseph S. Myers
jos...@codesourcery.com
On Wed, 15 Oct 2014, David Malcolm wrote:
> As for the "bindir" in site.exp, Joseph asked me when the library
> invokes a driver to convert from .s to .so to:
>
> On Tue, 2014-09-23 at 23:27 +, Joseph S. Myers wrote:
> > * use the $(target_noncanonical)-gcc-$(vers
; PR c/63495
> * stor-layout.c (min_align_of_type): Don't decrease alignment
> through BIGGEST_FIELD_ALIGNMENT or ADJUST_FIELD_ALIGN if
> TYPE_USER_ALIGN is set.
>
> * gcc.target/i386/pr63495.c: New test.
OK.
--
Joseph S. Myers
jos...@codesourcery.com
orward.
>
> Thanks. I will wait at least until the end of next week.
>
> I'd like to hear from Joseph ;).
I approve of the change in default (I just don't think it's a change to
make on my say-so alone).
--
Joseph S. Myers
jos...@codesourcery.com
On Tue, 7 Oct 2014, Marek Polacek wrote:
> 2014-10-07 Marek Polacek
>
> PR c/59717
> * c-decl.c (header_for_builtin_fn): New function.
> (implicitly_declare): Suggest which header to include.
>
> * gcc.dg/pr59717.c: New test.
OK.
--
Patches adding new -march= values need to update invoke.texi.
--
Joseph S. Myers
jos...@codesourcery.com
If adding a new option, you need to document it in invoke.texi.
--
Joseph S. Myers
jos...@codesourcery.com
On Mon, 6 Oct 2014, Steve Kargl wrote:
> On Mon, Oct 06, 2014 at 08:38:14PM +0000, Joseph S. Myers wrote:
> > Since -static-libquadmath introduces LGPL requirements on redistributing
> > the resulting binaries (that you provide source or relinkable object files
> > to
-10-04 Marek Polacek
>
> * c-convert.c (convert): Use error_operand_p.
> * c-typeck.c (require_complete_type): Likewise.
> (really_atomic_lvalue): Likewise.
> (digest_init): Likewise.
> (handle_omp_array_sections_1): Likewise.
OK.
--
Joseph S. Myers
jos...@codesourcery.com
n
if you link in GCC's other libraries statically, it would seem a good idea
for the documentation of this option to make that explicit.
--
Joseph S. Myers
jos...@codesourcery.com
he warning was guarded only by !flag_gnu89_inline.
>
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
OK.
--
Joseph S. Myers
jos...@codesourcery.com
ed on x86_64-unknown-linux-gnu (Fedora 20).
>
> OK for trunk?
OK, minus the if (0) code:
> + if (0)
> +{
> + int i;
> + for (i = 0; i < argc; i++)
> + printf ("argc[%i]: %s\n", i, argv[i]);
> +}
--
Joseph S. Myers
jos...@codesourcery.com
sages from sentence fragments. If
you call them e.g. array_gmsgid and spawn_gmsgid they should both get
extracted by exgettext for translation.
--
Joseph S. Myers
jos...@codesourcery.com
On Tue, 30 Sep 2014, Richard Earnshaw wrote:
> GCC is written in C++ these days, so technically, you need the C++
> standard :-)
And, while C++14 requires plain int bit-fields to be signed, GCC is
written in C++98/C++03.
--
Joseph S. Myers
jos...@codesourcery.com
those options in install.texi. I see no such documentation
in this patch.
--
Joseph S. Myers
jos...@codesourcery.com
parately for each target, or have a
well-defined separation between bits needing building separately and bits
that can be built once and ways to avoid non-obvious target dependencies
in bits built once.)
--
Joseph S. Myers
jos...@codesourcery.com
DFmode; that was what
I concluded when making DFP work for e500
<https://gcc.gnu.org/ml/gcc-patches/2008-06/msg00270.html>.
--
Joseph S. Myers
jos...@codesourcery.com
by an explicit write
> of a truncation byte to make sure, but it *is* another truncation.
>
> Presumably I should address this in a followup, by making that be
> dynamically-allocated?
Yes. Arbitrary limits should be avoided in GNU.
--
Joseph S. Myers
jos...@codesourcery.com
r different targets, so that code for an offload
accelerator can go through the JIT).
The documentation referring to the dmalcolm/jit branch will of course need
updating to refer to trunk (and GCC 5 and later releases) once this is on
trunk.
--
Joseph S. Myers
jos...@codesourcery.com
ntEnd MiddleEnd Target
USE_GLD FrontEndDriver
WCHAR_TYPE_SIZE Defaults FrontEnd
WIDEST_HARDWARE_FP_SIZE FrontEnd Target
WINT_TYPE Defaults FrontEnd
WORDS_BIG_ENDIAN Defaults FrontEnd MiddleEnd
--
Joseph S. Myers
jos...@codesourcery.com
On Tue, 23 Sep 2014, Uros Bizjak wrote:
> On Tue, Sep 23, 2014 at 7:57 PM, Joseph S. Myers
> wrote:
>
> >> Attached patch avoids triggering denormal exceptions when FP insns are
> >> used to check for non-zero denormal values.
> >
> > But I thought the p
normal values was consistent with the
processor. If the processor is in a mode supporting such values, the
exceptions should be masked. That is, the present test should pass
unconditionally, if it doesn't pass that indicates a bug (which might be
appropriate for XFAILing).
-
--- libgcc/libgcc2.h(revision 215458)
+++ libgcc/libgcc2.h(working copy)
@@ -34,10 +34,6 @@ extern void __clear_cache (char *, char *);
extern void __eprintf (const char *, const char *, unsigned int, const char *)
__attribute__ ((__noreturn__))
still
depends on the target macros NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL and
TARGET_DLLIMPORT_DECL_ATTRIBUTES, however, but we shouldn't make all
tree.h users include tm.h.)
--
Joseph S. Myers
jos...@codesourcery.com
. on the macro (and make sure they have the same
default). And if you're changing the semantics of the macro from defined
/ undefined to true / false, you need to watch out for any existing
definitions with an empty expansion, or an expansion to 0, etc.
--
Joseph S. Myers
jos...@codesourcery.com
* config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): remove
>assignment of exception_section.
This ChangeLog entry seems very incomplete. It doesn't mention the
changes for other architectures, or to defaults.h, or to the
documentation, for example.
--
Joseph S. Myers
jos...@codesourcery.com
On Fri, 19 Sep 2014, Joseph S. Myers wrote:
> On Thu, 18 Sep 2014, Joseph S. Myers wrote:
>
> > On Thu, 18 Sep 2014, Uros Bizjak wrote:
> >
> > > OK for mainline and release branches.
> >
> > I've omitted ia64 from the targets in the testcase in the
On Thu, 18 Sep 2014, Joseph S. Myers wrote:
> On Thu, 18 Sep 2014, Uros Bizjak wrote:
>
> > OK for mainline and release branches.
>
> I've omitted ia64 from the targets in the testcase in the release branch
> version, given the lack of any definition of FP_TRAPPING_
ot.
> And we handle it right for
> -fdelete-null-pointer-checks -fsanitize=undefined
> but not for
> -fsanitize=undefined -fdelete-null-pointer-checks
> Joseph, thoughts where to override it instead (I mean, after all
> options are processed)?
finish_options is the obvious place to
On Fri, 19 Sep 2014, Kito Cheng wrote:
> Hi Joseph:
>
> Here is updated patch and ChangeLog,
>
> However I don't have commit write yet, can you help me to commit it? thanks
Committed.
--
Joseph S. Myers
jos...@codesourcery.com
path leads to that exit code? How does the driver distinguish this from a
call to fatal_error?
What about the above exit codes was different before the patch, that means
the driver ICE detection can only work given the diagnostic.c changes?
--
Joseph S. Myers
jos...@codesourcery.com
uld work for ia64, but haven't
tested that.)
--
Joseph S. Myers
jos...@codesourcery.com
test.
> * gcc.dg/cpp/pr61854-3.h: New test.
> * gcc.dg/cpp/pr61854-4.c: New test.
> * gcc.dg/cpp/pr61854-5.c: New test.
> * gcc.dg/cpp/pr61854-6.c: New test.
> * gcc.dg/cpp/pr61854-7.c: New test.
> * gcc.dg/cpp/pr61854-c90.c: New test.
>
IFT) & FP_EX_ALL)
+#define FP_TRAPPING_EXCEPTIONS ((~_fcw >> FP_EX_SHIFT) & FP_EX_ALL)
#define FP_ROUNDMODE (_fcw & FP_RND_MASK)
#endif
--
Joseph S. Myers
jos...@codesourcery.com
d what's defined before/after inclusion. So while I suspect
the include guards would not cause any problems in those headers, it's not
obvious they're desirable either.)
--
Joseph S. Myers
jos...@codesourcery.com
nappropriately?).
--
Joseph S. Myers
jos...@codesourcery.com
On Mon, 15 Sep 2014, Marek Polacek wrote:
> On Mon, Sep 15, 2014 at 05:49:25PM +0000, Joseph S. Myers wrote:
> > On Mon, 15 Sep 2014, Marek Polacek wrote:
> >
> > > We must be careful to properly handle code such as "1 //**/ 2", which
> > > has a di
On Wed, 17 Sep 2014, Bernd Schmidt wrote:
> On 09/16/2014 11:18 PM, Joseph S. Myers wrote:
>
> > (That TYPE_MAIN_VARIANT maps an array of qualified type to an array of
> > corresponding unqualified type necessitates lots of special cases in the
> > front end to avoid ap
fine NOTRUNC 1
#elif defined(L_multc3) || defined(L_divtc3)
# define MTYPE TFtype
# define CTYPE TCtype
# define MODE tc
-# if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128
-# define CEXT l
-# else
-# define CEXT LIBGCC2_TF_CEXT
-# endif
+# define CEXT __LIBGCC_TF_FUNC_EXT__
# define NOTRUNC 1
#else
# error
--
Joseph S. Myers
jos...@codesourcery.com
y types, since in C
terms array types are always unqualified and are unrelated to an array of
corresponding unqualified element type.)
--
Joseph S. Myers
jos...@codesourcery.com
icient
condition for removing it.
cfgrtl.c
gimple-fold.c
mode-switching.c
tree-inline.c
vmsdbgout.c
fortran/f95-lang.c
fortran/trans-decl.c
objc/objc-act.c
--
Joseph S. Myers
jos...@codesourcery.com
er ABI and not already there.
config.sub patches have to go to config-patches first, we only ever import
the latest unmodified config.sub and config.guess from config.git, without
making local changes.
--
Joseph S. Myers
jos...@codesourcery.com
) operations on normal types and modes, rather
than carrying a load of special types and modes through to the back end.)
--
Joseph S. Myers
jos...@codesourcery.com
was committed without testcases - again, it's hard to tell if a fix
affects the fix to the original issue the patch was supposed to address.)
--
Joseph S. Myers
jos...@codesourcery.com
t you fix.
--
Joseph S. Myers
jos...@codesourcery.com
program,
a more conservative approach may be needed to avoid errors for valid
cases.
--
Joseph S. Myers
jos...@codesourcery.com
ds, TFmode
is only supported in libgcc if it's long double, and most of the runtime
support is expected to be in libc not libgcc, under symbol names from some
ABI for that architecture. In those cases, building in the libgcc support
for e.g. __multc3 in the absence of libc support would be pro
DOUBLE_TYPE_SIZE == 80)
+#ifdef __LIBGCC_HAS_XF_MODE__
+#define LIBGCC2_HAS_XF_MODE 1
+#else
+#define LIBGCC2_HAS_XF_MODE 0
#endif
-#ifndef LIBGCC2_HAS_TF_MODE
-#define LIBGCC2_HAS_TF_MODE \
- (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128)
+#ifdef __LIBGCC_HAS_TF_MODE__
+#define LIBGCC2_HAS_TF_MODE 1
+#else
+#define LIBGCC2_HAS_TF_MODE 0
#endif
#ifndef __LIBGCC_SF_MANT_DIG__
--
Joseph S. Myers
jos...@codesourcery.com
On Thu, 11 Sep 2014, Marc Glisse wrote:
> On Thu, 11 Sep 2014, Joseph S. Myers wrote:
>
> > On Thu, 11 Sep 2014, Marc Glisse wrote:
> >
> > > I don't know what kind of test you have in mind, so I added a runtime
> > > test. I
> > > am just gues
f
> that's the goal.
Yes, a runtime test. I don't think there should be an xfail without it
actually having been tested to fail (and then such an xfail should come
with a comment referencing the bug filed in Bugzilla).
--
Joseph S. Myers
jos...@codesourcery.com
y from running them, and to run
each test independently, is the QMTest model, though there are other
issues with how that handles some things that come up in toolchain
testing.)
--
Joseph S. Myers
jos...@codesourcery.com
there should be some sort of testcase that these values aren't 0.
--
Joseph S. Myers
jos...@codesourcery.com
On Wed, 10 Sep 2014, Jakub Jelinek wrote:
> On Tue, Sep 09, 2014 at 10:51:23PM +0000, Joseph S. Myers wrote:
> > On Thu, 28 Aug 2014, Maxim Ostapenko wrote:
> >
> > > diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
> > > index 0cc7593..67b8c5b 100644
> > &
for (n = st1.st_size; n; n -= len)
This assignment would silently truncate a large file size on 32-bit
platforms. A variable that can store file sizes should be off_t not
size_t (then you need to be careful about any mixing of signed and
unsigned types).
--
Joseph S. Myers
jos...@codesourcery.com
1 - 100 of 1676 matches
Mail list logo