The following targets (based on wildcarded entries from config.gcc) do *not* appear to define NO_IMPLICIT_EXTERN_C, i.e. GCC is configured to suppose their headers are not C++-aware and to add an implicit extern "C" around them. Are there any in this list which should not be, i.e. which should be presumed to have C++-aware headers? Conversely, are there any in this list whose maintainers can confirm that the headers are not C++-aware and so the current configuration is correct? Many are generic embedded targets with no fixed set of system headers, but in such cases is the implicit extern "C" really the right default?
In particular, I'm surprised at the Darwin configurations apparently not defining NO_IMPLICIT_EXTERN_C, and at most OpenBSD configurations not doing so (but alpha-openbsd gets it from alpha/alpha.h); VxWorks configurations are also inconsistent in this regard (powerpc-wrs-vxworks gets it from rs6000/sysv4.h). If NO_IMPLICIT_EXTERN_C were defined in elfos.h that would massively reduce the number of targets which do not define it (and therefore the number needing changing to replace NO_IMPLICIT_EXTERN_C by an IMPLICIT_EXTERN_C macro with the opposite sense). Note: if you belive your target should define NO_IMPLICIT_EXTERN_C but doesn't, then I suggest preparing and testing the appropriate patch to define it; I'd rather that no such changes are mixed up with inverting the sense of the target macro used. arc-*-elf* arm-*-coff* armel-*-coff* arm-semi-aof armel-semi-aof arm-wrs-vxworks arm*-*-ecos-elf arm*-*-eabi* arm*-*-symbianelf* arm*-*-elf ep9312-*-elf arm*-wince-pe* arm-*-pe* arm*-*-kaos* avr-*-* (other than avr-*-rtems*) bfin*-elf* bfin*-* c4x-* (other than c4x-*-rtems*) tic4x-* (other than tic4x-*-rtems*) fr30-*-elf frv-*-elf h8300-*-elf* h8300-*-* (other than h8300-*-rtems*) hppa1.1-*-osf* hppa1.1-*-bsd* i[34567]86-*-darwin* i[34567]86-*-elf* i[34567]86-sequent-ptx4* i[34567]86-sequent-sysv4* i[34567]86-*-aout* i[34567]86-*-openbsd2.* i[34567]86-*openbsd3.[0123] i[34567]86-*-openbsd* i[34567]86-*-coff* i[3456x]86-*-netware* i[34567]86-*-sysv5* i[34567]86-*-sysv4* i[4567]86-wrs-vxworks i[34567]86-*-uwin* i[34567]86-*-kaos* i860-*-sysv4* ia64*-*-elf* ip2k-*-elf iq2000*-*-elf* m32r-*-elf* m32rle-*-elf* m68hc11-*-* m6811-*-* m68hc12-*-* m6812-*-* m68k-*-aout* m68k-*-coff* m68020-*-elf* m68k-*-elf* m68k*-*-openbsd* m68k-*-uclinux* mcore-*-elf mcore-*-pe* mips*-*-openbsd* mipsisa32-*-elf* mipsisa32el-*-elf* mipsisa32r2-*-elf* mipsisa32r2el-*-elf* mipsisa64-*-elf* mipsisa64el-*-elf* mipsisa64sr71k-*-elf* mipsisa64sb1-*-elf* mipsisa64sb1el-*-elf* mips-*-elf* mipsel-*-elf* mips64-*-elf* mips64el-*-elf* mips64vr-*-elf* mips64vrel-*-elf* mips64orion-*-elf* mips64orionel-*-elf* mips-wrs-vxworks mips-wrs-windiss mipstx39-*-elf* mipstx39el-*-elf* mn10300-*-* pdp11-*-bsd pdp11-*-* powerpc-*-beos* powerpc-*-darwin* rs6000-ibm-aix4.[12]* powerpc-ibm-aix4.[12]* rs6000-ibm-aix4.[3456789]* powerpc-ibm-aix4.[3456789]* rs6000-ibm-aix5.1.* powerpc-ibm-aix5.1.* rs6000-ibm-aix[56789].* powerpc-ibm-aix[56789].* sh*-*-* (other than sh*-*-linux*, sh*-*-netbsd* and sh*-*-rtems*) sparc-*-openbsd* sparc64-*-openbsd* (deliberate #undef) sparc-*-sysv4* strongarm-*-elf* strongarm-*-pe strongarm-*-kaos* v850e1-*-* v850e-*-* v850-*-* vax-*-bsd* vax-*-sysv* vax-*-openbsd* vax-*-ultrix* xscale-*-elf xscale-*-coff -- Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/ [EMAIL PROTECTED] (personal mail) [EMAIL PROTECTED] (CodeSourcery mail) [EMAIL PROTECTED] (Bugzilla assignments and CCs)