Re: [C++] System Requirements

Michael Veksler
2013-12-18T12:47:02Z

On 17/12/13 06:02, Ben Longbons wrote:
> On Mon, Dec 16, 2013 at 6:29 PM, Andrew Pinski <pinskia@gmail.com> wrote:
>> I think we should support anything 3.0 and above. Since we won't be
>> using STL or templates that much.
> Really? I can see quite a few cases where gdb will either have to use
> the STL or reinvent it; the big one is vec.h but it's far from alone.
>
> I know there are reasons to avoid or reimplement specific *parts* of
> the STL, but I haven't seen justification to avoid it in general.
>
> And I think that it is quite dangerous to try to support building gdb
> on a platform that its developers do not regularly use. gcc 4.4 is
> common; 4.[678] is rising, and 4.1 looks supportable, just not by me.
> I can't even build gcc 4.2 or earlier on any of my systems, though I
> admit I haven't deeply investigated what makes them different from 4.3
>
> Anyway, this sounds like a topic for the not-yet written thread [C++]
> Style Guide ... the only thing I've heard is that gdb is *not* going
> to follow gcc, because it has different requirements, such as
> exceptions (which, incidentally, must happen before anything else in
> step 5).
>
>
> But back on topic ... I started this thread intending to ask "which
> versions of GCC do we *need* to support?", not "which versions of GCC
> can we afford to support?" ... I never expected anyone to defend
> versions before 3.4
>
> A lower GCC version requirement means that gdb maintainers will have
> to spend more time trying to work around the quirks of older GCC
> versions and trying to badly reimplement features that are already in
> later GCC versions.
>
Andrew was right, and I was wrong. I confused between the pain
I had when I supported gcc-2.95 (or was it egcs?) with the smaller
pain of supporting gcc-3.2/gcc-3.3. It was too long ago to
remember all the gory details.

Nevertheless, supporting pre-gcc-3.4 compilers is still a pain.
Not only because language semantics is different (two-phase
name lookup in templates vs. one) but because you can't easily
build old compilers on modern machines. And if you don't test
your code with a pre-gcc-3.4 then your code won't work with
earlier compilers.

Michael