[fixincludes, v3] Don't define libstdc++-internal macros in Solaris 10+ <math.h>

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Fri Nov 11 10:03:00 GMT 2016

Hi Bruce,

> On 11/03/16 07:11, Rainer Orth wrote:
>> Ok for mainline now, and for backports to the gcc-6 and gcc-5 branches
>> after some soak time?
> Yes, please.  Thanks.

unfortunately, I didn't look closly enough when checking for failures.
There is one which I thought was preexisting:

math.h /vol/gcc/src/hg/trunk/local/fixincludes/tests/base/math.h differ: char 1135, line 57
*** math.h	Thu Nov 10 22:32:14 2016
--- /vol/gcc/src/hg/trunk/local/fixincludes/tests/base/math.h	Thu Nov 10 18:49:36 2016
*** 54,61 ****
--- 54,63 ----
  #if defined( HPUX11_FABSF_CHECK )
  #ifdef _PA_RISC
+ #ifndef __cplusplus
  #  define fabsf(x) ((float)fabs((double)(float)(x)))
+ #endif
  #endif  /* HPUX11_FABSF_CHECK */
Closer inspection shows that this is due to hpux11_fabsf using

    bypass    = "__cplusplus";

While this is fine for the fix itself, it's quite fragile since (as this
patch shows) it breaks as soon as any math.h test_text happens to
include __cplusplus, which is not that unlikely ;-)

I guess the solution is to use a more specific bypass pattern to make
the fix more robust.


Rainer Orth, Center for Biotechnology, Bielefeld University

More information about the Libstdc++ mailing list