The defaults.h definition of #define CPLUSPLUS_CPP_SPEC CPP_SPEC does not do the right thing with the cpp spec picked up from a spec file, which is now needed for -mmcu processing. Also, a spec file can't override CPLUSPLUS_CPP_SPEC as such, since that string is hard-coded into the compiler. By setting CPLUSPLUS_CPP_SPEC to "%(cpp)", we let the cc1plus preprocessor look up the actual value of the preprocessor specs.
OK to apply?
2014-11-09 Joern Rennecke <joern.renne...@embecosm.com> * /config/avr/avr.h (CPLUSPLUS_CPP_SPEC): Define. diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 0b48423..46ed0a4 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -505,6 +505,10 @@ typedef struct avr_args #define DRIVER_SELF_SPECS " %{mmcu=*:-specs=device-specs/specs-%*%s %<mmcu=*} " #define CPP_SPEC "" +/* We want cc1plus used as a preprocessor to pick up the cpp spec from the + per-device spec files */ +#define CPLUSPLUS_CPP_SPEC "%(cpp)" + #define CC1_SPEC "" #define CC1PLUS_SPEC "%{!frtti:-fno-rtti} \