linux-mips
[Top] [All Lists]

Re: Can't execute any MIPS binary

To: Edin Hodzic <dino.hodzic@vudu.com>
Subject: Re: Can't execute any MIPS binary
From: Matteo Croce <rootkit85@yahoo.it>
Date: Wed, 13 Feb 2008 00:49:07 +0100
Cc: linux-mips@linux-mips.org
In-reply-to: <47B22E4F.4070308@vudu.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <200802130034.25052.rootkit85@yahoo.it> <47B22E4F.4070308@vudu.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: KMail/1.9.6 (enterprise 0.20080118.763038)
Il Wednesday 13 February 2008 00:39:59 Edin Hodzic ha scritto:
> -march=mips1 or -mips1 should do the trick, no?
> 
> Dino
> 
> On 02/12/2008 03:34 PM, Matteo Croce said:
> > Hi,
> > I have a machine, an AR7 MIPS router I want to hack, but I'm unable
> > to run _any_ executable on that machine outside the ones in the firmware.
> > I tried building a static mips1 binary, but it fails so:
> >
> > # /var/test.bin
> > /var/test.bin: 1: Syntax error: "(" unexpected
> >
> > so I downloaded a binary builtin in the firmware and I compared it to my 
> > own:
> >
> > $ file busybox.bin test.bin
> > busybox.bin: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), 
> > dynamically linked (uses shared libs), stripped
> > test.bin:    ELF 32-bit LSB executable, MIPS, version 1 (SYSV), statically 
> > linked, stripped
> >
> > busybox.bin is the builtin busybox while test.bin is a static HelloWorld
> >
> > I ran readelf on it:
> >
> > $ readelf -h busybox.bin
> > ELF Header:
> >   Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
> >   Class:                             ELF32
> >   Data:                              2's complement, little endian
> >   Version:                           1 (current)
> >   OS/ABI:                            UNIX - System V
> >   ABI Version:                       0
> >   Type:                              EXEC (Executable file)
> >   Machine:                           MIPS R3000
> >   Version:                           0x1
> >   Entry point address:               0x4037e0
> >   Start of program headers:          52 (bytes into file)
> >   Start of section headers:          337304 (bytes into file)
> >   Flags:                             0x5, noreorder, cpic, mips1
> >   Size of this header:               52 (bytes)
> >   Size of program headers:           32 (bytes)
> >   Number of program headers:         6
> >   Size of section headers:           40 (bytes)
> >   Number of section headers:         21
> >   Section header string table index: 20
> > $ readelf -h test.bin
> > ELF Header:
> >   Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
> >   Class:                             ELF32
> >   Data:                              2's complement, little endian
> >   Version:                           1 (current)
> >   OS/ABI:                            UNIX - System V
> >   ABI Version:                       0
> >   Type:                              EXEC (Executable file)
> >   Machine:                           MIPS R3000
> >   Version:                           0x1
> >   Entry point address:               0x400140
> >   Start of program headers:          52 (bytes into file)
> >   Start of section headers:          11780 (bytes into file)
> >   Flags:                             0x50001007, noreorder, pic, cpic, o32, 
> > mips32
> >   Size of this header:               52 (bytes)
> >   Size of program headers:           32 (bytes)
> >   Number of program headers:         3
> >   Size of section headers:           40 (bytes)
> >   Number of section headers:         17
> >   Section header string table index: 16
> > $ diff -u <(readelf -h busybox.bin) <(readelf -h test.bin)
> > --- /dev/fd/63  2008-02-13 00:26:48.880261477 +0100
> > +++ /dev/fd/62  2008-02-13 00:26:48.880261477 +0100
> > @@ -8,13 +8,13 @@
> >    Type:                              EXEC (Executable file)
> >    Machine:                           MIPS R3000
> >    Version:                           0x1
> > -  Entry point address:               0x4037e0
> > +  Entry point address:               0x400140
> >    Start of program headers:          52 (bytes into file)
> > -  Start of section headers:          337304 (bytes into file)
> > -  Flags:                             0x5, noreorder, cpic, mips1
> > +  Start of section headers:          11780 (bytes into file)
> > +  Flags:                             0x50001007, noreorder, pic, cpic, 
> > o32, mips32
> >    Size of this header:               52 (bytes)
> >    Size of program headers:           32 (bytes)
> > -  Number of program headers:         6
> > +  Number of program headers:         3
> >    Size of section headers:           40 (bytes)
> > -  Number of section headers:         21
> > -  Section header string table index: 20
> > +  Number of section headers:         17
> > +  Section header string table index: 16
> >
> > The router firmware uses:
> > # cat /proc/version
> > Linux version 2.4.17_mvl21-malta-mips_fp_le (root@localhost.localdomain) 
> > (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Fri Mar 18 11:00:12 
> > EST 2005
> >
> > While I have a gcc-4.2.3 toolchain with 2.6.24 headers.
> >
> >
> > How can I build a mips1 binary instead of the mips32 I make? Can I disable 
> > o32?
> >
> > Best Regards,
> > Matteo Croce
> >
> >   
> 

Already tried, won't work.
I attach the binaries

Attachment: test.bin
Description: application/executable

Attachment: busybox.bin
Description: application/executable

<Prev in Thread] Current Thread [Next in Thread>