This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] microMIPS support
On Thu, 26 Apr 2012, Jan Kratochvil wrote:
> > > static const char *const mips_compression_strings[] = {
> >
> > Hmm, no objection to your suggestion per se, but is it allowed by C89?
>
> It is already used in GDB since:
> http://sourceware.org/ml/gdb-patches/2012-01/msg00973.html
> [obv] Code cleanup: add_setshow_enum_cmd: Make 1440 bytes of data segment read-only
But it's your own change and there wasn't any discussion about it there,
so I can't take it as an argument, sorry.
> I am not aware of any compatibility issue of it.
But are you absolutely sure that it was a supported construct with C89 or
are you only assuming having no counter-evidence? Do you have a copy of
the standard? Unfortunately I don't or otherwise I would have checked
myself and C99 doesn't note it in the list of major changes from the
previous version of the standard (but then I wouldn't classify it as a
major change).
At the time I learnt C (some 18 years ago) that certainly wasn't a
construct I had seen in any language reference I had available or was made
aware of in any other way and I am fairly sure it's quite a recent
addition. I first heard of it in the 2000s only (and then well into).
An equivalent construct that I am sure to be portable is:
typedef const char *ccharp;
const ccharp foo;
but I'm not sure that's maintainable -- too obfuscated in my view.
AFAIK we still require our code to conform to C89 (fortunately not K&R
anymore) or we could use lots of good stuff, starting from the long long
type (so much needed for MIPS opcode tables in opcodes/ among others; we
had a discussion in the context of MIPS segments not so long ago here as
well, ending with a piece of convoluted code to avoid both the long long
type and compiler warnings, depending on the configuration chosen),
through designated initialisers (suddenly you stop losing track of your
NULLs through your 50-member struct), etc.
Any comments, anyone?
Maciej