[kaffe] [PATCH] Add support for AMD64

Gwenole Beauchesne gbeauchesne@mandrakesoft.com
Fri May 16 05:33:01 2003


  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.

---1463777692-190654388-1053088536=:3958
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,

The original patch was against Kaffe 1.0.7 and was created nearly one year 
ago but I have not sumitted them yet. So, here it is at last. ;-)

I planned to port JIT3 too by I hadn't got enough time recently to do so. 
A few months ago, I implemented a run-time assembler though. It can handle 
both IA-32 and AMD64 architectures with REX prefixes, SSE/SSE2 
instructions.

Bye,
Gwenole.

---1463777692-190654388-1053088536=:3958
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="kaffe-1.1-x86_64.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0305161435360.3958@thalys.mandrakesoft.com>
Content-Description: Add support for AMD64
Content-Disposition: attachment; filename="kaffe-1.1-x86_64.patch"

MjAwMi0wOC0xOCAgR3dlbm9sZSBCZWF1Y2hlc25lICA8Z2JlYXVjaGVzbmVA
bWFuZHJha2Vzb2Z0LmNvbT4NCg0KCUFkZCBzdXBwb3J0IGZvciBMaW51eC9B
TUQ2NC4NCgkqIGNvbmZpZy94ODZfNjQvY29tbW9uLmg6IE5ldyBmaWxlLg0K
CSogY29uZmlnL3g4Nl82NC90aHJlYWRzLmg6IE5ldyBmaWxlLg0KCSogY29u
ZmlnL3g4Nl82NC9zeXNkZXBDYWxsTWV0aG9kLmg6IE5ldyBmaWxlLg0KCSog
Y29uZmlnL3g4Nl82NC9saW51eC9jb25maWcuZnJhZzogTmV3IGZpbGUuDQoJ
KiBjb25maWcveDg2XzY0L2xpbnV4L21kLmM6IE5ldyBmaWxlLg0KCSogY29u
ZmlnL3g4Nl82NC9saW51eC9tZC5oOiBOZXcgZmlsZS4NCg0KCSogY29uZmln
L01ha2VmaWxlLmFtOiBVcGRhdGUgdG8gYWRkIEFNRDY0IGZpbGVzLg0KCSog
Y29uZmlnL01ha2VmaWxlLmluOiBMaWtld2lzZS4NCgkNCi0tLSBrYWZmZS0x
LjEvY29uZmlnL3g4Nl82NC9saW51eC9tZC5jLng4Nl82NAkyMDAzLTA1LTE2
IDA4OjI3OjQ4LjAwMDAwMDAwMCAtMDQwMA0KKysrIGthZmZlLTEuMS9jb25m
aWcveDg2XzY0L2xpbnV4L21kLmMJMjAwMi0wOC0xNSAxMjo0MzozOC4wMDAw
MDAwMDAgLTA0MDANCkBAIC0wLDAgKzEsMjggQEANCisvKg0KKyAqIHg4Nl82
NC9saW51eC9tZC5jDQorICogTGludXggWDg2LTY0IHNwZWNpZmljIGZ1bmN0
aW9ucy4NCisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAwMg0KKyAqCU1hbmRy
YWtlU29mdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDANCisgKiAgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAg
QWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKiAgSUE2NF9jb250ZXh0X3tzYXZl
LHJlc3RvcmV9IGZ1bmN0aW9ucyBmcm9tIFN0YXRlIFRocmVhZHMgTGlicmFy
eQ0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDAxDQorICoJVHJhbnN2aXJ0
dWFsIFRlY2hub2xvZ2llcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4N
CisgKg0KKyAqIFNlZSB0aGUgZmlsZSAibGljZW5zZS50ZXJtcyIgZm9yIGlu
Zm9ybWF0aW9uIG9uIHVzYWdlIGFuZCByZWRpc3RyaWJ1dGlvbg0KKyAqIG9m
IHRoaXMgZmlsZS4NCisgKi8NCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQor
I2luY2x1ZGUgPHN0ZGxpYi5oPg0KKw0KK3ZvaWQNCitpbml0X21kKHZvaWQp
DQorew0KKyNpZiBkZWZpbmVkKE1fTU1BUF9NQVgpICYmIGRlZmluZWQoSEFW
RV9NQUxMT1BUKQ0KKwltYWxsb3B0KE1fTU1BUF9NQVgsIDApOw0KKyNlbmRp
Zg0KK30NCi0tLSBrYWZmZS0xLjEvY29uZmlnL3g4Nl82NC9saW51eC9tZC5o
Lng4Nl82NAkyMDAzLTA1LTE2IDA4OjI3OjQ4LjAwMDAwMDAwMCAtMDQwMA0K
KysrIGthZmZlLTEuMS9jb25maWcveDg2XzY0L2xpbnV4L21kLmgJMjAwMi0w
OC0xNSAxNToxODoyMi4wMDAwMDAwMDAgLTA0MDANCkBAIC0wLDAgKzEsMzQg
QEANCisvKg0KKyAqIHg4Nl82NC9saW51eC9tZC5oDQorICogTGludXggWDg2
LTY0IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uDQorICoNCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDINCisgKglNYW5kcmFrZVNvZnQuICBBbGwgcmlnaHRz
IHJlc2VydmVkLg0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDAxDQorICoJ
VHJhbnN2aXJ0dWFsIFRlY2hub2xvZ2llcywgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4NCisgKg0KKyAqIFNlZSB0aGUgZmlsZSAibGljZW5zZS50ZXJt
cyIgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZCByZWRpc3RyaWJ1dGlv
bg0KKyAqIG9mIHRoaXMgZmlsZS4NCisgKi8NCisNCisjaWZuZGVmIF9feDg2
XzY0X2xpbnV4X21kX2gNCisjZGVmaW5lIF9feDg2XzY0X2xpbnV4X21kX2gN
CisNCisjaW5jbHVkZSAieDg2XzY0L2NvbW1vbi5oIg0KKyNpbmNsdWRlICJ4
ODZfNjQvdGhyZWFkcy5oIg0KKw0KKyNpZiBkZWZpbmVkKFRSQU5TTEFUT1Ip
DQorI2luY2x1ZGUgImppdC1tZC5oIg0KKyNlbmRpZg0KKw0KKy8qIExpbnV4
IHJlcXVpcmVzIGEgbGl0dGxlIGluaXRpYWxpc2F0aW9uICovDQorZXh0ZXJu
IHZvaWQgaW5pdF9tZCh2b2lkKTsNCisjZGVmaW5lCUlOSVRfTUQoKSBpbml0
X21kKCkNCisNCisjZGVmaW5lIFNJR05BTF9BUkdTKHNpZywgc2NwKSAgICAg
ICAgICAgaW50IHNpZywgc2lnaW5mb190ICpzaXAsIHN0cnVjdCBzaWdjb250
ZXh0ICpzY3ANCisjZGVmaW5lIFNJR05BTF9DT05URVhUX1BPSU5URVIoc2Nw
KSAgICAgc3RydWN0IHNpZ2NvbnRleHQgKnNjcA0KKyNkZWZpbmUgR0VUX1NJ
R05BTF9DT05URVhUX1BPSU5URVIoc2MpICAoc2MpDQorI2RlZmluZSBTSUdO
QUxfUEMoc2NwKSAgICAgICAgICAgICAgICAgICgoc2NwKS0+cmlwKQ0KKw0K
KyNlbmRpZg0KLS0tIGthZmZlLTEuMS9jb25maWcveDg2XzY0L2xpbnV4L2Nv
bmZpZy5mcmFnLng4Nl82NAkyMDAzLTA1LTE2IDA4OjI3OjQ4LjAwMDAwMDAw
MCAtMDQwMA0KKysrIGthZmZlLTEuMS9jb25maWcveDg2XzY0L2xpbnV4L2Nv
bmZpZy5mcmFnCTIwMDItMDgtMTYgMDg6MzQ6MDQuMDAwMDAwMDAwIC0wNDAw
DQpAQCAtMCwwICsxLDEwIEBADQorIw0KKyMgeDg2LTY0L0xpbnV4IGNvbmZp
Z3VyYXRpb24NCisjDQorS2hvc3RfY3B1PXg4Nl82NA0KK0tob3N0X29zPWxp
bnV4DQorDQoraWYgdGVzdCB4IiR3aXRoX3RocmVhZHMiID0geCJsaW51eC10
aHJlYWRzIiA7IHRoZW4NCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9SRUVO
VFJBTlQiDQorCVZNX0xJQlM9IiRWTV9MSUJTIC1scHRocmVhZCINCitmaQ0K
LS0tIGthZmZlLTEuMS9jb25maWcveDg2XzY0L2NvbW1vbi5oLng4Nl82NAky
MDAzLTA1LTE2IDA4OjI3OjQ4LjAwMDAwMDAwMCAtMDQwMA0KKysrIGthZmZl
LTEuMS9jb25maWcveDg2XzY0L2NvbW1vbi5oCTIwMDItMDgtMTggMDQ6MjQ6
NDAuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMCwwICsxLDU2IEBADQorLyoNCisg
KiB4ODZfNjQvY29tbW9uLmgNCisgKiBDb21tb24gWDg2LTY0IGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24uDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDINCisgKglNYW5kcmFrZVNvZnQuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
KyAqDQorICogU2VlIHRoZSBmaWxlICJsaWNlbnNlLnRlcm1zIiBmb3IgaW5m
b3JtYXRpb24gb24gdXNhZ2UgYW5kIHJlZGlzdHJpYnV0aW9uDQorICogb2Yg
dGhpcyBmaWxlLg0KKyAqLw0KKw0KKyNpZm5kZWYgX194ODZfNjRfY29tbW9u
X2gNCisjZGVmaW5lIF9feDg2XzY0X2NvbW1vbl9oDQorDQorLyogU3RhY2sg
bXVzdCBiZSBhbGlnbmVkIG9uIDE2LWJ5dGVzIGJvdW5kYXJ5LiAgKi8NCisj
ZGVmaW5lIE5FRURfU1RBQ0tfQUxJR04NCisjZGVmaW5lIFNUQUNLX0FMSUdO
KHApICAoKCgodW5zaWduZWQgbG9uZykocCkpICYgMTUpIF4gKHVuc2lnbmVk
IGxvbmcpKHApKQ0KKw0KKyNpZiBORUVEX3N5c2RlcENhbGxNZXRob2QNCisj
aW5jbHVkZSAic3lzZGVwQ2FsbE1ldGhvZC5oIg0KKyNlbmRpZg0KKw0KKyNp
ZiBkZWZpbmVkKF9fR05VQ19fKQ0KKyNkZWZpbmUgS0FGRkVfUFJPRklMRVIg
MQ0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKEtBRkZFX1BST0ZJTEVSKQ0K
Kw0KKy8qIFByb2ZpbGVyIGNsaWNrcyBjb3VudGVyIHR5cGUuICAqLw0KK3R5
cGVkZWYgdWludDY0IHByb2ZpbGVyX2NsaWNrX3Q7DQorDQorLyogUmVhRCB0
aGUgcHJvY2Vzc29yIFRpbWUgU3RhbXAgQ291bnRlci4NCisgKiBUaGlzIGlz
IGEgbWFjcm8gdG8gaGVscCBHQ0Mgb3B0aW1pemF0aW9uLg0KKyAqIFRoZSBy
ZHRzYyBpbnN0cnVjdGlvbiBsb2FkIFRTQyB0byBlZHg6ZWF4IGFrYSBBIHJl
Z2lzdGVyLiAgKi8NCisjZGVmaW5lIHByb2ZpbGVyX2dldF9jbGlja3MoQ09V
TlRFUikgXA0KKyAgICAgICAgYXNtIHZvbGF0aWxlICgicmR0c2MiIDogIj1B
IiAoQ09VTlRFUikpDQorDQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19H
TlVDX18pDQorLyoNCisgKiBEbyBhbiBhdG9taWMgY29tcGFyZSBhbmQgZXhj
aGFuZ2UuICBUaGUgYWRkcmVzcyAnQScgaXMgY2hlY2tlZCBhZ2FpbnN0ICAN
CisgKiB2YWx1ZSAnTycgYW5kIGlmIHRoZXkgbWF0Y2ggaXQncyBleGNoYW5n
ZWQgd2l0aCB2YWx1ZSAnTicuDQorICogV2UgcmV0dXJuICcxJyBpZiB0aGUg
ZXhjaGFuZ2UgaXMgc3VjZXNzZnVsLCBvdGhlcndpc2UgMC4NCisgKi8NCisj
ZGVmaW5lIENPTVBBUkVfQU5EX0VYQ0hBTkdFKEEsTyxOKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKHsgY2hhciByZXQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor
ICAgICAgICAgICBhc20gdm9sYXRpbGUgKCJsb2NrIDsgY21weGNoZ3EgJTIs
JTEgOyBzZXRlICUwIiAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAiPXEiIChyZXQpLCAiK20iICgqKEEpKSAgICAgICAgICAgICAgXA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAoTiksICJhIiAoTykg
ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAg
ICAgIDogImNjIiwgIm1lbW9yeSIpOyAgICAgICAgICAgICAgICAgICAgIFwN
CisgICAgICAgICAgIChyZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgfSkNCisjZW5kaWYN
CisNCisjZW5kaWYNCi0tLSBrYWZmZS0xLjEvY29uZmlnL3g4Nl82NC90aHJl
YWRzLmgueDg2XzY0CTIwMDMtMDUtMTYgMDg6Mjc6NDguMDAwMDAwMDAwIC0w
NDAwDQorKysga2FmZmUtMS4xL2NvbmZpZy94ODZfNjQvdGhyZWFkcy5oCTIw
MDItMDgtMTYgMDg6MjY6NDIuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMCwwICsx
LDM3IEBADQorLyoNCisgKiB4ODZfNjQvdGhyZWFkcy5oDQorICogWDg2LTY0
IHRocmVhZGluZyBpbmZvcm1hdGlvbi4NCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMjAwMg0KKyAqCU1hbmRyYWtlU29mdC4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQorICoNCisgKiBTZWUgdGhlIGZpbGUgImxpY2Vuc2UudGVybXMiIGZv
ciBpbmZvcm1hdGlvbiBvbiB1c2FnZSBhbmQgcmVkaXN0cmlidXRpb24NCisg
KiBvZiB0aGlzIGZpbGUuDQorICovDQorDQorI2lmbmRlZiBfX3g4Nl82NF90
aHJlYWRzX2gNCisjZGVmaW5lIF9feDg2XzY0X3RocmVhZHNfaA0KKw0KKy8q
Ki8NCisvKiBUaHJlYWQgaGFuZGxpbmcgKi8NCisvKiovDQorI2RlZmluZQlV
U0VfSU5URVJOQUxfVEhSRUFEUw0KKw0KKy8qDQorICogU2V0IGEgZGVmYXVs
dCBzaXplIGZvciB0aGUgc3RhY2suDQorICovDQorI2lmIGRlZmluZWQoSU5U
RVJQUkVURVIpDQorI2RlZmluZSBUSFJFQURTVEFDS1NJWkUgICAgICAgICAo
NjQgKiAxMDI0KQ0KKyNlbHNlDQorI2RlZmluZSBUSFJFQURTVEFDS1NJWkUg
ICAgICAgICAoMzIgKiAxMDI0KQ0KKyNlbmRpZg0KKw0KKy8qDQorICogU3Rh
Y2sgb2Zmc2V0Lg0KKyAqIFRoaXMgaXMgdGhlIG9mZnNldCBpbnRvIHRoZSBz
ZXRqbXAgYnVmZmVyIHdoZXJlIHRoZSBzdGFjayBwb2ludGVyIGlzDQorICog
c3RvcmVkLiAgVGhpcyBtYXkgYmUgZGlmZmVyZW50IHdpdGggZGlmZmVyZW50
IE9TZXMuDQorICovDQorI2RlZmluZQlTUF9PRkZTRVQJNg0KKyNkZWZpbmUg
RlBfT0ZGU0VUCTENCisNCisjZW5kaWYNCi0tLSBrYWZmZS0xLjEvY29uZmln
L3g4Nl82NC9zeXNkZXBDYWxsTWV0aG9kLmgueDg2XzY0CTIwMDMtMDUtMTYg
MDg6Mjc6NDguMDAwMDAwMDAwIC0wNDAwDQorKysga2FmZmUtMS4xL2NvbmZp
Zy94ODZfNjQvc3lzZGVwQ2FsbE1ldGhvZC5oCTIwMDItMDgtMTUgMTQ6NTE6
MTcuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMCwwICsxLDIyNyBAQA0KKy8qDQor
ICogeDg2XzY0L3N5c2RlcENhbGxNZXRob2QuaA0KKyAqIER5bmFtaWNhbGx5
IGJ1aWxkIGZ1bmN0aW9uIGNhbGxzIHVzaW5nIFg4Ni02NCBTVlI0IEFCSS4N
CisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAwMg0KKyAqCU1hbmRyYWtlU29m
dC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBTZWUgdGhlIGZp
bGUgImxpY2Vuc2UudGVybXMiIGZvciBpbmZvcm1hdGlvbiBvbiB1c2FnZSBh
bmQgcmVkaXN0cmlidXRpb24NCisgKiBvZiB0aGlzIGZpbGUuDQorICovDQor
DQorLyogVGhpcyBkZWZpbmUgd2lsbCBjYXVzZSBjYWxsTWV0aG9kViBhbmQg
Y2FsbE1ldGhvZEEgdG8gYXZvaWQNCisgICBpbnRyb2R1Y2luZyB1bnVzZWQg
c2xvdHMgYWZ0ZXIgamxvbmdzIGFuZCBqZG91Ymxlcy4gICovDQorI2lmbmRl
ZiBOT19IT0xFUw0KKyMgZGVmaW5lIE5PX0hPTEVTIDENCisjZW5kaWYNCisN
CisvKiBUaGlzIGRlZmluZSB3aWxsIGNhdXNlIGNhbGxNZXRob2RWIGFuZCBj
YWxsTWV0aG9kQSB0byBwcm9tb3RlIGV2ZXJ5DQorICAgaW50ZWdlciB0eXBl
IHRvIGEgNjRiaXQgd29yZCwgYW5kIGV2ZXJ5IGZsb2F0IHRvIGRvdWJsZSwg
c28gdGhhdA0KKyAgIGV2ZXJ5IHZhbHVlIGNhbiBiZSBsb2FkZWQgYXMgYSBz
aW5nbGUgNjRiaXQgd29yZC4gIEl0IGFsc28gY2F1c2VzDQorICAgZmxvYXQg
YXJndW1lbnRzIHRvIGJlIG1hcmtlZCBhcyAnRCcuICAqLw0KKyNpZm5kZWYg
UFJPTU9URV9UT182NGJpdHMNCisjIGRlZmluZSBQUk9NT1RFX1RPXzY0Yml0
cyAxDQorI2VuZGlmDQorIA0KKyNpZm5kZWYgUFJPTU9URV9qZmxvYXQyamRv
dWJsZQ0KKyMgZGVmaW5lIFBST01PVEVfamZsb2F0Mmpkb3VibGUgMA0KKyNl
bmRpZg0KKw0KKy8qIEFSR19UWVBFIGlzIHRoZSB0eXBlIG9mIGEgcmVnaXN0
ZXIgdXNlZCBmb3IgcGFzc2luZyBhcmd1bWVudHMuICAqLw0KKyNkZWZpbmUg
QVJHX1RZUEUgICAgICAgIGxvbmcNCisNCisvKiBBUkdfVFlQRVMgaXMgYSBw
YXJhbWV0ZXIgbGlzdCBkZWNsYXJhdGlvbiBmb3IgYSBmdW5jdGlvbiB0eXBl
DQorICAgdGhhdCB0YWtlcyBhbGwgcG9zc2libGUgYXJndW1lbnRzIGluIHJl
Z2lzdGVycy4gICovDQorI2RlZmluZSBBUkdfVFlQRVMgICAgICAgQVJHX1RZ
UEUsIEFSR19UWVBFLCBBUkdfVFlQRSwgQVJHX1RZUEUsIEFSR19UWVBFLCBB
UkdfVFlQRQ0KKw0KKy8qIEFSR19MSVNUIGlzIHRoZSBhcmd1bWVudCBsaXN0
IGZvciBzdWNoIGEgZnVuY3Rpb24uICAqLw0KKyNkZWZpbmUgQVJHX0xJU1Qg
ICAgICAgIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUNCisNCisvKiBHUFJfQVJH
UyBpcyB0aGUgbnVtYmVyIG9mIEdQUiAoaW50ZWdlcikgcmVnaXN0ZXJzIGZv
ciBwYXNzaW5nDQorICAgYXJndW1lbnRzLiAgKi8NCisjZGVmaW5lIEdQUl9B
UkdTICAgICAgICA2DQorDQorLyogRlBSX0FSR1MgaXMgdGhlIG51bWJlciBv
ZiBGUFIgKGZsb2F0KSByZWdpc3RlcnMgZm9yIHBhc3NpbmcNCisgICBhcmd1
bWVudHMuICAqLw0KKyNkZWZpbmUgRlBSX0FSR1MgICAgICAgIDgNCisNCisv
KiBBUkdfR1BSIGEgY2FzZSBsYWJlbCBhbmQgYSBzdGF0ZW1lbnQgdGhhdCBh
cnJhbmdlcyBmb3Igb25lIGludGVnZXINCisgICBhcmd1bWVudCB0byBiZSBw
YXNzZWQuICovDQorI2RlZmluZSBBUkdfR1BSKE4pIFwNCisgICAgY2FzZSBO
KzE6IGEjI04gPSBncHJbTl07DQorDQorLyogQVJHX0ZQUiBhIGNhc2UgbGFi
ZWwgYW5kIGEgc3RhdGVtZW50IHRoYXQgYXJyYW5nZXMgZm9yIG9uZSBmbG9h
dA0KKyAgIGFyZ3VtZW50IHRvIGJlIHBhc3NlZC4gKi8NCisjZGVmaW5lIEFS
R19GUFIoTikgXA0KKyAgICBjYXNlIE4rMTogZCMjTiA9IGZwcltOXTsNCisN
CisNCisvKiBNYWtlIGEgY2FsbCB0byBhIG5hdGl2ZSBvciBKYXZhIChKSVQp
IG1ldGhvZC4gIFRoaXMgYXNzZW1ibHkgY29kZSBzaG91bGQNCisgICBidWls
ZCBhIHN0YW5kYXJkIEMgY2FsbCB1c2luZyB0aGUgcGFzc2VkIGNhbGwgaW5m
b3JtYXRpb24uICBCeSBpdHMNCisgICBuYXR1cmUgdGhpcyBpcyBoaWdobHkg
cHJvY2Vzc29yIHNwZWNpZmljLiAgVGhpcyBmdW5jdGlvbiBpcyBtYW5kYXRv
cnkNCisgICBmb3IgYm90aCBKSVQgYW5kIEludGVycHJldGVyIChzaW5jZSBz
dHVicyBoYXZlIG5vdyBiZWVuIGRlcHJlY2F0ZWQpLiAgKi8NCitzdGF0aWMg
aW5saW5lIHZvaWQgc3lzZGVwQ2FsbE1ldGhvZChjYWxsTWV0aG9kSW5mbyog
Y2FsbCkNCit7DQorICAgIHZvaWQgKmZ1bmMgPSBjYWxsLT5mdW5jdGlvbjsN
CisgICAganZhbHVlICpjYWxsYXJncyA9IGNhbGwtPmFyZ3M7DQorICAgIGNo
YXIgKmNhbGx0eXBlID0gY2FsbC0+Y2FsbHR5cGU7DQorICAgIGp2YWx1ZSAq
YXJncyA9IGNhbGxhcmdzOw0KKyAgICBqdmFsdWUgKmxhc3QgPSAmY2FsbGFy
Z3NbY2FsbC0+bnJhcmdzXTsNCisgICAgaW50IG5yX2dwciA9IDA7DQorICAg
IGludCBucl9mcHIgPSAwOw0KKyAgICBpbnQgbnJfc3RhY2sgPSAwOw0KKw0K
KyAgICB1bnNpZ25lZCBsb25nICpzdGFjazsNCisgICAgdW5zaWduZWQgbG9u
ZyBncHJbR1BSX0FSR1NdOw0KKyAgICBkb3VibGUgZnByW0ZQUl9BUkdTXTsN
CisNCisgICAgLyogQ29tcHV0ZSBncHJbXSwgZnByW10gYW5kIHN0YWNrW10g
YXJyYXlzJyBzaXplICovDQorICAgIHdoaWxlIChhcmdzICE9IGxhc3QpIHsN
CisgICAgICBzd2l0Y2ggKGNhbGx0eXBlWyhhcmdzKyspIC0gY2FsbGFyZ3Nd
KSB7DQorICAgICAgY2FzZSAnRic6DQorICAgICAgY2FzZSAnRCc6DQorICAg
ICAgICBpZiAobnJfZnByIDwgRlBSX0FSR1MpDQorICAgICAgICAgIG5yX2Zw
cisrOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICBucl9zdGFjaysrOw0K
KyAgICAgICAgYnJlYWs7DQorICAgICAgICANCisgICAgICBkZWZhdWx0Og0K
KyAgICAgICAgaWYgKG5yX2dwciA8IEdQUl9BUkdTKQ0KKyAgICAgICAgICBu
cl9ncHIrKzsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgbnJfc3RhY2sr
KzsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAg
ICAvKiBBbGxvY2F0ZSBhbGwgYXJyYXlzIHdpdGggb25lIGJpZyBhbGxvY2Eo
KSAqLw0KKyAgICB7DQorICAgICAgaW50IG5yID0gbnJfc3RhY2s7DQorICAg
ICAgDQorICAgICAgLyogc3RhY2ssIGlmIHVzZWQsIG11c3QgYmUgMTYgYnl0
ZXMgYWxpZ25lZCAqLw0KKyAgICAgIGlmIChucl9zdGFjaykNCisgICAgICAg
IG5yID0gKG5yICsgMSkgJiB+MTsNCisNCisgICAgICAvKiBzdGFja1tdIGlz
IGluIGNhbGxlZCBwYXJhbWV0ZXJzIGFyZWEuICAqLw0KKyAgICAgIHN0YWNr
ID0gX19idWlsdGluX2FsbG9jYSAoOCAqIG5yKTsNCisgICAgfQ0KKw0KKyAg
ICAvKiBidWlsZCBncHJbXSwgZnByW10gYW5kIHN0YWNrW10gYXJyYXlzICov
DQorICAgIG5yX2dwciA9IDA7DQorICAgIG5yX2ZwciA9IDA7DQorICAgIG5y
X3N0YWNrID0gMDsNCisgICAgDQorICAgIGFyZ3MgPSBjYWxsYXJnczsNCisg
ICAgd2hpbGUgKGFyZ3MgIT0gbGFzdCkgew0KKyAgICAgIHN3aXRjaCAoY2Fs
bHR5cGVbYXJncyAtIGNhbGxhcmdzXSkgew0KKyAgICAgIGNhc2UgJ0YnOiB7
DQorICAgICAgICBpZiAobnJfZnByIDwgRlBSX0FSR1MpDQorICAgICAgICAg
IC8qIFRoZSB2YWx1ZSBpbiAleG1tIHJlZ2lzdGVyIGlzIGFscmVhZHkgcHJl
cGFyZWQgdG8gYmUNCisgICAgICAgICAgICAgcmV0cmlldmVkIGFzIGEgZmxv
YXQuIFRoZXJlZm9yZSwgd2UgcGFzcyB0aGUgZmxvYXQgdmFsdWUNCisgICAg
ICAgICAgICAgdmVyYmF0aW0sIGFzIGEgZG91YmxlIHdpdGhvdXQgYW55IGNv
bnZlcnNpb24uICAqLw0KKyAgICAgICAgICBmcHJbbnJfZnByKytdID0gYXJn
cy0+ZDsNCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAqKGZsb2F0ICop
c3RhY2sgPSBhcmdzLT5mOw0KKyAgICAgICAgICBzdGFjaysrOw0KKyAgICAg
ICAgfQ0KKyAgICAgICAgYnJlYWs7DQorICAgICAgfQ0KKyAgICAgIA0KKyAg
ICAgIGNhc2UgJ0QnOiB7DQorICAgICAgICBpZiAobnJfZnByIDwgRlBSX0FS
R1MpDQorICAgICAgICAgIGZwcltucl9mcHIrK10gPSBhcmdzLT5kOw0KKyAg
ICAgICAgZWxzZSB7DQorICAgICAgICAgICooZG91YmxlICopc3RhY2sgPSBh
cmdzLT5kOw0KKyAgICAgICAgICBzdGFjaysrOw0KKyAgICAgICAgfQ0KKyAg
ICAgICAgYnJlYWs7DQorICAgICAgfQ0KKyAgICAgIA0KKyAgICAgIGRlZmF1
bHQ6DQorICAgICAgICBpZiAobnJfZ3ByIDwgR1BSX0FSR1MpDQorICAgICAg
ICAgIGdwcltucl9ncHIrK10gPSBhcmdzLT5qOw0KKyAgICAgICAgZWxzZQ0K
KyAgICAgICAgICAqc3RhY2srKyA9IGFyZ3MtPmo7DQorICAgICAgfQ0KKyAg
ICAgIGFyZ3MrKzsNCisgICAgfQ0KKw0KKyAgICB7DQorICAgICAgcmVnaXN0
ZXIgQVJHX1RZUEUgYTAgYXNtKCJyZGkiKTsNCisgICAgICByZWdpc3RlciBB
UkdfVFlQRSBhMSBhc20oInJzaSIpOw0KKyAgICAgIHJlZ2lzdGVyIEFSR19U
WVBFIGEyIGFzbSgicmR4Iik7DQorICAgICAgcmVnaXN0ZXIgQVJHX1RZUEUg
YTMgYXNtKCJyY3giKTsNCisgICAgICByZWdpc3RlciBBUkdfVFlQRSBhNCBh
c20oInI4Iik7DQorICAgICAgcmVnaXN0ZXIgQVJHX1RZUEUgYTUgYXNtKCJy
OSIpOw0KKyAgICAgIA0KKyAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkMCBhc20o
InhtbTAiKTsNCisgICAgICByZWdpc3RlciBkb3VibGUgZDEgYXNtKCJ4bW0x
Iik7DQorICAgICAgcmVnaXN0ZXIgZG91YmxlIGQyIGFzbSgieG1tMiIpOw0K
KyAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkMyBhc20oInhtbTMiKTsNCisgICAg
ICByZWdpc3RlciBkb3VibGUgZDQgYXNtKCJ4bW00Iik7DQorICAgICAgcmVn
aXN0ZXIgZG91YmxlIGQ1IGFzbSgieG1tNSIpOw0KKyAgICAgIHJlZ2lzdGVy
IGRvdWJsZSBkNiBhc20oInhtbTYiKTsNCisgICAgICByZWdpc3RlciBkb3Vi
bGUgZDcgYXNtKCJ4bW03Iik7DQorICAgICAgDQorICAgICAgLyogbG9hZCBG
UFIgcmVnaXN0ZXJzIGZyb20gZnByW10gKi8NCisgICAgICBzd2l0Y2ggKG5y
X2Zwcikgew0KKyAgICAgICAgQVJHX0ZQUig3KTsNCisgICAgICAgIEFSR19G
UFIoNik7DQorICAgICAgICBBUkdfRlBSKDUpOw0KKyAgICAgICAgQVJHX0ZQ
Uig0KTsNCisgICAgICAgIEFSR19GUFIoMyk7DQorICAgICAgICBBUkdfRlBS
KDIpOw0KKyAgICAgICAgQVJHX0ZQUigxKTsNCisgICAgICAgIEFSR19GUFIo
MCk7DQorICAgICAgY2FzZSAwOjsNCisgICAgICB9DQorDQorICAgICAgLyog
bG9hZCBHUFIgcmVnaXN0ZXJzIGZyb20gZ3ByW10gKi8NCisgICAgICBzd2l0
Y2ggKG5yX2dwcikgew0KKyAgICAgICAgQVJHX0dQUig1KTsNCisgICAgICAg
IEFSR19HUFIoNCk7DQorICAgICAgICBBUkdfR1BSKDMpOw0KKyAgICAgICAg
QVJHX0dQUigyKTsNCisgICAgICAgIEFSR19HUFIoMSk7DQorICAgICAgICBB
UkdfR1BSKDApOw0KKyAgICAgIGNhc2UgMDo7DQorICAgICAgfQ0KKyAgICAg
IA0KKyAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBhc3NpZ25tZW50cyB0byBT
U0UgcmVnaXN0ZXJzIHdvbid0IGJlIG9wdGltaXplZCBhd2F5LiAqLw0KKyAg
ICAgIGFzbSAoIiIgOjoNCisgICAgICAgICAgICJ4IiAoZDApLCAieCIgKGQx
KSwgIngiIChkMiksICJ4IiAoZDMpLA0KKyAgICAgICAgICAgIngiIChkNCks
ICJ4IiAoZDUpLCAieCIgKGQ2KSwgIngiIChkNykpOw0KKw0KKyAgICAgIHN3
aXRjaChjYWxsLT5yZXRzaXplKSB7DQorICAgICAgY2FzZSAwOg0KKyAgICAg
ICAgLyogTXVzdCBiZSB2b2lkLiAgKi8NCisgICAgICAgICgodm9pZCAoKiko
QVJHX1RZUEVTKSkoZnVuYykpKEFSR19MSVNUKTsNCisgICAgICAgIGJyZWFr
Ow0KKyAgICAgICAgDQorICAgICAgY2FzZSAxOg0KKyAgICAgICAgaWYgKGNh
bGwtPnJldHR5cGUgPT0gJ0YnKQ0KKyAgICAgICAgICBjYWxsLT5yZXQtPmYg
PSAoKGpmbG9hdCAoKikoQVJHX1RZUEVTKSkoZnVuYykpKEFSR19MSVNUKTsN
CisgICAgICAgIGVsc2UgLyogTXVzdCBiZSAzMi1iaXQgb3Igc21hbGxlciBp
bnQuICAqLw0KKyAgICAgICAgICBjYWxsLT5yZXQtPmkgPSAoKGppbnQgKCop
KEFSR19UWVBFUykpKGZ1bmMpKShBUkdfTElTVCk7DQorICAgICAgICBicmVh
azsNCisNCisgICAgICBkZWZhdWx0Og0KKyAgICAgICAgLyogSXQgY291bGQn
dmUgYmVlbiBgY2FzZSAyOycsIGJ1dCB0aGVuIHdlJ2QgZ2V0IGFuIGFkZGl0
aW9uYWwgY21wDQorICAgICAgICAgKiB0aGF0IHdlIGRvbid0IHJlYWxseSBu
ZWVkLiAgKi8NCisgICAgICAgIGlmIChjYWxsLT5yZXR0eXBlID09ICdEJykN
CisgICAgICAgICAgY2FsbC0+cmV0LT5kID0gKChqZG91YmxlICgqKShBUkdf
VFlQRVMpKShmdW5jKSkoQVJHX0xJU1QpOw0KKyAgICAgICAgZWxzZSAvKiBN
dXN0IGJlIGpsb25nLiAgKi8NCisgICAgICAgICAgY2FsbC0+cmV0LT5qID0g
KChqbG9uZyAoKikoQVJHX1RZUEVTKSkoZnVuYykpKEFSR19MSVNUKTsNCisg
ICAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgfQ0KK30NCisNCisjdW5k
ZWYgQVJHX1RZUEUNCisjdW5kZWYgQVJHX1RZUEVTDQorI3VuZGVmIEFSR19M
SVNUDQorI3VuZGVmIEdQUl9BUkdTDQorI3VuZGVmIEZQUl9BUkdTDQorI3Vu
ZGVmIEFSR19HUFINCisjdW5kZWYgQVJHX0ZQUg0KLS0tIGthZmZlLTEuMS9j
b25maWcvTWFrZWZpbGUuYW0ueDg2XzY0CTIwMDMtMDUtMTQgMDc6NTc6NDMu
MDAwMDAwMDAwIC0wNDAwDQorKysga2FmZmUtMS4xL2NvbmZpZy9NYWtlZmls
ZS5hbQkyMDAzLTA1LTE2IDA4OjI2OjU5LjAwMDAwMDAwMCAtMDQwMA0KQEAg
LTc2LDYgKzc2LDEyIEBAIEVYVFJBX0RJU1QgPSBcDQogCWlhNjQvbGludXgv
bWQuaCBcDQogCWlhNjQvdGhyZWFkcy5oIFwNCiAJaWE2NC9zeXNkZXBDYWxs
TWV0aG9kLmggXA0KKwl4ODZfNjQvY29tbW9uLmggXA0KKwl4ODZfNjQvbGlu
dXgvY29uZmlnLmZyYWcgXA0KKwl4ODZfNjQvbGludXgvbWQuYyBcDQorCXg4
Nl82NC9saW51eC9tZC5oIFwNCisJeDg2XzY0L3RocmVhZHMuaCBcDQorCXg4
Nl82NC9zeXNkZXBDYWxsTWV0aG9kLmggXA0KIAlpMzg2L2Jlb3MvY29uZmln
LmZyYWcgXA0KIAlpMzg2L2Jlb3Mvaml0LW1kLmggXA0KIAlpMzg2L2Jlb3Mv
aml0My1tZC5oIFwNCi0tLSBrYWZmZS0xLjEvY29uZmlnL01ha2VmaWxlLmlu
Lng4Nl82NAkyMDAzLTA1LTE1IDE3OjE1OjUxLjAwMDAwMDAwMCAtMDQwMA0K
KysrIGthZmZlLTEuMS9jb25maWcvTWFrZWZpbGUuaW4JMjAwMy0wNS0xNiAw
ODoyNjo1OS4wMDAwMDAwMDAgLTA0MDANCkBAIC0yOTgsNiArMjk4LDEyIEBA
IEVYVFJBX0RJU1QgPSBcDQogCWlhNjQvbGludXgvbWQuaCBcDQogCWlhNjQv
dGhyZWFkcy5oIFwNCiAJaWE2NC9zeXNkZXBDYWxsTWV0aG9kLmggXA0KKwl4
ODZfNjQvY29tbW9uLmggXA0KKwl4ODZfNjQvbGludXgvY29uZmlnLmZyYWcg
XA0KKwl4ODZfNjQvbGludXgvbWQuYyBcDQorCXg4Nl82NC9saW51eC9tZC5o
IFwNCisJeDg2XzY0L3RocmVhZHMuaCBcDQorCXg4Nl82NC9zeXNkZXBDYWxs
TWV0aG9kLmggXA0KIAlpMzg2L2Jlb3MvY29uZmlnLmZyYWcgXA0KIAlpMzg2
L2Jlb3Mvaml0LW1kLmggXA0KIAlpMzg2L2Jlb3Mvaml0My1tZC5oIFwNCg==
---1463777692-190654388-1053088536=:3958--