[PATCH] Adjust _Unwind_Word in unwind.h to version in libgcc.
Stefan Liebler
stli@linux.vnet.ibm.com
Wed Aug 5 10:41:00 GMT 2015
ping
Ok to commit?
On 07/28/2015 09:31 AM, Stefan Liebler wrote:
> Hi,
>
> I get the following warning while building glibc on s390-32 with gcc
> option -mzarch:
>
> In file included from unwind.c:26:0:
> unwind.c: In function 'unwind_stop':
> ../sysdeps/s390/jmpbuf-unwind.h:37:10: error: cast to pointer from
> integer of different size [-Werror=int-to-pointer-cast]
> (void *) (_Unwind_GetCFA (_context) \
> ^
> ../sysdeps/s390/jmpbuf-unwind.h:51:17: note: in definition of macro
> '_JMPBUF_UNWINDS_ADJ'
> ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj))
> ^
> unwind.c:62:12: note: in expansion of macro '_JMPBUF_CFA_UNWINDS_ADJ'
> || ! _JMPBUF_CFA_UNWINDS_ADJ (buf->cancel_jmp_buf[0].jmp_buf,
> context,
>
> Building on s390-32 in esa-mode or s390-64 is fine.
>
> _Unwind_GetCFA returns an _Unwind_Word which is an unsigned
> with a size of 4 bytes on s390-32 (esa-mode) and 8 bytes on s390-64.
> On s390-32 (zarch-mode), _Unwind_Word has a size of 8 bytes, too.
>
> _Unwind_Word is defined in sysdeps/generic/unwind.h as
> typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
>
> In libgcc unwind header (<gcc-src>/libgcc/unwind-generic.h) this typedef
> has changed to
> "typedef unsigned _Unwind_Word
> __attribute__((__mode__(__unwind_word__)));" in June 2008.
> With this mode, _Unwind_Word has a size of 4 bytes on s390-32 (zarch-mode).
> The same change applies to _Unwind_Sword.
> Thus this patch updates the unwind header according to these changes.
>
> Afterwards, the int-to-pointer-cast-warning is gone away on s390-32
> (zarch-mode) and the testsuite runs with the same test-failures as
> s390-32 (esa-mode) plus FAIL: c++-types-check. Here register_t is
> expected to has a size of 4 bytes, but it has a size of 8 bytes
> due to
> posix/sys/types.h:205:typedef int register_t __attribute__ ((__mode__
> (__word__)));
>
> The libgcc-patch for gcc 4.4 can be found here:
> "[PATCH, spu, unwind] Remove attribute ((mode (word))) from unwind.h"
> https://gcc.gnu.org/ml/gcc-patches/2008-06/msg00969.html
>
> Ok to commit?
>
> Bye
> Stefan
>
> 2015-07-28 Stefan Liebler <stli@linux.vnet.ibm.com>
>
> * sysdeps/generic/unwind.h
> (_Unwind_Word): Use __mode__(__unwind_word__)
> instead of __mode__(__word__).
> (_Unwind_Sword): Likewise.
More information about the Libc-alpha
mailing list