https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40411
--- Comment #31 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot
Uni-Bielefeld.DE> ---
I've started looking at this again.
Norm's patch has a few problems:
* For one, it matches a couple of alias names for -std values, which
will never hit the specs machinery.
* Worse, though: since gcc 5 changed its default to -std=gnu11 it
doesn't work without an explicit -std=* option given. Instead, one
has to handle it the other way round: use values-xpg4.o only with an
explicit -std=c90 or -std=gnu90, and values-xpg6.o otherwise.
That default is also necessary because many runtime libraries
(libstdc++, libgfortran, libgo, probably others) depend on C99
semantics by default, and there's no way of determining in specs which
language is being linked for.
The attached patch does this, and includes a forward port of Jeff's
patch to escape special characters like `:' in %{S:X} expressions.
It also removes the xfail from the libstdc++ test that requires C99
semantics from libc to work.
There's still more investigation to be done on my part, like
* when exactly values-X[ac].o are appropriate,
* what Studio 15.c cc/c89/c99, CC, f77/f90/f95 do in this space
Also, there's the issue of copyright: I suspect Jeff's patch is large
enough to require an assignment (which may be hard to get after 8 years,
unless he has one in place already ;-). If this proves impossible, one
could omit the handling for -std=iso9899:199409 for now, which is only a
niche case (or introduce -std=c94 and make -std=iso9899:199409 an alias
for that, but that would be an ugly hack).
The same might be true for Norm's comment in his patch, though I suspect
Oracle has a corporate assignment on file.
Given how late in the GCC 7 cycle we are, I fear it's becoming too late
to get this in; however I still wanted to keep the ball rolling.
Rainer