Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140904145701.GR12888@brightrain.aerifal.cx>
Date: Thu, 4 Sep 2014 10:57:01 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: libc.so segfaults on mips

On Thu, Sep 04, 2014 at 04:56:40PM +0800, Рысь wrote:
> 
> 
> 4 сентября 2014 г. 15:35:45 KRAT, Rich Felker <dalias@...c.org> пишет:
> >On Thu, Sep 04, 2014 at 03:07:57PM +0800, Рысь wrote:
> >> Hi list!
> >> 
> >> Not a really blocking bug but I was wondering why cross compiled
> >> musl libc.so for embedded wrt system is segfaults with this:
> >> 
> >> % ./strace ./libc.so 
> >> execve("./libc.so", ["./libc.so"], [/* 10 vars */]) = 0
> >> --- {si_signo=SIGSEGV, si_code=SI_USER, si_errno=EPERM, si_addr=0x4}
> >(Segmentation fault) ---
> >> +++ killed by SIGSEGV +++
> >> Segmentation fault
> >> 
> >> A strange segfault with EPERM.
> >> 
> >> The target is mips2 bigendian router, specifically it is ar9331 SoC.
> >> This is how file reports on libc.so: ELF 32-bit MSB shared object,
> >> MIPS, MIPS-I version 1 (SYSV), dynamically linked, not stripped
> >> 
> >> Such a trouble I had once when system enforced mmap_min_addr,
> >> however there it has default value.
> >> 
> >> The toolchain is somewhat old: gcc 4.2.1, binutils 2.17.50.0.17 but
> >> confirmed working and stable.
> >> 
> >> Musl is 1.1.4.
> >> 
> >> What else can cause this?
> >
> >Could you attach the output of readelf -a libc.so? I'm guessing the
> >problem is a broken linker that's accepting the option but not
> >actually honoring -Bsymbolic-functions, or another toolchain related
> >issue.
> >
> >Rich
> 
> Ugh, some things changed because of removal of local patches, but issue still same. Segfault line for unmodified musl:
> 
> --- {si_signo=SIGSEGV, si_code=SI_USER, si_errno=EPERM, si_addr=0x7b2a0} (Segmentation fault) ---
> 
> The output of readelf attached.

This output looks incomplete. MIPS readelf -a output should end with a
large section that starts with:

Primary GOT:
 Canonical gp value: 000b2f90

followed by

 Local entries:
  ...

 Global entries:
  ...

This is where I would be able to tell if something is wrong. Do you
perhaps have an ancient version of readelf? If you're using the native
one that came with your mips toolchain, try the host readelf instead
from a normal system.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.