This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] fix libbacktrace build failure on arm-linux
On 06.10.2012 22:46, Ian Lance Taylor wrote:
> On Sat, Oct 6, 2012 at 8:09 AM, Matthias Klose <doko@ubuntu.com> 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 <doko@ubuntu.com>
* 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;
}