Manuel López-Ibáñez wrote:
> 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.

Right, so all we need to do is add -fpermissive to the build options.

> * 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?

No.

Thanks,
Andrew.

Reply via email to