2008/7/30 Aaron W. LaFramboise <[EMAIL PROTECTED]>: > Andrew Haley wrote: >> >> Aaron W. LaFramboise wrote: >>> >>> When building libjava stacktrace.o on i386-pc-mingw32, bootstrap fails >>> with: >>> >>>> ./sysdep/backtrace.h: In function '_Unwind_Reason_Code >>>> fallback_backtrace(_Unwind_Reason_Code (*)(_Unwind_Context*, void*), >>>> _Jv_UnwindState*)': >>>> ./sysdep/backtrace.h:107: error: ISO C++ forbids taking address of >>>> function '::main' >>> >>> On mingw32, backtrace.h is a symlink or copy to i386/backtrace.h, which >>> is what has this problem: >>> >>>> if (ctx.meth_addr == (_Jv_uintptr_t)jv_runmain >>>> || ctx.meth_addr == (_Jv_uintptr_t)_Jv_ThreadStart >>>> || (ctx.meth_addr - (_Jv_uintptr_t)main) < 16) >>>> break; >>> >>> The code needs the address of main to stop the unwind. What is the >>> proper way to suppress this warning? __extension__ doesn't seem to help. >>> [snip] > Sorry, I noticed now that there isn't actually a -pedantic anywhere in > there. Removing -Wextra and -Wall have no effect, so this is obviously a > default error. Adding -fpermissive turns the error into a warning.
* You don't need -pedantic to get a pedwarn. -pedantic enables all pedwarns but some of them are enabled even without -pedantic. * -fdiagnostics-show-option should tell you what is generating that diagnostic (but only if it can be disabled). If you are using trunk, it should show [-fpermissive]. * That is a "permissive error" or permerror for short. These are errors that can be downgraded to warnings using -fpermissive. * It would be interesting to know when this started to show up because as far as I see, it was a default pedwarn before, so nothing should have changed. What revision of GCC are you using to compile? In which revision did it work? * permerrors and default pedwarns are not affected by __extension__. Nonetheless, is there an __extension__ in that code? * Is i386/backtrace.h a system header? Cheers, Manuel.