From 7844dafe621c7151a301220948edf494af2b8af9 Mon Sep 17 00:00:00 2001 From: mischief Date: Wed, 5 Aug 2015 06:26:23 -0700 Subject: libmach: set correct endianness with little endian ELF32 mips binaries --- sys/src/libmach/executable.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'sys/src/libmach/executable.c') diff --git a/sys/src/libmach/executable.c b/sys/src/libmach/executable.c index 4dbe94d92..c5b2e652d 100644 --- a/sys/src/libmach/executable.c +++ b/sys/src/libmach/executable.c @@ -733,8 +733,16 @@ elf32dotout(int fd, Fhdr *fp, ExecHdr *hp) break; case MIPS: mach = &mmips; - fp->type = FMIPS; - fp->name = "mips ELF32 executable"; + if(ep->ident[DATA] == ELFDATA2LSB){ + fp->type = FMIPSLE; + fp->name = "mips le ELF32 executable"; + } else if(ep->ident[DATA] == ELFDATA2MSB){ + fp->type = FMIPS; + fp->name = "mips be ELF32 executable"; + } else { + werrstr("bad ELF32 encoding - not big or little endian"); + return 0; + } break; case SPARC64: mach = &msparc64; -- cgit v1.2.3