Re: AMD K6

Gabriel Paubert (paubert@iram.es)
Thu, 2 Oct 1997 23:24:52 +0100 (MET)


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.

--2006934960-165396626-875831092=:16107
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 2 Oct 1997, Aaron Tiensivu wrote:

> > WHERE can I find PGCC ???
>
> ftp.goof.com
>
> > Does it compile the kernel without problems?
>
> AFAICT.

It won't compile correctly the following network drivers:

de4x5, depca, ewrk3

(tested on 970924 pgcc release).

I have a patch (attached) which seems to work, and hope it does not break
anything else. The file to patch is linux/include/asm-i386/string.h.

I had myself problems to believe that this could be the cause. Code
generated without the patch is _obviously_ wrong at the machine code level
where inlined strstr() are used. See the attached example.

If anybody uses one of these network drivers, please tell me the result.
This patch could do very bad things it it has a glitch. But I have the
impression that I have finally learnt to use inline assembly constraints
correctly.

BTW: I have seen that there is a single ___strtok global variable in the
whole kernel (even 2.1.56). Is it SMP safe ?

Gabriel.
--2006934960-165396626-875831092=:16107
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=bad_code_example
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPP.3.91.971002232452.16107U@gra-ux1.iram.es>
Content-Description: Example of bad generated code

VGhlIGZvbGxvd2luZyBjb2RlOg0KICAgIGZvciAoaT0wOyBpPHNpZ2xlbjsg
aSsrKSB7DQogICAgICAgIGlmIChzdHJzdHIobmFtZSxkZTR4NV9zaWduYXR1
cmVzW2ldKSE9TlVMTCkgYnJlYWs7DQogICAgfQ0KDQoNCmdlbmVyYXRlcyAo
c2VlIHdoYXQgaGFwcGVucyB0byAlZWRpKToNCg0KMDAwMDRjNjggPFBDSV9z
aWduYXR1cmUrOTQ+IHhvcmwgICAlZWJ4LCVlYngNCjAwMDA0YzZhIDxQQ0lf
c2lnbmF0dXJlKzk2PiBjbXBsICAgJDB4NSwlZWJ4DQowMDAwNGM2ZCA8UENJ
X3NpZ25hdHVyZSs5OT4gam5sICAgIDAwMDA0Y2FlIDxQQ0lfc2lnbmF0dXJl
K2RhPg0KMDAwMDRjNmYgPFBDSV9zaWduYXR1cmUrOWI+IGxlYWwgICAweDE4
KCVlc3AsMSksJWVjeA0KMDAwMDRjNzMgPFBDSV9zaWduYXR1cmUrOWY+IG1v
dmwgICAlZWN4LDB4MTAoJWVzcCwxKQ0KMDAwMDRjNzcgPFBDSV9zaWduYXR1
cmUrYTM+IHhvcmwgICAlZWF4LCVlYXgNCjAwMDA0Yzc5IDxQQ0lfc2lnbmF0
dXJlK2E1PiBtb3ZsICAgJDB4ZmZmZmZmZmYsJWVjeA0KMDAwMDRjN2UgPFBD
SV9zaWduYXR1cmUrYWE+IG1vdmwgICAlZWJwLCVlc2kNCjAwMDA0YzgwIDxQ
Q0lfc2lnbmF0dXJlK2FjPiBtb3ZsICAgMHgxMCglZXNwLDEpLCVlZGkNCjAw
MDA0Yzg0IDxQQ0lfc2lnbmF0dXJlK2IwPiBjbGQgICAgDQowMDAwNGM4NSA8
UENJX3NpZ25hdHVyZStiMT4gbW92bCAgICglZWRpLCVlYngsNCksJWVkaQ0K
MDAwMDRjODggPFBDSV9zaWduYXR1cmUrYjQ+IHJlcG56IHNjYXNiICVlczoo
JWVkaSksJWFsDQowMDAwNGM4YSA8UENJX3NpZ25hdHVyZStiNj4gbm90bCAg
ICVlY3gNCjAwMDA0YzhjIDxQQ0lfc2lnbmF0dXJlK2I4PiBkZWNsICAgJWVj
eA0KMDAwMDRjOGQgPFBDSV9zaWduYXR1cmUrYjk+IG1vdmwgICAlZWN4LCVl
ZHgNCjAwMDA0YzhmIDxQQ0lfc2lnbmF0dXJlK2JiPiBtb3ZsICAgKCVlZGks
JWVieCw0KSwlZWRpDQowMDAwNGM5MiA8UENJX3NpZ25hdHVyZStiZT4gbW92
bCAgICVlc2ksJWVheA0KMDAwMDRjOTQgPFBDSV9zaWduYXR1cmUrYzA+IG1v
dmwgICAlZWR4LCVlY3gNCjAwMDA0Yzk2IDxQQ0lfc2lnbmF0dXJlK2MyPiBy
ZXB6IGNtcHNiICVkczooJWVzaSksJWVzOiglZWRpKQ0KMDAwMDRjOTggPFBD
SV9zaWduYXR1cmUrYzQ+IGplICAgICAwMDAwNGNhNCA8UENJX3NpZ25hdHVy
ZStkMD4NCjAwMDA0YzlhIDxQQ0lfc2lnbmF0dXJlK2M2PiB4Y2hnbCAgJWVh
eCwlZXNpDQowMDAwNGM5YiA8UENJX3NpZ25hdHVyZStjNz4gaW5jbCAgICVl
c2kNCjAwMDA0YzljIDxQQ0lfc2lnbmF0dXJlK2M4PiBjbXBiICAgJDB4MCww
eGZmZmZmZmZmKCVlYXgpDQowMDAwNGNhMCA8UENJX3NpZ25hdHVyZStjYz4g
am5lICAgIDAwMDA0YzhmIDxQQ0lfc2lnbmF0dXJlK2JiPg0KMDAwMDRjYTIg
PFBDSV9zaWduYXR1cmUrY2U+IHhvcmwgICAlZWF4LCVlYXgNCjAwMDA0Y2E0
IDxQQ0lfc2lnbmF0dXJlK2QwPiB0ZXN0bCAgJWVheCwlZWF4DQowMDAwNGNh
NiA8UENJX3NpZ25hdHVyZStkMj4gam5lICAgIDAwMDA0Y2FlIDxQQ0lfc2ln
bmF0dXJlK2RhPg0KMDAwMDRjYTggPFBDSV9zaWduYXR1cmUrZDQ+IGluY2wg
ICAlZWJ4DQowMDAwNGNhOSA8UENJX3NpZ25hdHVyZStkNT4gY21wbCAgICQw
eDUsJWVieA0KMDAwMDRjYWMgPFBDSV9zaWduYXR1cmUrZDg+IGpsICAgICAw
MDAwNGM3NyA8UENJX3NpZ25hdHVyZSthMz4NCg==
--2006934960-165396626-875831092=:16107
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="string.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPP.3.91.971002232452.16107V@gra-ux1.iram.es>
Content-Description: Patch to generate correct code.

LS0tIGxpbnV4LTIuMC4zMC9pbmNsdWRlL2FzbS1pMzg2L3N0cmluZy5oLnZp
cmdpbglXZWQgT2N0ICAxIDEwOjU1OjQ4IDE5OTcNCisrKyBsaW51eC0yLjAu
MzAvaW5jbHVkZS9hc20taTM4Ni9zdHJpbmcuaAlUaHUgT2N0ICAyIDIxOjUy
OjQ3IDE5OTcNCkBAIC0yNiw2ICsyNiwyMyBAQA0KICAqCQlDb3B5cmlnaHQg
KEMpIDE5OTEsIDE5OTIgTGludXMgVG9ydmFsZHMNCiAgKi8NCiANCisvKiAN
CisgKiBGb3VuZCBhIHNlcmlvdXMgcHJvYmxlbSB3aXRoIGNvbnN0cmFpbnRz
IHJldmVhbGVkIGJ5IGNvbXBpbGluZyB3aXRoIHBnY2MuDQorICogDQorICog
Rmlyc3QgYXR0ZW1wdCB0byBmaXggaXQgYnkgRy5QYXViZXJ0LCBwYXViZXJ0
QGlyYW0uZXMsIDE5OTcNCisgKiANCisgKiBDb25zaWRlciBmb3Igbm93IHRo
aXMgY29kZSBhcyBleHBlcmltZW50YXRpb24gb24gZ2NjIGlubGluZSBhc3Nl
bWJseS4gDQorICogVXNlIGF0IHlvdXIgb3duIHJpc2suIA0KKyAqDQorICog
SSBoYXZlIGFsc28gdGhlIGZlZWxpbmcgdGhhdCBtYW55ICJtZW1vcnkiIGFy
ZSBzdXBlcmZsdW91czoNCisgKiB3aGVuIHBhc3NpbmcgYSBjaGFyICosIHJl
c3AuIGEgY29uc3QgY2hhciAqLCB0aGUgY29tcGlsZXIgc2hvdWxkIGFzc3Vt
ZSANCisgKiB0aGF0IHRoZSB2YWx1ZSBvciBhcnJheSBwb2ludGVkIHRvIGlz
IG1vZGlmaWVkLCByZXNwIHJlZmVyZW5jZWQuDQorICogVGhlIGZhY3QgdGhh
dCB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQgZXh0ZXJuIGlubGluZSBzaG91
bGQgbm90IGNoYW5nZQ0KKyAqIHRoZXNlIHNlbWFudGljcy4gDQorICogDQor
ICovDQorDQorDQogI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJDUFkNCiBleHRl
cm4gaW5saW5lIGNoYXIgKiBzdHJjcHkoY2hhciAqIGRlc3QsY29uc3QgY2hh
ciAqc3JjKQ0KIHsNCkBAIC0zNiw3ICs1Myw3IEBADQogCSJ0ZXN0YiAlJWFs
LCUlYWxcblx0Ig0KIAkiam5lIDFiIg0KIAk6IC8qIG5vIG91dHB1dCAqLw0K
LQk6IlMiIChzcmMpLCJEIiAoZGVzdCk6InNpIiwiZGkiLCJheCIsIm1lbW9y
eSIpOw0KKwk6IlMiIChzcmMpLCJEIiAoZGVzdCk6InNpIiwiZGkiLCJheCIv
KiwibWVtb3J5IiovKTsNCiByZXR1cm4gZGVzdDsNCiB9DQogDQpAQCAtNTUs
NyArNzIsNyBAQA0KIAkic3Rvc2JcbiINCiAJIjI6Ig0KIAk6IC8qIG5vIG91
dHB1dCAqLw0KLQk6IlMiIChzcmMpLCJEIiAoZGVzdCksImMiIChjb3VudCk6
InNpIiwiZGkiLCJheCIsImN4IiwibWVtb3J5Iik7DQorCToiUyIgKHNyYyks
IkQiIChkZXN0KSwiYyIgKGNvdW50KToic2kiLCJkaSIsImF4IiwiY3giLyos
Im1lbW9yeSIqLyk7DQogcmV0dXJuIGRlc3Q7DQogfQ0KIA0KQEAgLTk1LDcg
KzExMiw3IEBADQogCSJzdG9zYiINCiAJOiAvKiBubyBvdXRwdXQgKi8NCiAJ
OiJTIiAoc3JjKSwiRCIgKGRlc3QpLCJhIiAoMCksImMiICgweGZmZmZmZmZm
KSwiZyIgKGNvdW50KQ0KLQk6InNpIiwiZGkiLCJheCIsImN4IiwibWVtb3J5
Iik7DQorCToic2kiLCJkaSIsImF4IiwiY3giLyosIm1lbW9yeSIqLyk7DQog
cmV0dXJuIGRlc3Q7DQogfQ0KIA0KQEAgLTE4MSwyNSArMTk4LDI5IEBADQog
ZXh0ZXJuIGlubGluZSBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKiBjcywg
Y29uc3QgY2hhciAqIGN0KQ0KIHsNCiByZWdpc3RlciBjaGFyICogX19yZXM7
DQorY29uc3QgY2hhciAqIF9fY3Q7DQoraW50IF9fbGVuOw0KIF9fYXNtX18g
X192b2xhdGlsZV9fKA0KIAkiY2xkXG5cdCINCi0JIm1vdmwgJTQsJSVlZGlc
blx0Ig0KKwkibW92bCAlNiwlJWVkaVxuXHQiDQogCSJyZXBuZVxuXHQiDQog
CSJzY2FzYlxuXHQiDQogCSJub3RsICUlZWN4XG5cdCINCi0JImRlY2wgJSVl
Y3hcblx0Ig0KLQkibW92bCAlJWVjeCwlJWVkeFxuIg0KKwkibGVhbCAtMSgl
JWVjeCksJTFcblx0Ig0KIAkiMTpcdGxvZHNiXG5cdCINCiAJInRlc3RiICUl
YWwsJSVhbFxuXHQiDQogCSJqZSAyZlxuXHQiDQotCSJtb3ZsICU0LCUlZWRp
XG5cdCINCi0JIm1vdmwgJSVlZHgsJSVlY3hcblx0Ig0KKwkibW92bCAlNiwl
JWVkaVxuXHQiDQorCSJtb3ZsICUxLCUlZWN4XG5cdCINCiAJInJlcG5lXG5c
dCINCiAJInNjYXNiXG5cdCINCiAJImplIDFiXG4iDQogCSIyOlx0ZGVjbCAl
MCINCi0JOiI9UyIgKF9fcmVzKToiYSIgKDApLCJjIiAoMHhmZmZmZmZmZiks
IjAiIChjcyksImciIChjdCkNCi0JOiJheCIsImN4IiwiZHgiLCJkaSIpOw0K
KwkvKiBUaGlzIGNvbnN0cmFpbnQgc2V0IGxlYXZlcyBmZXcgY2hvaWNlcyB0
byBnY2MsIGJ1dCB1c3VhbGx5IHdvcmtzLg0KKwkgICBDaGFuZ2UgIj0mciIg
KF9fbGVuKSB0byAiPSZybSIgKF9fbGVuKSBpZiB0aGUgY29tcGlsZXIgY29t
cGxhaW5zLiAqLw0KKwk6Ij1TIiAoX19yZXMpLCAiPSZyIiAoX19sZW4pLCAi
PSZEIiAoX19jdCkNCisJOiJhIiAoMCksImMiICgweGZmZmZmZmZmKSwiMCIg
KGNzKSwgImciIChjdCkNCisJOiJheCIsImN4Iik7DQogcmV0dXJuIF9fcmVz
LWNzOw0KIH0NCiANCkBAIC0yMDcsODMgKzIyOCw5NSBAQA0KIGV4dGVybiBp
bmxpbmUgc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAqIGNzLCBjb25zdCBj
aGFyICogY3QpDQogew0KIHJlZ2lzdGVyIGNoYXIgKiBfX3JlczsNCitjb25z
dCBjaGFyICogX19jdDsNCitpbnQgX19sZW47DQogX19hc21fXyBfX3ZvbGF0
aWxlX18oDQogCSJjbGRcblx0Ig0KLQkibW92bCAlNCwlJWVkaVxuXHQiDQor
CSJtb3ZsICU2LCUlZWRpXG5cdCINCiAJInJlcG5lXG5cdCINCiAJInNjYXNi
XG5cdCINCiAJIm5vdGwgJSVlY3hcblx0Ig0KLQkiZGVjbCAlJWVjeFxuXHQi
DQotCSJtb3ZsICUlZWN4LCUlZWR4XG4iDQorCSJsZWFsIC0xKCUlZWN4KSwl
MVxuXHQiDQogCSIxOlx0bG9kc2Jcblx0Ig0KIAkidGVzdGIgJSVhbCwlJWFs
XG5cdCINCiAJImplIDJmXG5cdCINCi0JIm1vdmwgJTQsJSVlZGlcblx0Ig0K
LQkibW92bCAlJWVkeCwlJWVjeFxuXHQiDQorCSJtb3ZsICU2LCUlZWRpXG5c
dCINCisJIm1vdmwgJTEsJSVlY3hcblx0Ig0KIAkicmVwbmVcblx0Ig0KIAki
c2Nhc2Jcblx0Ig0KIAkiam5lIDFiXG4iDQogCSIyOlx0ZGVjbCAlMCINCi0J
OiI9UyIgKF9fcmVzKToiYSIgKDApLCJjIiAoMHhmZmZmZmZmZiksIjAiIChj
cyksImciIChjdCkNCi0JOiJheCIsImN4IiwiZHgiLCJkaSIpOw0KKwkvKiBU
aGlzIGNvbnN0cmFpbnQgc2V0IGxlYXZlcyBmZXcgY2hvaWNlcyB0byBnY2Ms
IGJ1dCB1c3VhbGx5IHdvcmtzLg0KKwkgICBDaGFuZ2UgIj0mciIgKF9fbGVu
KSB0byAiPSZybSIgKF9fbGVuKSBpZiB0aGUgY29tcGlsZXIgY29tcGxhaW5z
LiAqLw0KKwk6Ij1TIiAoX19yZXMpLCAiPSZyIiAoX19sZW4pLCAiPSZEIiAo
X19jdCkNCisJOiJhIiAoMCksImMiICgweGZmZmZmZmZmKSwiMCIgKGNzKSwi
ZyIgKGN0KQ0KKwk6ImF4IiwiY3giKTsNCiByZXR1cm4gX19yZXMtY3M7DQog
fQ0KIA0KICNkZWZpbmUgX19IQVZFX0FSQ0hfU1RSUEJSSw0KIGV4dGVybiBp
bmxpbmUgY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqIGNzLGNvbnN0IGNo
YXIgKiBjdCkNCiB7DQotcmVnaXN0ZXIgY2hhciAqIF9fcmVzOw0KK2NoYXIg
KiBfX3JlczsNCitjb25zdCBjaGFyICogX19jdDsNCitpbnQgX19sZW47DQog
X19hc21fXyBfX3ZvbGF0aWxlX18oDQogCSJjbGRcblx0Ig0KLQkibW92bCAl
NCwlJWVkaVxuXHQiDQorCSJtb3ZsICU2LCUlZWRpXG5cdCINCiAJInJlcG5l
XG5cdCINCiAJInNjYXNiXG5cdCINCiAJIm5vdGwgJSVlY3hcblx0Ig0KLQki
ZGVjbCAlJWVjeFxuXHQiDQotCSJtb3ZsICUlZWN4LCUlZWR4XG4iDQorCSJs
ZWFsIC0xKCUlZWN4KSwlMVxuXHQiDQogCSIxOlx0bG9kc2Jcblx0Ig0KIAki
dGVzdGIgJSVhbCwlJWFsXG5cdCINCi0JImplIDJmXG5cdCINCi0JIm1vdmwg
JTQsJSVlZGlcblx0Ig0KLQkibW92bCAlJWVkeCwlJWVjeFxuXHQiDQorCSJq
ZSAyZlxuXHQiCQkvKiBIZXJlICVlYXggaXMgemVybyBpZiBicmFuY2ggdGFr
ZW4gISAqLw0KKwkibW92bCAlNiwlJWVkaVxuXHQiDQorCSJtb3ZsICUxLCUl
ZWN4XG5cdCINCiAJInJlcG5lXG5cdCINCiAJInNjYXNiXG5cdCINCiAJImpu
ZSAxYlxuXHQiDQotCSJkZWNsICUwXG5cdCINCi0JImptcCAzZlxuIg0KLQki
MjpcdHhvcmwgJTAsJTBcbiINCi0JIjM6Ig0KLQk6Ij1TIiAoX19yZXMpOiJh
IiAoMCksImMiICgweGZmZmZmZmZmKSwiMCIgKGNzKSwiZyIgKGN0KQ0KLQk6
ImF4IiwiY3giLCJkeCIsImRpIik7DQorCSJsZWFsIC0xKCUlZXNpKSwlJWVh
eFxuXHQiDQorCSIyOiINCisJLyogVGhpcyBjb25zdHJhaW50IHNldCBsZWF2
ZXMgZmV3IGNob2ljZXMgdG8gZ2NjLCBidXQgdXN1YWxseSB3b3Jrcy4NCisJ
ICAgQ2hhbmdlICI9JnIiIChfX2xlbikgdG8gIj0mcm0iIChfX2xlbikgaWYg
dGhlIGNvbXBpbGVyIGNvbXBsYWlucy4gKi8NCisJOiI9YSIgKF9fcmVzKSwg
ICI9JnIiIChfX2xlbiksICI9JkQiIChfX2N0KQ0KKwk6IjAiICgwKSwiYyIg
KDB4ZmZmZmZmZmYpLCJTIiAoY3MpLCJnIiAoY3QpDQorCToiY3giLCJzaSIp
Ow0KIHJldHVybiBfX3JlczsNCiB9DQogDQogI2RlZmluZSBfX0hBVkVfQVJD
SF9TVFJTVFINCiBleHRlcm4gaW5saW5lIGNoYXIgKiBzdHJzdHIoY29uc3Qg
Y2hhciAqIGNzLGNvbnN0IGNoYXIgKiBjdCkNCiB7DQotcmVnaXN0ZXIgY2hh
ciAqIF9fcmVzOw0KK2NoYXIgKiBfX3JlczsNCitjb25zdCBjaGFyICpfX2N0
Ow0KK2ludCBfX2xlbjsNCiBfX2FzbV9fIF9fdm9sYXRpbGVfXygNCi0JImNs
ZFxuXHQiIFwNCi0JIm1vdmwgJTQsJSVlZGlcblx0Ig0KKwkiY2xkXG5cdCIN
CisJIm1vdmwgJTYsJSVlZGlcblx0Ig0KIAkicmVwbmVcblx0Ig0KIAkic2Nh
c2Jcblx0Ig0KIAkibm90bCAlJWVjeFxuXHQiDQogCSJkZWNsICUlZWN4XG5c
dCIJLyogTk9URSEgVGhpcyBhbHNvIHNldHMgWiBpZiBzZWFyY2hzdHJpbmc9
JycgKi8NCi0JIm1vdmwgJSVlY3gsJSVlZHhcbiINCi0JIjE6XHRtb3ZsICU0
LCUlZWRpXG5cdCINCisJIm1vdmwgJSVlY3gsJTFcbiINCisJIjE6XHRtb3Zs
ICU2LCUlZWRpXG5cdCINCiAJIm1vdmwgJSVlc2ksJSVlYXhcblx0Ig0KLQki
bW92bCAlJWVkeCwlJWVjeFxuXHQiDQogCSJyZXBlXG5cdCINCiAJImNtcHNi
XG5cdCINCiAJImplIDJmXG5cdCIJCS8qIGFsc28gd29ya3MgZm9yIGVtcHR5
IHN0cmluZywgc2VlIGFib3ZlICovDQogCSJ4Y2hnbCAlJWVheCwlJWVzaVxu
XHQiDQorCSJtb3ZsICUxLCUlZWN4XG5cdCINCiAJImluY2wgJSVlc2lcblx0
Ig0KIAkiY21wYiAkMCwtMSglJWVheClcblx0Ig0KIAkiam5lIDFiXG5cdCIN
CiAJInhvcmwgJSVlYXgsJSVlYXhcblx0Ig0KIAkiMjoiDQotCToiPWEiIChf
X3Jlcyk6IjAiICgwKSwiYyIgKDB4ZmZmZmZmZmYpLCJTIiAoY3MpLCJnIiAo
Y3QpDQotCToiY3giLCJkeCIsImRpIiwic2kiKTsNCisJLyogVGhpcyBjb25z
dHJhaW50IHNldCBsZWF2ZXMgZmV3IGNob2ljZXMgdG8gZ2NjLCBidXQgdXN1
YWxseSB3b3JrcywNCisJIGFuZCBwZ2NjIGNvbXBsYWlucyB3aXRoIGltcG9z
c2libGUgY29uc3RyYWludHMgaWYgX19sZW4gaXMgZGVjbGFyZWQNCisJIGFz
ICI9JnIiIHdoZW4gY29tcGlsaW5nIGRlNHg1LmMgISAqLw0KKwk6Ij1hIiAo
X19yZXMpLCAgIj0mcm0iIChfX2xlbiksICI9JkQiIChfX2N0KQ0KKwk6IjAi
ICgwKSwiYyIgKDB4ZmZmZmZmZmYpLCJTIiAoY3MpLCJnIiAoY3QpDQorCToi
Y3giLCJzaSIpOw0KIHJldHVybiBfX3JlczsNCiB9DQogDQpAQCAtMzA0LDcg
KzMzNyw5IEBADQogI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJUT0sNCiBleHRl
cm4gaW5saW5lIGNoYXIgKiBzdHJ0b2soY2hhciAqIHMsY29uc3QgY2hhciAq
IGN0KQ0KIHsNCi1yZWdpc3RlciBjaGFyICogX19yZXM7DQorY2hhciAqIF9f
cmVzOw0KK2NvbnN0IGNoYXIgKiBfX2N0Ow0KK2ludCBfX2xlbiwgX19jbnQs
IF9fdmFsOw0KIF9fYXNtX18gX192b2xhdGlsZV9fKA0KIAkidGVzdGwgJTEs
JTFcblx0Ig0KIAkiam5lIDFmXG5cdCINCkBAIC0zMTUsMTggKzM1MCwxOCBA
QA0KIAkibW92bCAkLTEsJSVlY3hcblx0Ig0KIAkieG9ybCAlJWVheCwlJWVh
eFxuXHQiDQogCSJjbGRcblx0Ig0KLQkibW92bCAlNCwlJWVkaVxuXHQiDQor
CSJtb3ZsICU4LCUlZWRpXG5cdCINCiAJInJlcG5lXG5cdCINCiAJInNjYXNi
XG5cdCINCiAJIm5vdGwgJSVlY3hcblx0Ig0KIAkiZGVjbCAlJWVjeFxuXHQi
DQogCSJqZSA3ZlxuXHQiCQkJLyogZW1wdHkgZGVsaW1pdGVyLXN0cmluZyAq
Lw0KLQkibW92bCAlJWVjeCwlJWVkeFxuIg0KKwkibW92bCAlJWVjeCwlMlxu
Ig0KIAkiMjpcdGxvZHNiXG5cdCINCiAJInRlc3RiICUlYWwsJSVhbFxuXHQi
DQogCSJqZSA3ZlxuXHQiDQotCSJtb3ZsICU0LCUlZWRpXG5cdCINCi0JIm1v
dmwgJSVlZHgsJSVlY3hcblx0Ig0KKwkibW92bCAlOCwlJWVkaVxuXHQiDQor
CSJtb3ZsICUyLCUlZWN4XG5cdCINCiAJInJlcG5lXG5cdCINCiAJInNjYXNi
XG5cdCINCiAJImplIDJiXG5cdCINCkBAIC0zMzcsOCArMzcyLDggQEANCiAJ
IjM6XHRsb2RzYlxuXHQiDQogCSJ0ZXN0YiAlJWFsLCUlYWxcblx0Ig0KIAki
amUgNWZcblx0Ig0KLQkibW92bCAlNCwlJWVkaVxuXHQiDQotCSJtb3ZsICUl
ZWR4LCUlZWN4XG5cdCINCisJIm1vdmwgJTgsJSVlZGlcblx0Ig0KKwkibW92
bCAlMiwlJWVjeFxuXHQiDQogCSJyZXBuZVxuXHQiDQogCSJzY2FzYlxuXHQi
DQogCSJqbmUgM2Jcblx0Ig0KQEAgLTM1Niw5ICszOTEsMTIgQEANCiAJImpu
ZSA4ZlxuXHQiDQogCSJtb3ZsICUwLCUxXG4iDQogCSI4OiINCi0JOiI9YiIg
KF9fcmVzKSwiPVMiIChfX19zdHJ0b2spDQotCToiMCIgKF9fX3N0cnRvayks
IjEiIChzKSwiZyIgKGN0KQ0KLQk6ImF4IiwiY3giLCJkeCIsImRpIiwibWVt
b3J5Iik7DQorCS8qIFRoaXMgY29uc3RyYWludCBzZXQgaXMgZnJpZ2h0ZW5p
bmc6IGlmIEkgd2VyZSB0aGUgY29tcGlsZXIsIA0KKwkgICBJIHdvdWxkIHRy
eSB0byBlYXQgdGhlIHNvdXJjZSBmaWxlIHRvIGF2b2lkIHNlZWluZyBpdCBh
Z2FpbiA6LSkuDQorCSAgIENoYW5nZSAiPSZyIiAoX19sZW4pIHRvICI9JnJt
IiAoX19sZW4pIGlmIHRoZSBjb21waWxlciBjb21wbGFpbnMuICovDQorCToi
PWIiIChfX3JlcyksIj1TIiAoX19fc3RydG9rKSwgIj0mciIgKF9fbGVuKSwg
Ij0mRCIgKF9fY3QpLCANCisJICI9JmMiIChfX2NudCksICI9JmEiIChfX3Zh
bCkNCisJOiIwIiAoX19fc3RydG9rKSwiMSIgKHMpLCJnIiAoY3QpKTsNCiBy
ZXR1cm4gX19yZXM7DQogfQ0KIA0K
--2006934960-165396626-875831092=:16107--