Patch to binfmt_script to support arbitrary interpreters

Bradley Broom (broom@fit.qut.edu.au)
Thu, 16 May 1996 00:13:22 +1000 (EST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-851401618-832169602=:14979
Content-Type: TEXT/PLAIN; charset=US-ASCII

Several people seem to have independently suggested the following (including
me), so here it is.

The attached patch (to the old, decrepit 1.3.100 actually) causes a
userland program (/bin/usrexec) to be invoked on unrecognised executable
files. (It's done within binfmt_script to avoid duplicate code, but you
could easily do it as a separate binfmt if you wanted too.)

/bin/usrexec is supposed to look for and invoke a userland interpreter to
execute the "executable".

Also attached is version 0.000001 of such an interpreter that can
recognise windows binaries (seems to work, but it's a hack) and java binaries
and invoke their respective interpreters. Clearly it can be improved.

With this patch, there is no need for all that BINFMT_JAVA stuff in
the kernel.

Cheers,

Dr. Bradley Broom,
School of Data Communications, Email: broom@fit.qut.edu.au
Queensland University of Technology, Bus. : +61 7 3864 2769
GPO Box 2434, Brisbane, 4001, Australia. Fax : +61 7 3221 2384

---559023410-851401618-832169602=:14979
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.91.960516001322.14979B@bohr.fit.qut.edu.au>
Content-Description: patch

LS0tIGxpbnV4L2ZzL2V4ZWMuYy5vbGQJV2VkIE1heSAxNSAyMzowODowMCAx
OTk2DQorKysgbGludXgvZnMvZXhlYy5jCVdlZCBNYXkgMTUgMjM6MDg6MDYg
MTk5Ng0KQEAgLTYzLDE5ICs2MywyNCBAQA0KIA0KIHZvaWQgYmluZm10X3Nl
dHVwKHZvaWQpDQogew0KLSNpZmRlZiBDT05GSUdfQklORk1UX0VMRg0KLQlp
bml0X2VsZl9iaW5mbXQoKTsNCi0jZW5kaWYNCisJLyogVGhpcyBjYW5ub3Qg
YmUgY29uZmlndXJlZCBvdXQgb2YgdGhlIGtlcm5lbCAqLw0KKwkvKiBGb3Jt
YXRzIGFyZSBhY3R1YWxseSB0cmllZCBpbiB0aGUgcmV2ZXJzZSBvcmRlciBv
Zg0KKwkgKiByZWdpc3RyYXRpb24sIGFuZCBzY3JpcHQgZm9ybWF0IG11c3Qg
YmUgdGhlIGxhc3Qgb25lDQorCSAqIHRyaWVkLg0KKwkgKi8NCisJaW5pdF9z
Y3JpcHRfYmluZm10KCk7DQogDQogI2lmZGVmIENPTkZJR19CSU5GTVRfQU9V
VA0KIAlpbml0X2FvdXRfYmluZm10KCk7DQogI2VuZGlmDQogDQorI2lmZGVm
IENPTkZJR19CSU5GTVRfRUxGDQorCWluaXRfZWxmX2JpbmZtdCgpOw0KKyNl
bmRpZg0KKw0KICNpZmRlZiBDT05GSUdfQklORk1UX0pBVkENCiAJaW5pdF9q
YXZhX2JpbmZtdCgpOw0KICNlbmRpZg0KLQkvKiBUaGlzIGNhbm5vdCBiZSBj
b25maWd1cmVkIG91dCBvZiB0aGUga2VybmVsICovDQotCWluaXRfc2NyaXB0
X2JpbmZtdCgpOw0KIH0NCiANCiBpbnQgcmVnaXN0ZXJfYmluZm10KHN0cnVj
dCBsaW51eF9iaW5mbXQgKiBmbXQpDQotLS0gbGludXgvZnMvYmluZm10X3Nj
cmlwdC5jLm9sZAlXZWQgTWF5IDE1IDIyOjQ1OjUxIDE5OTYNCisrKyBsaW51
eC9mcy9iaW5mbXRfc2NyaXB0LmMJV2VkIE1heSAxNSAyMzowMTo0OSAxOTk2
DQpAQCAtMTEsNDUgKzExLDYzIEBADQogI2luY2x1ZGUgPGxpbnV4L21hbGxv
Yy5oPg0KICNpbmNsdWRlIDxsaW51eC9iaW5mbXRzLmg+DQogDQorI2RlZmlu
ZSBfUEFUSF9VU1JFWEVDCSIvYmluL3VzcmV4ZWMiDQorDQogc3RhdGljIGlu
dCBkb19sb2FkX3NjcmlwdChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLHN0
cnVjdCBwdF9yZWdzICpyZWdzKQ0KIHsNCiAJY2hhciAqY3AsICppbnRlcnAs
ICppX25hbWUsICppX2FyZzsNCiAJaW50IHJldHZhbDsNCi0JaWYgKChicHJt
LT5idWZbMF0gIT0gJyMnKSB8fCAoYnBybS0+YnVmWzFdICE9ICchJykgfHwg
KGJwcm0tPnNoX2JhbmcpKSANCisNCisJaWYgKGJwcm0tPnNoX2JhbmcpDQog
CQlyZXR1cm4gLUVOT0VYRUM7DQotCS8qDQotCSAqIFRoaXMgc2VjdGlvbiBk
b2VzIHRoZSAjISBpbnRlcnByZXRhdGlvbi4NCi0JICogU29ydGEgY29tcGxp
Y2F0ZWQsIGJ1dCBob3BlZnVsbHkgaXQgd2lsbCB3b3JrLiAgLVRZVA0KLQkg
Ki8NCiANCiAJYnBybS0+c2hfYmFuZysrOw0KLQlpcHV0KGJwcm0tPmlub2Rl
KTsNCi0JYnBybS0+ZG9udF9pcHV0PTE7DQotDQotCWJwcm0tPmJ1ZlsxMjdd
ID0gJ1wwJzsNCi0JaWYgKChjcCA9IHN0cmNocihicHJtLT5idWYsICdcbicp
KSA9PSBOVUxMKQ0KLQkJY3AgPSBicHJtLT5idWYrMTI3Ow0KLQkqY3AgPSAn
XDAnOw0KLQl3aGlsZSAoY3AgPiBicHJtLT5idWYpIHsNCi0JCWNwLS07DQot
CQlpZiAoKCpjcCA9PSAnICcpIHx8ICgqY3AgPT0gJ1x0JykpDQotCQkJKmNw
ID0gJ1wwJzsNCisJLyogRGV0ZXJtaW5lIGludGVycCwgaV9uYW1lLCBhbmQg
aV9hcmcuDQorCSAqLw0KKwlpZiAoKGJwcm0tPmJ1ZlswXSAhPSAnIycpIHx8
IChicHJtLT5idWZbMV0gIT0gJyEnKSkgew0KKwkJc3RyY3B5IChicHJtLT5i
dWYsIF9QQVRIX1VTUkVYRUMpOw0KKwkJaW50ZXJwID0gYnBybS0+YnVmOw0K
KwkJaWYgKChpX25hbWUgPSBzdHJyY2hyIChicHJtLT5idWYsICcvJykpICE9
IE5VTEwpDQorCQkJaV9uYW1lKys7DQogCQllbHNlDQotCQkJYnJlYWs7DQor
CQkJaV9uYW1lID0gYnBybS0+YnVmOw0KKwkJaV9hcmcgPSAwOw0KIAl9DQot
CWZvciAoY3AgPSBicHJtLT5idWYrMjsgKCpjcCA9PSAnICcpIHx8ICgqY3Ag
PT0gJ1x0Jyk7IGNwKyspOw0KLQlpZiAoIWNwIHx8ICpjcCA9PSAnXDAnKSAN
Ci0JCXJldHVybiAtRU5PRVhFQzsgLyogTm8gaW50ZXJwcmV0ZXIgbmFtZSBm
b3VuZCAqLw0KLQlpbnRlcnAgPSBpX25hbWUgPSBjcDsNCi0JaV9hcmcgPSAw
Ow0KLQlmb3IgKCA7ICpjcCAmJiAoKmNwICE9ICcgJykgJiYgKCpjcCAhPSAn
XHQnKTsgY3ArKykgew0KLSAJCWlmICgqY3AgPT0gJy8nKQ0KLQkJCWlfbmFt
ZSA9IGNwKzE7DQorCWVsc2Ugew0KKwkJLyoNCisJCSAqIFRoaXMgc2VjdGlv
biBkb2VzIHRoZSAjISBpbnRlcnByZXRhdGlvbi4NCisJCSAqIFNvcnRhIGNv
bXBsaWNhdGVkLCBidXQgaG9wZWZ1bGx5IGl0IHdpbGwgd29yay4gIC1UWVQN
CisJCSAqLw0KKw0KKwkJaXB1dChicHJtLT5pbm9kZSk7DQorCQlicHJtLT5k
b250X2lwdXQ9MTsNCisNCisJCWJwcm0tPmJ1ZlsxMjddID0gJ1wwJzsNCisJ
CWlmICgoY3AgPSBzdHJjaHIoYnBybS0+YnVmLCAnXG4nKSkgPT0gTlVMTCkN
CisJCQljcCA9IGJwcm0tPmJ1ZisxMjc7DQorCQkqY3AgPSAnXDAnOw0KKwkJ
d2hpbGUgKGNwID4gYnBybS0+YnVmKSB7DQorCQkJY3AtLTsNCisJCQlpZiAo
KCpjcCA9PSAnICcpIHx8ICgqY3AgPT0gJ1x0JykpDQorCQkJCSpjcCA9ICdc
MCc7DQorCQkJZWxzZQ0KKwkJCQlicmVhazsNCisJCX0NCisJCWZvciAoY3Ag
PSBicHJtLT5idWYrMjsgKCpjcCA9PSAnICcpIHx8ICgqY3AgPT0gJ1x0Jyk7
IGNwKyspOw0KKwkJaWYgKCFjcCB8fCAqY3AgPT0gJ1wwJykgDQorCQkJcmV0
dXJuIC1FTk9FWEVDOyAvKiBObyBpbnRlcnByZXRlciBuYW1lIGZvdW5kICov
DQorCQlpbnRlcnAgPSBpX25hbWUgPSBjcDsNCisJCWlfYXJnID0gMDsNCisJ
CWZvciAoIDsgKmNwICYmICgqY3AgIT0gJyAnKSAmJiAoKmNwICE9ICdcdCcp
OyBjcCsrKSB7DQorCQkJaWYgKCpjcCA9PSAnLycpDQorCQkJCWlfbmFtZSA9
IGNwKzE7DQorCQl9DQorCQl3aGlsZSAoKCpjcCA9PSAnICcpIHx8ICgqY3Ag
PT0gJ1x0JykpDQorCQkJKmNwKysgPSAnXDAnOw0KKwkJaWYgKCpjcCkNCisJ
CQlpX2FyZyA9IGNwOw0KIAl9DQotCXdoaWxlICgoKmNwID09ICcgJykgfHwg
KCpjcCA9PSAnXHQnKSkNCi0JCSpjcCsrID0gJ1wwJzsNCi0JaWYgKCpjcCkN
Ci0JCWlfYXJnID0gY3A7DQorDQogCS8qDQogCSAqIE9LLCB3ZSd2ZSBwYXJz
ZWQgb3V0IHRoZSBpbnRlcnByZXRlciBuYW1lIGFuZA0KIAkgKiAob3B0aW9u
YWwpIGFyZ3VtZW50Lg0K
---559023410-851401618-832169602=:14979
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="usrexec.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.91.960516001322.14979C@bohr.fit.qut.edu.au>
Content-Description: usrexec demo prog

I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5j
bHVkZSA8ZmNudGwuaD4NCg0KdW5zaWduZWQgY2hhcglidWZbMTAyNF07DQpp
bnQJbGVuOw0KDQppbnQNCm1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10p
DQp7DQoJaW50CWZkOw0KDQoJaWYgKGFyZ2MgIT0gMikgew0KCQlmcHJpbnRm
IChzdGRlcnIsICJVc2FnZTogJXMgZmlsZXRvZXhlY1xuIiwgYXJndlswXSk7
DQoJCWV4aXQgKDEpOw0KCX0NCiNpZiAxDQoJZnByaW50ZiAoc3RkZXJyLCAi
JXMgJXNcbiIsIGFyZ3ZbMF0sIGFyZ3ZbMV0pOw0KI2VuZGlmDQoJaWYgKChm
ZCA9IG9wZW4gKGFyZ3ZbMV0sIE9fUkRPTkxZKSkgPCAwKSB7DQoJCXBlcnJv
ciAoYXJndlsxXSk7DQoJCWV4aXQgKDEpOw0KCX0NCglpZiAoKGxlbiA9IHJl
YWQgKGZkLCBidWYsIHNpemVvZiAoYnVmKSkpIDwgMCkgew0KCQlwZXJyb3Ig
KGFyZ3ZbMV0pOw0KCQlleGl0ICgxKTsNCgl9DQoJY2xvc2UgKGZkKTsNCg0K
CS8qIEV4dGVuc2liaWxpdHkgb2YgdGhlIGZvbGxvd2luZyBjb3VsZCBiZSBl
YXNpbHkgaW1wcm92ZWQhDQoJKi8NCg0KCS8qIERvbid0IGtub3cgYWJvdXQg
dGhlIHRydXRoIG9mIHRoZSBmb2xsb3dpbmcgdGVzdCwgYnV0IGl0J2xsDQoJ
ICogZG8gYXMgYSBoYWNrLg0KCSAqLw0KCWlmIChidWZbMF0gPT0gJ00nICYm
IGJ1ZlsxXSA9PSAnWicpIHsNCgkJZXhlY2wgKCIvdXNyL2xvY2FsL2Jpbi93
aW5lIiwgIndpbmUiLCBhcmd2WzFdLCBOVUxMKTsNCgkJcGVycm9yIChhcmd2
WzFdKTsNCgkJZXhpdCAoMSk7DQoJfQ0KDQoJaWYgKGJ1ZlswXSA9PSAweGNh
ICYmIGJ1ZlsxXSA9PSAweGZlICYmIGJ1ZlsyXSA9PSAweGJhICYmIGJ1Zlsz
XSA9PSAweGJlKSB7DQoJCWNoYXIgKiBjcCA9IHN0cnN0ciAoYXJndlsxXSwg
Ii5jbGFzcyIpOw0KDQoJCWlmIChjcCkgKmNwID0gJ1wwJzsNCgkJZXhlY2wg
KCIvdXNyL2xvY2FsL2Jpbi9qYXZhIiwgImphdmEiLCBhcmd2WzFdLCBOVUxM
KTsNCgkJcGVycm9yIChhcmd2WzFdKTsNCgkJZXhpdCAoMSk7DQoJfQ0KDQoJ
ZnByaW50ZiAoc3RkZXJyLCAiJXM6IHVua25vd24gYmluYXJ5IGZvcm1hdCBm
b3IgJXNcbiIsIGFyZ3ZbMF0sIGFyZ3ZbMV0pOw0KCWV4aXQgKDEpOw0KfQ0K

---559023410-851401618-832169602=:14979--