Matt,

if you're using i386 RPMs busybox is compiled in a i386 arch and you're
installing an i386 machine, so endianess should be the same...

Moreover looking in the busybox code it seems that it fails here:

       if (f->header.e_ident[EI_CLASS] != ELFCLASSM
                        || f->header.e_ident[EI_DATA] != ELFDATAM
                        || f->header.e_ident[EI_VERSION] != EV_CURRENT
                        || !MATCH_MACHINE(f->header.e_machine)) {
                bb_error_msg("ELF file not for this architecture");
                return NULL;
        }

The correct macros should be the follwing:

/* x86 */
#if defined(__i386__)
#ifndef EM_486
#define MATCH_MACHINE(x) (x == EM_386)
#else
#define MATCH_MACHINE(x) (x == EM_386 || x == EM_486)
#endif
#define SHT_RELM        SHT_REL
#define Elf32_RelM      Elf32_Rel
#define ELFCLASSM       ELFCLASS32
#define CONFIG_USE_GOT_ENTRIES
#define CONFIG_GOT_ENTRY_SIZE 4
#define CONFIG_USE_SINGLE
#endif

So one of the conditions above is false. But looking at one of your
modules (found in the initrd you posted) all seems correct:

# readelf -h ext3.o
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:                              REL (Relocatable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          114152 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           40 (bytes)
  Number of section headers:         22
  Section header string table index: 21

I mean:

- magic is ok
- elf class is ELF32
- elf data is 2's complement, little endian (so endianess seems ok)
- elf version is current (ok)
- and MATCH_MACHINE seems ok, since it is Intel 80386

Have you found other details to verify that the problem is really in the
endianess?

Regards,
-Andrea

Matt Jamison wrote:
> No, I'm not installing on x86_64, but I do think I have this problem beat :)
> 
> The errors I've previously posted are due to Big Endian Little Endian 
> detection in Busy Box 1.1.1.
> 
> The problem is/was in the endian detection macros in platform.h.  A lot of 
> the 
> binaries (insmod etc) in busy box check a #define "BB_LITTLE_ENDIAN" to 
> decide Endianess at compile time.  The issue is that BB_LITTLE_ENDIAN was 
> never being defined in busybox 1.1.1.
> 
> I did find the svn check in that fixed this issue the same way I did, and it 
> is correct in the latest busy box versions:
> 
>         http://www.busybox.net/cgi-bin/viewcvs.cgi?rev=14654&view=rev
> 
>         Author:         landley
>         Date:   Fri Mar 24 19:01:59 2006 PST (4 months, 1 week ago)
> 
>         Log Message:
>         Define both big endian and little endian macros.
> 
> 
> Seems like the most appropriate fix is to upgrade to the latest busy box.  
> Why 
> this doesn't cause the same issues with 2.6 kernels, I'm not sure yet.
> 
> Thanks,
> 
> Matt

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sisuite-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sisuite-users

Reply via email to