On Mon, Jan 5, 2015 at 8:22 AM, Vicente Olivert Riera <[email protected]> wrote: > backtrace.c uses a word size provided by libunwind. In some > architectures like MIPS, libunwind makes that word size 64-bit for all > variants of the architecture. > > In the lines #90 and #98, backtrace.c tries to do a cast to a pointer, > which fails in all MIPS variants with 32-bit pointers, like MIPS32 or > MIPS64 n32, because it's trying to do a cast from a 64-bit wide variable > to a 32-bit pointer: > > Making all in os > make[2]: Entering directory > `/home/test/test/1/output/build/xserver_xorg-server-1.15.1/os' > CC WaitFor.lo > CC access.lo > CC auth.lo > CC backtrace.lo > backtrace.c: In function 'xorg_backtrace': > backtrace.c:90:20: error: cast to pointer from integer of different size > [-Werror=int-to-pointer-cast] > if (dladdr((void *)(pip.start_ip + off), &dlinfo) && > dlinfo.dli_fname && > ^ > backtrace.c:98:13: error: cast to pointer from integer of different size > [-Werror=int-to-pointer-cast] > (void *)(pip.start_ip + off)); > ^ > cc1: some warnings being treated as errors > make[2]: *** [backtrace.lo] Error 1 > make[2]: *** Waiting for unfinished jobs.... > > Making the cast to a pointer-sized integer, and then to a pointer fixes > the problem. > > Related: > https://bugs.freedesktop.org/show_bug.cgi?id=79939 > > Signed-off-by: Vicente Olivert Riera <[email protected]> > --- > os/backtrace.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/os/backtrace.c b/os/backtrace.c > index 3d1195b..3c101ae 100644 > --- a/os/backtrace.c > +++ b/os/backtrace.c > @@ -87,7 +87,7 @@ xorg_backtrace(void) > procname[1] = 0; > } > > - if (dladdr((void *)(pip.start_ip + off), &dlinfo) && > dlinfo.dli_fname && > + if (dladdr((void *)(long)(pip.start_ip + off), &dlinfo) && > dlinfo.dli_fname &&
You should cast to the integer type that's actually specified to be the same size as a pointer, intptr_t. That's what it's there for. _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
