On 07.10.2012 12:01, Matthias Klose wrote:
> On 06.10.2012 22:46, Ian Lance Taylor wrote:
>> On Sat, Oct 6, 2012 at 8:09 AM, Matthias Klose <[email protected]> wrote:
>>> current trunk fails to build on arm-linux with:
>>>
>>> In file included from ../../../../src/libbacktrace/backtrace.c:35:0:
>>> ../libgcc/unwind.h: In function '_Unwind_decode_typeinfo_ptr':
>>> ../libgcc/unwind.h:42:45: error: unused parameter 'base'
>>> [-Werror=unused-parameter]
>>> _Unwind_decode_typeinfo_ptr (_Unwind_Word base, _Unwind_Word ptr)
>>> ^
>>> ../libgcc/unwind.h: In function '__gnu_unwind_24bit':
>>> ../libgcc/unwind.h:68:41: error: unused parameter 'context'
>>> [-Werror=unused-parameter]
>>> __gnu_unwind_24bit (_Unwind_Context * context, _uw data, int compact)
>>> ^
>>> ../libgcc/unwind.h:68:54: error: unused parameter 'data'
>>> [-Werror=unused-parameter]
>>> __gnu_unwind_24bit (_Unwind_Context * context, _uw data, int compact)
>>> ^
>>> ../libgcc/unwind.h:68:64: error: unused parameter 'compact'
>>> [-Werror=unused-parameter]
>>> __gnu_unwind_24bit (_Unwind_Context * context, _uw data, int compact)
>>> ^
>>> cc1: all warnings being treated as errors
>>> make[8]: *** [backtrace.lo] Error 1
>>>
>>> the immediate fix is to mark all arguments as unused, however I don't know
>>> if
>>> this function should be used by libbacktrace, if it returns _URC_FAILURE
>>> unconditionally.
>>
>> The function is not used by libbacktrace. It's an inline function
>> defined in the header file, and the warning is about the inline
>> function definition. That is, this is a libgcc bug, not a
>> libbacktrace bug, it just happens to show up when compiling
>> libbacktrace for ARM
>>
>>
>>> * config/arm/unwind-arm.h (__gnu_unwind_24bit): Mark parameters
>>> as unused.
>>>
>>>
>>> --- libgcc/config/arm/unwind-arm.h (revision 192162)
>>> +++ libgcc/config/arm/unwind-arm.h (working copy)
>>> @@ -64,8 +64,11 @@
>>> return tmp;
>>> }
>>>
>>> +#define __unused __attribute__((unused))
>>> +
>>> static inline _Unwind_Reason_Code
>>> - __gnu_unwind_24bit (_Unwind_Context * context, _uw data, int compact)
>>> + __gnu_unwind_24bit (_Unwind_Context * context __unused, _uw data
>>> __unused,
>>> + int compact __unused)
>>> {
>>> return _URC_FAILURE;
>>> }
>>
>> Don't #define __unused. Just write __attribute__ ((unused)) on the
>> parameters. Break the lines as needed.
>>
>> This is OK with that change.
>
> committed the following. the base parameter in _Unwind_decode_typeinfo_ptr
> is unused too.
>
> Matthias
>
> 2012-10-07 Matthias Klose <[email protected]>
>
> * config/arm/unwind-arm.h (__gnu_unwind_24bit): Mark parameters
> as unused.
> (_Unwind_decode_typeinfo_ptr): Mark base as unused.
>
> Index: libgcc/config/arm/unwind-arm.h
> ===================================================================
> --- a/src/libgcc/config/arm/unwind-arm.h (revision 192162)
> +++ b/src/libgcc/config/arm/unwind-arm.h (working copy)
> @@ -39,7 +39,8 @@
> #endif
> /* Decode an R_ARM_TARGET2 relocation. */
> static inline _Unwind_Word
> - _Unwind_decode_typeinfo_ptr (_Unwind_Word base, _Unwind_Word ptr)
> + _Unwind_decode_typeinfo_ptr (_Unwind_Word base __attribute__ ((unused)),
> + _Unwind_Word ptr)
> {
> _Unwind_Word tmp;
>
> @@ -65,7 +66,9 @@
> }
>
> static inline _Unwind_Reason_Code
> - __gnu_unwind_24bit (_Unwind_Context * context, _uw data, int compact)
> + __gnu_unwind_24bit (_Unwind_Context * context __attribute__ ((unused)),
> + _Unwind_Context *_uw data __attribute__ ((unused)),
> + int compact __attribute__ ((unused)))
> {
> return _URC_FAILURE;
> }
>
and as a follow-up, fix the typo, committed as obvious
--- config/arm/unwind-arm.h (revision 192181)
+++ config/arm/unwind-arm.h (working copy)
@@ -67,7 +67,7 @@
static inline _Unwind_Reason_Code
__gnu_unwind_24bit (_Unwind_Context * context __attribute__ ((unused)),
- _Unwind_Context *_uw data __attribute__ ((unused)),
+ _uw data __attribute__ ((unused)),
int compact __attribute__ ((unused)))
{
return _URC_FAILURE;