From 36e9c27e9c7c71ded2f05481ceb52c7a6eceeaf3 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 16 Nov 2006 22:23:01 +0100 Subject: [PATCH] Updated brandelf.py. --- src/stub/scripts/brandelf.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/stub/scripts/brandelf.py b/src/stub/scripts/brandelf.py index 0ba58f48..ee0e863a 100644 --- a/src/stub/scripts/brandelf.py +++ b/src/stub/scripts/brandelf.py @@ -47,15 +47,31 @@ def do_file(fn): fp.seek(0, 0) e_ident = fp.read(16) fp.seek(0, 0) - if e_ident[:7] != "\x7f\x45\x4c\x46\x01\x01\x01": - raise Exception, "%s is not ELF" % fn + if e_ident[:4] != "\x7f\x45\x4c\x46": + raise Exception, "%s is not %s" % (fn, "ELF") if opts.bfdname == "elf32-i386" and opts.elfosabi == "freebsd": + if e_ident[4:7] != "\x01\x01\x01": + raise Exception, "%s is not %s" % (fn, opts.bfdname) fp.seek(7, 0) fp.write("\x09") + elif opts.bfdname == "elf32-i386" and opts.elfosabi == "linux": + if e_ident[4:7] != "\x01\x01\x01": + raise Exception, "%s is not %s" % (fn, opts.bfdname) + fp.seek(8, 0) + fp.write("Linux\x00\x00\x00") elif opts.bfdname == "elf32-i386" and opts.elfosabi == "openbsd": + if e_ident[4:7] != "\x01\x01\x01": + raise Exception, "%s is not %s" % (fn, opts.bfdname) fp.seek(7, 0) fp.write("\x0c") - elif opts.bfdname == "elf32-i386" and opts.elfosabi == "linux": + elif opts.bfdname == "elf32-powerpc" and opts.elfosabi == "linux": + if e_ident[4:7] != "\x01\x02\x01": + raise Exception, "%s is not %s" % (fn, opts.bfdname) + fp.seek(8, 0) + fp.write("Linux\x00\x00\x00") + elif opts.bfdname == "elf64-x86_64" and opts.elfosabi == "linux": + if e_ident[4:7] != "\x02\x01\x01": + raise Exception, "%s is not %s" % (fn, opts.bfdname) fp.seek(8, 0) fp.write("Linux\x00\x00\x00") else: