public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/9495: Segfault when crosscompiling for PPC on x86
@ 2003-05-10  7:51 giovannibajo
  0 siblings, 0 replies; 3+ messages in thread
From: giovannibajo @ 2003-05-10  7:51 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, panagiotis.issaris, takis

Synopsis: Segfault when crosscompiling for PPC on x86

State-Changed-From-To: feedback->closed
State-Changed-By: bajo
State-Changed-When: Sat May 10 07:51:38 2003
State-Changed-Why:
    No feedback, 3 months.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9495


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: c/9495: Segfault when crosscompiling for PPC on x86
@ 2003-02-02 22:39 bangerth
  0 siblings, 0 replies; 3+ messages in thread
From: bangerth @ 2003-02-02 22:39 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, panagiotis.issaris, takis

Synopsis: Segfault when crosscompiling for PPC on x86

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Sun Feb  2 22:39:27 2003
State-Changed-Why:
    gcc2.95 is a rather old version. Do you have any possibility
    to check whether this also happens with a newer version, like
    3.2.1?
    
    If you can't check, you need to provide us with preprocessed
    sources so that we can try to reproduce the problem.
    Please see http://gcc.gnu.org/bugs.html for this.
    
    Thanks
      Wolfgang

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9495


^ permalink raw reply	[flat|nested] 3+ messages in thread

* c/9495: Segfault when crosscompiling for PPC on x86
@ 2003-01-29  8:36 takis
  0 siblings, 0 replies; 3+ messages in thread
From: takis @ 2003-01-29  8:36 UTC (permalink / raw)
  To: gcc-gnats; +Cc: panagiotis.issaris


>Number:         9495
>Category:       c
>Synopsis:       Segfault when crosscompiling for PPC on x86
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Jan 29 08:36:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Panagiotis Issaris
>Release:        2.95.3
>Organization:
>Environment:
Debian GNU/Linux
>Description:
When cross-compiling Kaffe 1.07 for PowerPC on a x86 system, the GCC C cross-compiler gives an ICE.

/bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../../config -I../../include -I../../kaffe/
kaffevm/systems/unix-jthreads -Iintrp -I./intrp -I../../libltdl -DINTERPRETER -I../../kaffe/xprof  -DKVER='"1.
0.7"' -I/usr/local/src/kaffe-1.0.7/./kaffe/kaffevm -I/usr/local/src/kaffe-1.0.7/./kaffe/kaffevm/systems/unix-j
threads -I../../config -I../../include  -I/usr/local/include  -g -O2 -fsigned-char -c support.c
gcc -DHAVE_CONFIG_H -I. -I. -I../../config -I../../include -I../../kaffe/kaffevm/systems/unix-jthreads -Iintrp
 -I./intrp -I../../libltdl -DINTERPRETER -I../../kaffe/xprof -DKVER=\"1.0.7\" -I/usr/local/src/kaffe-1.0.7/./k
affe/kaffevm -I/usr/local/src/kaffe-1.0.7/./kaffe/kaffevm/systems/unix-jthreads -I../../config -I../../include
 -I/usr/local/include -g -O2 -fsigned-char -c support.c  -fPIC -DPIC -o support.lo
support.c: In function `sysdepCallMethod':
support.c:1053: Internal compiler error:
support.c:1053: internal error--insn does not satisfy its constraints:
(insn 998 995 507 (set (reg/v:DF 40 f8)
        (mem:DF (plus:SI (reg:SI 31 r31)
                        (const_int 8 [0x8])) 0)) 441 {*movdf_softfloat32} (nil)
                            (nil))
                            make[3]: *** [support.lo] Error 1
                            make[3]: Leaving directory `/usr/local/src/kaffe-1.0.7/kaffe/kaffevm'
                            make[2]: *** [all-recursive] Error 1
                            make[2]: Leaving directory `/usr/local/src/kaffe-1.0.7/kaffe/kaffevm'
                            make[1]: *** [all-recursive] Error 1
                            make[1]: Leaving directory `/usr/local/src/kaffe-1.0.7/kaffe'
                            make: *** [all-recursive] Error 1

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="support.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="support.c"

LyoKICogc3VwcG9ydC5jCiAqIE5hdGl2ZSBsYW5ndWFnZSBzdXBwb3J0IChleGNsdWRpbmcgc3Ry
aW5nIHJvdXRpbmVzKS4KICoKICogQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3CiAqCVRyYW5zdmly
dHVhbCBUZWNobm9sb2dpZXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFNlZSB0
aGUgZmlsZSAibGljZW5zZS50ZXJtcyIgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZCByZWRp
c3RyaWJ1dGlvbiAKICogb2YgdGhpcyBmaWxlLiAKICovCgojaW5jbHVkZSAiZGVidWcuaCIKI2lu
Y2x1ZGUgImNvbmZpZy5oIgojaW5jbHVkZSAiY29uZmlnLXN0ZC5oIgojaW5jbHVkZSAiY29uZmln
LW1lbS5oIgojaW5jbHVkZSAiam5pLmgiCiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgImVy
cm9ycy5oIgojaW5jbHVkZSAianR5cGVzLmgiCiNpbmNsdWRlICJhY2Nlc3MuaCIKI2luY2x1ZGUg
Im9iamVjdC5oIgojaW5jbHVkZSAiY29uc3RhbnRzLmgiCiNpbmNsdWRlICJiYXNlQ2xhc3Nlcy5o
IgojaW5jbHVkZSAic3RyaW5nU3VwcG9ydC5oIgojaW5jbHVkZSAibG9va3VwLmgiCiNpbmNsdWRl
ICJleGNlcHRpb24uaCIKI2luY2x1ZGUgInNsb3RzLmgiCiNpbmNsdWRlICJzdXBwb3J0LmgiCiNp
Zm5kZWYgSEFWRV9MSUJGRkkKIyBkZWZpbmUgTkVFRF9zeXNkZXBDYWxsTWV0aG9kIDEKI2VuZGlm
IC8qIEhBVkVfTElCRkZJICovCiNpbmNsdWRlICJjbGFzc01ldGhvZC5oIgojaW5jbHVkZSAibWFj
aGluZS5oIgojaW5jbHVkZSAibWQuaCIKI2luY2x1ZGUgIml0eXBlcy5oIgojaW5jbHVkZSAiZXh0
ZXJuYWwuaCIKI2luY2x1ZGUgInRocmVhZC5oIgojaW5jbHVkZSAianRocmVhZC5oIgojaW5jbHVk
ZSAibG9ja3MuaCIKCiNpZiAhZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkKI2luY2x1ZGUgPHN5
cy90aW1lYi5oPgojZW5kaWYKCiNkZWZpbmUJTUFYRVhDRVBUSU9OTEVOCQkyMDAKI2RlZmluZQlF
UlJPUl9TSUdOQVRVUkUwCSIoKVYiCiNkZWZpbmUJRVJST1JfU0lHTkFUVVJFCQkiKExqYXZhL2xh
bmcvU3RyaW5nOylWIgoKLyogQW5jaG9yIHBvaW50IGZvciB1c2VyIGRlZmluZWQgcHJvcGVydGll
cyAqLwp1c2VyUHJvcGVydHkqIHVzZXJQcm9wZXJ0aWVzOwoKI2lmIGRlZmluZWQoTk9fU0hBUkVE
X0xJQlJBUklFUykKLyogSW50ZXJuYWwgbmF0aXZlIGZ1bmN0aW9ucyAqLwpzdGF0aWMgbmF0aXZl
RnVuY3Rpb24gbnVsbF9mdW5jc1sxXTsKbmF0aXZlRnVuY3Rpb24qIG5hdGl2ZV9mdW5jcyA9IG51
bGxfZnVuY3M7CiNlbmRpZgoKZXh0ZXJuIHN0cnVjdCBKTklFbnZfIEthZmZlX0pOSUVudjsKCiNp
ZmRlZiBIQVZFX0xJQkZGSQojaW5jbHVkZSA8ZmZpLmg+CnN0YXRpYyBpbmxpbmUgZmZpX3R5cGUg
KmoyZmZpKGNoYXIgdHlwZSkKewoJZmZpX3R5cGUgKmZ0eXBlOwoKCXN3aXRjaCAodHlwZSkgewoJ
Y2FzZSAnSic6CgkJZnR5cGUgPSAmZmZpX3R5cGVfc2ludDY0OwoJCWJyZWFrOwoJY2FzZSAnRCc6
CgkJZnR5cGUgPSAmZmZpX3R5cGVfZG91YmxlOwoJCWJyZWFrOwoJY2FzZSAnRic6CgkJZnR5cGUg
PSAmZmZpX3R5cGVfZmxvYXQ7CgkJYnJlYWs7CglkZWZhdWx0OgoJCWZ0eXBlID0gJmZmaV90eXBl
X3VpbnQ7Cgl9CglyZXR1cm4gZnR5cGU7Cn0KCiNkZWZpbmUgc3lzZGVwQ2FsbE1ldGhvZChDQUxM
KQkJCQkJCVwKZG8gewkJCQkJCQkJCVwKCWludCBpOwkJCQkJCQkJXAoJZmZpX2NpZiBjaWY7CQkJ
CQkJCVwKCWZmaV90eXBlICpydHlwZTsJCQkJCQlcCglmZmlfdHlwZSAqYXJndHlwZXNbKENBTEwp
LT5ucmFyZ3MgKyAxXTsJCQkJXAoJdm9pZCAqYXJndmFsc1soQ0FMTCktPm5yYXJncyArIDFdOwkJ
CQlcCglpbnQgZmFyZ3MgPSAwOwkJCQkJCQlcCglmb3IgKGkgPSAwOyBpIDwgKENBTEwpLT5ucmFy
Z3M7IGkrKykgewkJCQlcCgkJc3dpdGNoICgoQ0FMTCktPmNhbGxzaXplW2ldKSB7CQkJCVwKCQlj
YXNlIDE6CQkJCQkJCVwKCQkJYXJndHlwZXNbZmFyZ3NdID0gajJmZmkoKENBTEwpLT5jYWxsdHlw
ZVtpXSk7CVwKCQkJYXJndmFsc1tmYXJnc10gPSAmKChDQUxMKS0+YXJnc1tpXS5pKTsJCVwKCQkJ
ZmFyZ3MrKzsJCQkJCVwKCQkJYnJlYWs7CQkJCQkJXAoJCWNhc2UgMjoJCQkJCQkJXAoJCQlhcmd0
eXBlc1tmYXJnc10gPSBqMmZmaSgoQ0FMTCktPmNhbGx0eXBlW2ldKTsJXAoJCQlhcmd2YWxzW2Zh
cmdzXSA9ICYoKENBTEwpLT5hcmdzW2ldLmopOwkJXAoJCQlmYXJncysrOwkJCQkJXAoJCWRlZmF1
bHQ6CQkJCQkJXAoJCQlicmVhazsJCQkJCQlcCgkJfQkJCQkJCQlcCgl9CQkJCQkJCQlcCglydHlw
ZSA9IGoyZmZpICgoQ0FMTCktPnJldHR5cGUpOwkJCQlcCglpZiAoZmZpX3ByZXBfY2lmKCZjaWYs
IEZGSV9ERUZBVUxUX0FCSSwgZmFyZ3MsCQkJXAoJICAgIHJ0eXBlLCBhcmd0eXBlcykgPT0gRkZJ
X09LKSB7CQkJCVwKCQlmZmlfY2FsbCgmY2lmLCAoQ0FMTCktPmZ1bmN0aW9uLCAoQ0FMTCktPnJl
dCwgYXJndmFscyk7CVwKCX0JCQkJCQkJCVwKCWVsc2UJCQkJCQkJCVwKCQlBQk9SVCgpOwkJCQkJ
CVwKfSB3aGlsZSAoMCk7CiNlbmRpZiAvKiBIQVZFX0xJQkZGSSAqLwoKLyoKICogQ2FsbCBhIEph
dmEgbWV0aG9kIGZyb20gbmF0aXZlIGNvZGUuCiAqLwpqdmFsdWUKZG9fZXhlY3V0ZV9qYXZhX21l
dGhvZF92KHZvaWQqIG9iaiwgY29uc3QgY2hhciogbWV0aG9kX25hbWUsIGNvbnN0IGNoYXIqIHNp
Z25hdHVyZSwgTWV0aG9kKiBtYiwgaW50IGlzU3RhdGljQ2FsbCwgdmFfbGlzdCBhcmdwdHIpCnsK
CWp2YWx1ZSByZXR2YWw7CgllcnJvckluZm8gaW5mbzsKCglpZiAob2JqID09IDAgJiYgKCEgaXNT
dGF0aWNDYWxsIHx8ICEgbWIpKSB7CgkJdGhyb3dFeGNlcHRpb24oTnVsbFBvaW50ZXJFeGNlcHRp
b24pOwoJfQoKCWlmIChtYiA9PSAwKSB7CgkJYXNzZXJ0KG1ldGhvZF9uYW1lICE9IDAgJiYgc2ln
bmF0dXJlICE9IDApOwoJCWlmIChpc1N0YXRpY0NhbGwpIHsKCQkJbWIgPSBsb29rdXBDbGFzc01l
dGhvZCgoSGphdmFfbGFuZ19DbGFzcyopb2JqLCBtZXRob2RfbmFtZSwgc2lnbmF0dXJlLCAmaW5m
byk7CgkJfQoJCWVsc2UgewoJCQltYiA9IGxvb2t1cE9iamVjdE1ldGhvZCgoSGphdmFfbGFuZ19P
YmplY3QqKW9iaiwgbWV0aG9kX25hbWUsIHNpZ25hdHVyZSwgJmluZm8pOwoJCX0KCX0KCgkvKiBO
byBtZXRob2Qgb3Igd3JvbmcgdHlwZSAtIHRocm93IGV4Y2VwdGlvbiAqLwoJaWYgKG1iID09IDAp
IHsKCQl0aHJvd0Vycm9yKCZpbmZvKTsKCX0KCWVsc2UgaWYgKGlzU3RhdGljQ2FsbCAmJiAobWIt
PmFjY2ZsYWdzICYgQUNDX1NUQVRJQykgPT0gMCkgewoJCXRocm93RXhjZXB0aW9uKE5vU3VjaE1l
dGhvZEVycm9yKG1ldGhvZF9uYW1lKSk7Cgl9CgllbHNlIGlmICghaXNTdGF0aWNDYWxsICYmICht
Yi0+YWNjZmxhZ3MgJiBBQ0NfU1RBVElDKSAhPSAwKSB7CgkJdGhyb3dFeGNlcHRpb24oTm9TdWNo
TWV0aG9kRXJyb3IobWV0aG9kX25hbWUpKTsKCX0KCgljYWxsTWV0aG9kVihtYiwgTUVUSE9EX0lO
RElSRUNUTUVUSE9EKG1iKSwgb2JqLCBhcmdwdHIsICZyZXR2YWwpOwoKCXJldHVybiAocmV0dmFs
KTsKfQoKanZhbHVlCmRvX2V4ZWN1dGVfamF2YV9tZXRob2Qodm9pZCogb2JqLCBjb25zdCBjaGFy
KiBtZXRob2RfbmFtZSwgY29uc3QgY2hhciogc2lnbmF0dXJlLCBNZXRob2QqIG1iLCBpbnQgaXNT
dGF0aWNDYWxsLCAuLi4pCnsKCXZhX2xpc3QgYXJncHRyOwoJanZhbHVlIHJldHZhbDsKCglhc3Nl
cnQobWV0aG9kX25hbWUgIT0gMCB8fCBtYiAhPSAwKTsKCgl2YV9zdGFydChhcmdwdHIsIGlzU3Rh
dGljQ2FsbCk7CglyZXR2YWwgPSBkb19leGVjdXRlX2phdmFfbWV0aG9kX3Yob2JqLCBtZXRob2Rf
bmFtZSwgc2lnbmF0dXJlLCBtYiwgaXNTdGF0aWNDYWxsLCBhcmdwdHIpOwoJdmFfZW5kKGFyZ3B0
cik7CgoJcmV0dXJuIChyZXR2YWwpOwp9CgovKgogKiBDYWxsIGEgSmF2YSBzdGF0aWMgbWV0aG9k
IG9uIGEgY2xhc3MgZnJvbSBuYXRpdmUgY29kZS4KICovCmp2YWx1ZQpkb19leGVjdXRlX2phdmFf
Y2xhc3NfbWV0aG9kX3YoY29uc3QgY2hhciogY25hbWUsCglIamF2YV9sYW5nX0NsYXNzTG9hZGVy
KiBsb2FkZXIsIGNvbnN0IGNoYXIqIG1ldGhvZF9uYW1lLAoJY29uc3QgY2hhciogc2lnbmF0dXJl
LCB2YV9saXN0IGFyZ3B0cikKewoJSGphdmFfbGFuZ19DbGFzcyogY2xheno7CgllcnJvckluZm8g
aW5mbzsKCU1ldGhvZCogbWIgPSAwOwoJanZhbHVlIHJldHZhbDsKCWNoYXIgKmJ1ZjsKCgkvKiBD
b252ZXJ0ICIuIiB0byAiLyIgYW5kIGxvb2t1cCBjbGFzcyAqLwoJYnVmID0gY2hlY2tQdHIoS01B
TExPQyhzdHJsZW4oY25hbWUpICsgMSkpOwoJY2xhc3NuYW1lMnBhdGhuYW1lKGNuYW1lLCBidWYp
OwoJY2xhenogPSBsb29rdXBDbGFzcyhidWYsIGxvYWRlciwgJmluZm8pOwoJS0ZSRUUoYnVmKTsK
CgkvKiBHZXQgbWV0aG9kICovCglpZiAoY2xhenogIT0gMCkgewoJCW1iID0gbG9va3VwQ2xhc3NN
ZXRob2QoY2xhenosIG1ldGhvZF9uYW1lLCBzaWduYXR1cmUsICZpbmZvKTsKCX0KCWlmIChtYiA9
PSAwKSB7CgkJdGhyb3dFcnJvcigmaW5mbyk7Cgl9CgoJLyogTWV0aG9kIG11c3QgYmUgc3RhdGlj
IHRvIGludm9rZSBpdCBoZXJlICovCglpZiAoKG1iLT5hY2NmbGFncyAmIEFDQ19TVEFUSUMpID09
IDApIHsKCQl0aHJvd0V4Y2VwdGlvbihOb1N1Y2hNZXRob2RFcnJvcihtZXRob2RfbmFtZSkpOwoJ
fQoKCS8qIE1ha2UgdGhlIGNhbGwgKi8KCWNhbGxNZXRob2RWKG1iLCBNRVRIT0RfSU5ESVJFQ1RN
RVRIT0QobWIpLCAwLCBhcmdwdHIsICZyZXR2YWwpOwoKCXJldHVybiAocmV0dmFsKTsKfQoKanZh
bHVlCmRvX2V4ZWN1dGVfamF2YV9jbGFzc19tZXRob2QoY29uc3QgY2hhciogY25hbWUsIEhqYXZh
X2xhbmdfQ2xhc3NMb2FkZXIqbG9hZGVyLAoJY29uc3QgY2hhciogbWV0aG9kX25hbWUsIGNvbnN0
IGNoYXIqIHNpZ25hdHVyZSwgLi4uKQp7Cgl2YV9saXN0IGFyZ3B0cjsKCWp2YWx1ZSByZXR2YWw7
CgoJdmFfc3RhcnQoYXJncHRyLCBzaWduYXR1cmUpOwoJcmV0dmFsID0gZG9fZXhlY3V0ZV9qYXZh
X2NsYXNzX21ldGhvZF92KGNuYW1lLCBsb2FkZXIsIG1ldGhvZF9uYW1lLCBzaWduYXR1cmUsIGFy
Z3B0cik7Cgl2YV9lbmQoYXJncHRyKTsKCglyZXR1cm4gKHJldHZhbCk7Cn0KCi8qCiAqIEFsbG9j
YXRlIGFuIG9iamVjdCBhbmQgZXhlY3V0ZSB0aGUgY29uc3RydWN0b3IuCiAqLwpIamF2YV9sYW5n
X09iamVjdCoKZXhlY3V0ZV9qYXZhX2NvbnN0cnVjdG9yX3YoY29uc3QgY2hhciogY25hbWUsIEhq
YXZhX2xhbmdfQ2xhc3NMb2FkZXIqIGxvYWRlciwKCUhqYXZhX2xhbmdfQ2xhc3MqIGNjLCBjb25z
dCBjaGFyKiBzaWduYXR1cmUsIHZhX2xpc3QgYXJncHRyKQp7CglIamF2YV9sYW5nX09iamVjdCog
b2JqOwoJTWV0aG9kKiBtYjsKCWp2YWx1ZSByZXR2YWw7CgllcnJvckluZm8gaW5mbzsKCVV0ZjhD
b25zdCogc2lnOwoKCWlmIChjYyA9PSAwKSB7CgkJY2hhciAqYnVmOwoKCQkvKiBDb252ZXJ0ICIu
IiB0byAiLyIgYW5kIGxvb2t1cCBjbGFzcyAqLwoJCWJ1ZiA9IGNoZWNrUHRyKEtNQUxMT0Moc3Ry
bGVuKGNuYW1lKSArIDEpKTsKCQljbGFzc25hbWUycGF0aG5hbWUoY25hbWUsIGJ1Zik7CgkJY2Mg
PSBsb29rdXBDbGFzcyhidWYsIGxvYWRlciwgJmluZm8pOwoJCUtGUkVFKGJ1Zik7CgkJaWYgKCFj
YykgewoJCQl0aHJvd0Vycm9yKCZpbmZvKTsKCQl9Cgl9CgoJLyogV2UgY2Fubm90IGNvbnN0cnVj
dCBpbnRlcmZhY2VzIG9yIGFic3RyYWN0IGNsYXNzZXMgKi8KCWlmIChDTEFTU19JU19JTlRFUkZB
Q0UoY2MpIHx8IENMQVNTX0lTX0FCU1RSQUNUKGNjKSkgewoJCXRocm93RXhjZXB0aW9uKEluc3Rh
bnRpYXRpb25FeGNlcHRpb24oY2MtPm5hbWUtPmRhdGEpKTsKCX0KCglpZiAoY2MtPnN0YXRlIDwg
Q1NUQVRFX1VTQUJMRSkgewoJCWlmIChwcm9jZXNzQ2xhc3MoY2MsIENTVEFURV9DT01QTEVURSwg
JmluZm8pID09IGZhbHNlKSB7CgkJCXRocm93RXJyb3IoJmluZm8pOwoJCX0KCX0KCglzaWcgPSBj
aGVja1B0cih1dGY4Q29uc3ROZXcoc2lnbmF0dXJlLCAtMSkpOwoJbWIgPSBmaW5kTWV0aG9kTG9j
YWwoY2MsIGNvbnN0cnVjdG9yX25hbWUsIHNpZyk7Cgl1dGY4Q29uc3RSZWxlYXNlKHNpZyk7Cglp
ZiAobWIgPT0gMCkgewoJCXRocm93RXhjZXB0aW9uKE5vU3VjaE1ldGhvZEVycm9yKGNvbnN0cnVj
dG9yX25hbWUtPmRhdGEpKTsKCX0KCglvYmogPSBuZXdPYmplY3QoY2MpOwoJYXNzZXJ0KG9iaiAh
PSAwKTsKCgkvKiBNYWtlIHRoZSBjYWxsICovCgljYWxsTWV0aG9kVihtYiwgTUVUSE9EX0lORElS
RUNUTUVUSE9EKG1iKSwgb2JqLCBhcmdwdHIsICZyZXR2YWwpOwoKCXJldHVybiAob2JqKTsKfQoK
SGphdmFfbGFuZ19PYmplY3QqCmV4ZWN1dGVfamF2YV9jb25zdHJ1Y3Rvcihjb25zdCBjaGFyKiBj
bmFtZSwgSGphdmFfbGFuZ19DbGFzc0xvYWRlciogbG9hZGVyLAoJSGphdmFfbGFuZ19DbGFzcyog
Y2MsIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSwgLi4uKQp7Cgl2YV9saXN0IGFyZ3B0cjsKCUhqYXZh
X2xhbmdfT2JqZWN0KiBvYmo7CgoJdmFfc3RhcnQoYXJncHRyLCBzaWduYXR1cmUpOwoJb2JqID0g
ZXhlY3V0ZV9qYXZhX2NvbnN0cnVjdG9yX3YoY25hbWUsIGxvYWRlciwgY2MsIHNpZ25hdHVyZSwg
YXJncHRyKTsKCXZhX2VuZChhcmdwdHIpOwoKCXJldHVybiAob2JqKTsKfQoKLyogVGhpcyBpcyBk
ZWZpbmVkIGluIHRoZSBhbHBoYSBwb3J0LiAgSXQgY2F1c2VzIGFsbCBpbnRlZ2VyIGFyZ3VtZW50
cwogICB0byBiZSBwcm9tb3RlZCB0byBqbG9uZywgYW5kIGFsbCBqZmxvYXRzIHRvIGJlIHByb21v
dGVkIHRvIGpkb3VibGUsCiAgIHVubGVzcyBleHBsaWNpdGx5IG92ZXJyaWRkZW4uICBJdCBpbXBs
aWVzIE5PX0hPTEVTLCB1bmxlc3MKICAgZXhwbGljaXRseSBkZWZpbmVkIG90aGVyd2lzZS4gICov
CiNpZiBQUk9NT1RFX1RPXzY0Yml0cwojIGlmbmRlZiBQUk9NT1RFX2ppbnQyamxvbmcKIyAgZGVm
aW5lIFBST01PVEVfamludDJqbG9uZyAxCiMgZW5kaWYKIyBpZm5kZWYgUFJPTU9URV9qZmxvYXQy
amRvdWJsZQojICBkZWZpbmUgUFJPTU9URV9qZmxvYXQyamRvdWJsZSAxCiMgZW5kaWYKLyogTk9f
SE9MRVMgY2F1c2VzIGFsbCB0eXBlcyB0byBvY2N1cHkgb25seSBvbmUgc2xvdCBpbiBjYWxsYXJn
cywgYnV0CiAgIG5vdCBhZmZlY3RpbmcgdGhlaXIgY2FsbHNpemVzLCB0aGF0IGNhbiBzdGlsbCBi
ZSB1c2VkIHRvCiAgIGRpc3Rpbmd1aXNoIGFtb25nIHR5cGVzLiAgKi8KIyBpZm5kZWYgTk9fSE9M
RVMKIyAgZGVmaW5lIE5PX0hPTEVTIDEKIyBlbmRpZgojZW5kaWYKCi8qIElmIFBST01PVEVfamlu
dDJqbG9uZyBpcyBlbmFibGVkLCBhbGwgaW50ZWdlciB2YWx1ZXMgYXJlIHRvIGJlCiAgIHBhc3Nl
ZCBhcyBqbG9uZ3MuICBJdCBpcyBvbmx5IHNldCBieSBQUk9NT1RFX1RPXzY0Yml0cy4gICovCiNp
ZiBQUk9NT1RFX2ppbnQyamxvbmcKIyBkZWZpbmUgUFJPTV9pIGoKI2Vsc2UKIyBkZWZpbmUgUFJP
TV9pIGkKI2VuZGlmCgovKiBJZiBQUk9NT1RFX2pmbG9hdDJqZG91YmxlIGlzIGVuYWJsZWQsIGpm
bG9hdHMgYXJlIHRvIGJlIHBhc3NlZCBhcwogICBqZG91Ymxlcy4gIE5vdGUgdGhhdCwgd2hlbiBh
IGpmbG9hdCBpcyBwcm9tb3RlZCwgaXRzIGNhbGx0eXBlIHdpbGwKICAgYmUgbWFya2VkIGFzICdE
Jy4gIE5vIGtub3duIHBvcnQgdXNlcyB0aGlzLiAgSW4gZmFjdCwgYWxwaGEgbXVzdAogICBleHBs
aWNpdGx5IHNldCBpdCB0byAwLCB0byBwcmV2ZW50IFBST01PVEVfVE9fNjRiaXRzIGZyb20gZW5h
YmxpbmcKICAgaXQuICAqLwojaWYgUFJPTU9URV9qZmxvYXQyamRvdWJsZQojIGRlZmluZSBQUk9N
X2YgZAojZWxzZQojIGRlZmluZSBQUk9NX2YgZgojZW5kaWYKCi8qIFRoaXMgaXMgY3VycmVudGx5
IGRlZmluZWQgaW4gdGhlIE1JUFMgTzMyIHBvcnQuICBJdCBjYXVzZXMgamxvbmdzCiAgIGFuZCBq
ZG91YmxlcyB0byBiZSBmb3JjZWQgaW50byBldmVuIGFyZ3VtZW50cywgYnkgaW50cm9kdWNpbmcg
YQogICBwYWRkaW5nIGludGVnZXIgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBETyBpcyB1c2VkIHRv
IGFkanVzdCB0aGUKICAgaW5wdXQgYXJndW1lbnQgbGlzdC4gICovCiNpZiBBTElHTl9BVF82NGJp
dHMKIyBpZiBOT19IT0xFUwojICBlcnJvciAiQUxJR05fQVRfNjRiaXRzIGlzIGluY29tcGF0aWJs
ZSB3aXRoIE5PX0hPTEVTIgojIGVuZGlmCiMgZGVmaW5lIEVOU1VSRV9BTElHTjY0KERPKSBkbyB7
IGlmIChjYWxsLmNhbGxzaXplW2ldID09IDIgJiYgKGkgJiAxKSkgeyBjYWxsLmNhbGxzaXplW2ld
ID0gMDsgY2FsbC5jYWxsdHlwZVtpXSA9ICdJJzsgRE87ICsraTsgKytzOyBjYWxsLmNhbGxzaXpl
W2ldID0gMjsgfSB9IHdoaWxlICgwKQojZWxzZQojIGRlZmluZSBFTlNVUkVfQUxJR042NChETykg
ZG8ge30gd2hpbGUgKDApCiNlbmRpZgoKLyoKICogR2VuZXJpYyByb3V0aW5lIHRvIGNhbGwgYSBu
YXRpdmUgb3IgSmF2YSBtZXRob2QgKGFycmF5IHN0eWxlKS4KICovCnZvaWQKY2FsbE1ldGhvZEEo
TWV0aG9kKiBtZXRoLCB2b2lkKiBmdW5jLCB2b2lkKiBvYmosIGp2YWx1ZSogYXJncywganZhbHVl
KiByZXQsCgkgICAgaW50IHByb21vdGVkKQp7CglpbnQgaTsKCWludCBqOwoJaW50IHM7CgkvKiBY
WFggY2FsbC5jYWxsc2l6ZSBhbmQgY2FsbC5jYWxsdHlwZSBhcnJheXMgYXJlIHN0YXRpY2FsbHkg
c2l6ZWQgCgkgICBhbmQgYXJlIG5vdCBjaGVja2VkIGZvciBydW5uaW5nIG91dCBvZiBib3VuZHMg
Ki8KCWNhbGxNZXRob2RJbmZvIGNhbGw7CQoJanZhbHVlIGluW01BWE1BUkdTXTsKCWp2YWx1ZSB0
bXA7CgoJaWYgKHJldCA9PSAwKSB7CgkJcmV0ID0gJnRtcDsKCX0KCWkgPSAwOwoJcyA9IDA7Cgoj
aWYgZGVmaW5lZChJTlRFUlBSRVRFUikKCS8qCgkgKiBJZiB0aGUgbWV0aG9kIGlzIG5hdGl2ZSwg
d2UgbXVzdCBmaW5kIGl0IHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyCgkgKiBpdCBpcyBhIEpOSSBt
ZXRob2Qgb3Igbm90LiAgSWYgaXQgaXMgb25lLCBBQ0NfSk5JIHdpbGwgYmUgc2V0CgkgKiB1cG9u
IHJldHVybiBmcm9tIG5hdGl2ZSBhbmQgd2Ugd2lsbCBhZGQgYWRkaXRpb25hbCBwYXJhbWV0ZXJz
IAoJICogYWNjb3JkaW5nIHRvIHRoZSBKTkkgY2FsbGluZyBjb252ZW50aW9uLgoJICovCgltZXRo
ID0gKE1ldGhvZCopZnVuYzsKCWlmIChtZXRoLT5hY2NmbGFncyAmIEFDQ19OQVRJVkUpIHsKCQlp
ZiAoIU1FVEhPRF9UUkFOU0xBVEVEKG1ldGgpKSB7CgkJCWVycm9ySW5mbyBpbmZvOwoJCQlpZiAo
bmF0aXZlKG1ldGgsICZpbmZvKSA9PSBmYWxzZSkgewoJCQkJdGhyb3dFcnJvcigmaW5mbyk7CgkJ
CX0KCQl9CgkJY2FsbC5mdW5jdGlvbiA9IE1FVEhPRF9OQVRJVkVDT0RFKG1ldGgpOwoJfQoKCS8q
IEluc2VydCB0aGUgSk5JIGVudmlyb25tZW50ICovCglpZiAobWV0aC0+YWNjZmxhZ3MgJiBBQ0Nf
Sk5JKSB7CgkJY2FsbC5jYWxsc2l6ZVtpXSA9IFBUUl9UWVBFX1NJWkUgLyBTSVpFT0ZfSU5UOwoJ
CWNhbGwuY2FsbHR5cGVbaV0gPSAnTCc7CgkJaW5baV0ubCA9ICh2b2lkKikmS2FmZmVfSk5JRW52
OwoJCXMgKz0gY2FsbC5jYWxsc2l6ZVtpXTsKCQlpKys7CgkJYXJncy0tOyAvKiBiZWNhdXNlIGFy
Z3NbaV0gd291bGQgYmUgb2ZmIGJ5IG9uZSAqLwoKCQkvKiBJZiBtZXRob2QgaXMgc3RhdGljIHdl
IG11c3QgaW5zZXJ0IHRoZSBjbGFzcyBhcyBhbiBhcmd1bWVudCAqLwoJCWlmIChtZXRoLT5hY2Nm
bGFncyAmIEFDQ19TVEFUSUMpIHsKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IFBUUl9UWVBFX1NJWkUg
LyBTSVpFT0ZfSU5UOwoJCQlzICs9IGNhbGwuY2FsbHNpemVbaV07CgkJCWNhbGwuY2FsbHR5cGVb
aV0gPSAnTCc7CgkJCWluW2ldLmwgPSBtZXRoLT5jbGFzczsKCQkJaSsrOwoJCQlhcmdzLS07IC8q
IGJlY2F1c2UgYXJnc1tpXSB3b3VsZCBiZSBvZmYgYnkgb25lICovCgkJfQoJfSAKI2VuZGlmCgoJ
LyogSWYgdGhpcyBtZXRob2QgaXNuJ3Qgc3RhdGljLCB3ZSBtdXN0IGluc2VydCB0aGUgb2JqZWN0
IGFzCgkgKiBhbiBhcmd1bWVudC4KIAkgKi8KCWlmICgobWV0aC0+YWNjZmxhZ3MgJiBBQ0NfU1RB
VElDKSA9PSAwKSB7CgkJY2FsbC5jYWxsc2l6ZVtpXSA9IFBUUl9UWVBFX1NJWkUgLyBTSVpFT0Zf
SU5UOwoJCXMgKz0gY2FsbC5jYWxsc2l6ZVtpXTsKCQljYWxsLmNhbGx0eXBlW2ldID0gJ0wnOwoJ
CWluW2ldLmwgPSBvYmo7CgkJaSsrOwoJCWFyZ3MtLTsgLyogYmVjYXVzZSBhcmdzW2ldIHdvdWxk
IGJlIG9mZiBieSBvbmUgKi8KCX0KCglmb3IgKGogPSAwOyBqIDwgTUVUSE9EX05BUkdTKG1ldGgp
OyBpKyssIGorKykgewoJCWNhbGwuY2FsbHR5cGVbaV0gPSAqTUVUSE9EX0FSR19UWVBFKG1ldGgs
IGopOwoJCXN3aXRjaCAoY2FsbC5jYWxsdHlwZVtpXSkgewoJCWNhc2UgJ1onOgoJCQlpZiAocHJv
bW90ZWQpIGdvdG8gdXNlX2ludDsKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDE7CgkJCWluW2ldLlBS
T01faSA9IGFyZ3NbaV0uejsKCQkJYnJlYWs7CgoJCWNhc2UgJ1MnOgoJCQlpZiAocHJvbW90ZWQp
IGdvdG8gdXNlX2ludDsKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDE7CgkJCWluW2ldLlBST01faSA9
IGFyZ3NbaV0uczsKCQkJYnJlYWs7CgoJCWNhc2UgJ0InOgoJCQlpZiAocHJvbW90ZWQpIGdvdG8g
dXNlX2ludDsKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDE7CgkJCWluW2ldLlBST01faSA9IGFyZ3Nb
aV0uYjsKCQkJYnJlYWs7CgoJCWNhc2UgJ0MnOgoJCQlpZiAocHJvbW90ZWQpIGdvdG8gdXNlX2lu
dDsKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDE7CgkJCWluW2ldLlBST01faSA9IGFyZ3NbaV0uYzsK
CQkJYnJlYWs7CgoJCWNhc2UgJ0YnOgoJCQljYWxsLmNhbGxzaXplW2ldID0gMTsKCQkJaW5baV0u
UFJPTV9mID0gYXJnc1tpXS5mOwojaWYgUFJPTU9URV9qZmxvYXQyamRvdWJsZQoJCQljYWxsLmNh
bGx0eXBlW2ldID0gJ0QnOwojZW5kaWYKCQkJYnJlYWs7CgkJY2FzZSAnSSc6CgkJdXNlX2ludDoK
CQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDE7CgkJCWluW2ldLlBST01faSA9IGFyZ3NbaV0uaTsKCQkJ
YnJlYWs7CgkJY2FzZSAnRCc6CgkJY2FzZSAnSic6CgkJCWNhbGwuY2FsbHNpemVbaV0gPSAyOwoJ
CQlFTlNVUkVfQUxJR042NCgtLWFyZ3MpOwoJCQlpbltpXSA9IGFyZ3NbaV07CiNpZiBOT19IT0xF
UwoJCQkrK2FyZ3M7IC8qIFNpbmNlIHdlJ2xsIG5vdCBiZSBpbmNyZW1lbnRpbmcgaSAqLwojZWxz
ZQoJCQlzICs9IGNhbGwuY2FsbHNpemVbaV07CgkJCWluW2krMV0uaSA9ICgmYXJnc1tpXS5pKVsx
XTsKCQkJaSsrOwoJCQljYWxsLmNhbGx0eXBlW2ldID0gMDsKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9
IDA7CiNlbmRpZgoJCQlicmVhazsKCQljYXNlICdbJzoKCQkJY2FsbC5jYWxsdHlwZVtpXSA9ICdM
JzsKCQkJLyogZmFsbCB0aHJvdWdoICovCgkJY2FzZSAnTCc6CgkJCWNhbGwuY2FsbHNpemVbaV0g
PSBQVFJfVFlQRV9TSVpFIC8gU0laRU9GX0lOVDsKCQkJaW5baV0gPSBhcmdzW2ldOwoJCQlicmVh
azsKCQlkZWZhdWx0OgoJCQlBQk9SVCgpOwoJCX0KCQlzICs9IGNhbGwuY2FsbHNpemVbaV07Cgl9
CgojaWYgZGVmaW5lZChTVEFDS19MSU1JVCkKCWNhbGwuY2FsbHR5cGVbaV0gPSAnTCc7CgljYWxs
LmNhbGxzaXplW2ldID0gUFRSX1RZUEVfU0laRSAvIFNJWkVPRl9JTlQ7CglpbltpXS5sID0ganRo
cmVhZF9zdGFja2xpbWl0KCk7CglzICs9IFBUUl9UWVBFX1NJWkUgLyBTSVpFT0ZfSU5UOwoJaSsr
OwojZW5kaWYKCgkvKiBSZXR1cm4gaW5mbyAqLwoJY2FsbC5yZXR0eXBlID0gKk1FVEhPRF9SRVRf
VFlQRShtZXRoKTsKCXN3aXRjaCAoY2FsbC5yZXR0eXBlKSB7CgljYXNlICdbJzoKCQljYWxsLnJl
dHR5cGUgPSAnTCc7CgkJLyogZmFsbCB0aHJvdWdoICovCgljYXNlICdMJzoKCQljYWxsLnJldHNp
emUgPSBQVFJfVFlQRV9TSVpFIC8gU0laRU9GX0lOVDsKCQlicmVhazsKCWNhc2UgJ1YnOgoJCWNh
bGwucmV0c2l6ZSA9IDA7CgkJYnJlYWs7CgljYXNlICdEJzoKCWNhc2UgJ0onOgoJCWNhbGwucmV0
c2l6ZSA9IDI7CgkJYnJlYWs7CglkZWZhdWx0OgoJCWNhbGwucmV0c2l6ZSA9IDE7CgkJYnJlYWs7
Cgl9CgoJLyogQ2FsbCBpbmZvIGFuZCBhcmd1bWVudHMgKi8KCWNhbGwubnJhcmdzID0gaTsKCWNh
bGwuYXJnc2l6ZSA9IHM7CgljYWxsLmFyZ3MgPSBpbjsKCWNhbGwucmV0ID0gcmV0OwoKCiNpZiBk
ZWZpbmVkKFRSQU5TTEFUT1IpCgljYWxsLmZ1bmN0aW9uID0gZnVuYzsKCgkvKiBHQ0RJQUcgd2lw
ZXMgZnJlZSBtZW1vcnkgd2l0aCAweGY0Li4uICovCglhc3NlcnQoY2FsbC5mdW5jdGlvbik7Cglh
c3NlcnQoKih1aW50MzIqKShjYWxsLmZ1bmN0aW9uKSAhPSAweGY0ZjRmNGY0KTsKCgkvKiBNYWtl
IHRoZSBjYWxsIC0gc3lzdGVtIGRlcGVuZGVudCAqLwoJc3lzZGVwQ2FsbE1ldGhvZCgmY2FsbCk7
CiNlbmRpZgojaWYgZGVmaW5lZChJTlRFUlBSRVRFUikKCWlmICgobWV0aC0+YWNjZmxhZ3MgJiBB
Q0NfTkFUSVZFKSA9PSAwKSB7CgkJdmlydHVhbE1hY2hpbmUobWV0aCwgKHNsb3RzKiljYWxsLmFy
Z3MsIChzbG90cyopY2FsbC5yZXQsIGdldEN1cnJlbnRUaHJlYWQoKSk7Cgl9CgllbHNlIHsKCQlI
amF2YV9sYW5nX09iamVjdCogc3luY29iaiA9IDA7CgkJdm1FeGNlcHRpb24gbWpidWY7CgkJSGph
dmFfbGFuZ19UaHJlYWQqIHRpZCA9IGdldEN1cnJlbnRUaHJlYWQoKTsKCgkJaWYgKG1ldGgtPmFj
Y2ZsYWdzICYgQUNDX1NZTkNIUk9OSVNFRCkgewoJCQlpZiAobWV0aC0+YWNjZmxhZ3MgJiBBQ0Nf
U1RBVElDKSB7CgkJCQlzeW5jb2JqID0gJm1ldGgtPmNsYXNzLT5oZWFkOwoJCQl9CgkJCWVsc2Ug
ewoJCQkJc3luY29iaiA9IChIamF2YV9sYW5nX09iamVjdCopY2FsbC5hcmdzWzBdLmw7CgkJCX0K
CQkJbG9ja09iamVjdChzeW5jb2JqKTsKCQl9CgoJCW1qYnVmLnBjID0gMDsKCQltamJ1Zi5tb2Jq
ID0gc3luY29iajsKCQltamJ1Zi5tZXRoID0gbWV0aDsKCQlpZiAodGlkICE9IE5VTEwgJiYgdW5o
YW5kKHRpZCktPlByaXZhdGVJbmZvICE9IDApIHsKCQkJbWpidWYucHJldiA9ICh2bUV4Y2VwdGlv
biopdW5oYW5kKHRpZCktPmV4Y2VwdFB0cjsKCQkJdW5oYW5kKHRpZCktPmV4Y2VwdFB0ciA9IChz
dHJ1Y3QgSGthZmZlX3V0aWxfUHRyKikmbWpidWY7CgkJfQoKCQkvKiBNYWtlIHRoZSBjYWxsIC0g
c3lzdGVtIGRlcGVuZGVudCAqLwoJCXN5c2RlcENhbGxNZXRob2QoJmNhbGwpOwoKCQlpZiAoc3lu
Y29iaiAhPSAwKSB7CgkJCXVubG9ja09iamVjdChzeW5jb2JqKTsKCQl9CgoJCWlmICh0aWQgIT0g
TlVMTCAmJiB1bmhhbmQodGlkKS0+UHJpdmF0ZUluZm8gIT0gMCkgewoJCQl1bmhhbmQodGlkKS0+
ZXhjZXB0UHRyID0gKHN0cnVjdCBIa2FmZmVfdXRpbF9QdHIqKW1qYnVmLnByZXY7CgkJfQoJfQoj
ZW5kaWYKCWlmICghcHJvbW90ZWQgJiYgY2FsbC5yZXRzaXplID09IDEpIHsKCQlzd2l0Y2ggKGNh
bGwucmV0dHlwZSkgewoJCWNhc2UgJ1onOgoJCQlyZXQtPnogPSByZXQtPmk7CgkJCWJyZWFrOwoJ
CWNhc2UgJ1MnOgoJCQlyZXQtPnMgPSByZXQtPmk7CgkJCWJyZWFrOwoJCWNhc2UgJ0InOgoJCQly
ZXQtPmIgPSByZXQtPmk7CgkJCWJyZWFrOwoJCWNhc2UgJ0MnOgoJCQlyZXQtPmMgPSByZXQtPmk7
CgkJCWJyZWFrOwoJCX0KCX0KfQoKLyoKICogR2VuZXJpYyByb3V0aW5lIHRvIGNhbGwgYSBuYXRp
dmUgb3IgSmF2YSBtZXRob2QgKHZhcmFyZ3Mgc3R5bGUpLgogKi8Kdm9pZApjYWxsTWV0aG9kVihN
ZXRob2QqIG1ldGgsIHZvaWQqIGZ1bmMsIHZvaWQqIG9iaiwgdmFfbGlzdCBhcmdzLCBqdmFsdWUq
IHJldCkKewogIC8qIGNvbnN0IGNoYXIqIHNpZzsgRklYTUUgKi8KCWludCBpOwoJaW50IHM7Cglp
bnQgajsKCS8qIFhYWCBjYWxsLmNhbGxzaXplIGFuZCBjYWxsLmNhbGx0eXBlIGFycmF5cyBhcmUg
c3RhdGljYWxseSBzaXplZCAKCSAgIGFuZCBhcmUgbm90IGNoZWNrZWQgZm9yIHJ1bm5pbmcgb3V0
IG9mIGJvdW5kcyAqLwoJY2FsbE1ldGhvZEluZm8gY2FsbDsKCWp2YWx1ZSBpbltNQVhNQVJHU107
CglqdmFsdWUgdG1wOwoKCWlmIChyZXQgPT0gMCkgewoJCXJldCA9ICZ0bXA7Cgl9CglpID0gMDsK
CXMgPSAwOwoKI2lmIGRlZmluZWQoSU5URVJQUkVURVIpCgltZXRoID0gKE1ldGhvZCopZnVuYzsK
CWlmIChtZXRoLT5hY2NmbGFncyAmIEFDQ19OQVRJVkUpIHsKICAgICAgICAgICAgICAgIGlmIChN
RVRIT0RfTkFUSVZFQ09ERShtZXRoKSA9PSAwKSB7CgkJCWVycm9ySW5mbyBpbmZvOwoJCQlpZiAo
bmF0aXZlKG1ldGgsICZpbmZvKSA9PSBmYWxzZSkgewoJCQkJdGhyb3dFcnJvcigmaW5mbyk7CgkJ
CX0KICAgICAgICAgICAgICAgIH0KCQljYWxsLmZ1bmN0aW9uID0gTUVUSE9EX05BVElWRUNPREUo
bWV0aCk7Cgl9CgoJLyogSW5zZXJ0IHRoZSBKTkkgZW52aXJvbm1lbnQgKi8KCWlmIChtZXRoLT5h
Y2NmbGFncyAmIEFDQ19KTkkpIHsKCQljYWxsLmNhbGxzaXplW2ldID0gUFRSX1RZUEVfU0laRSAv
IFNJWkVPRl9JTlQ7CgkJY2FsbC5jYWxsdHlwZVtpXSA9ICdMJzsKCQlpbltpXS5sID0gKHZvaWQq
KSZLYWZmZV9KTklFbnY7CgkJcyArPSBjYWxsLmNhbGxzaXplW2ldOwoJCWkrKzsKCgkJLyogSWYg
bWV0aG9kIGlzIHN0YXRpYyB3ZSBtdXN0IGluc2VydCB0aGUgY2xhc3MgYXMgYW4gCgkJICogYXJn
dW1lbnQgCgkJICovCgkJaWYgKG1ldGgtPmFjY2ZsYWdzICYgQUNDX1NUQVRJQykgewoJCQljYWxs
LmNhbGxzaXplW2ldID0gUFRSX1RZUEVfU0laRSAvIFNJWkVPRl9JTlQ7CgkJCXMgKz0gY2FsbC5j
YWxsc2l6ZVtpXTsKCQkJY2FsbC5jYWxsdHlwZVtpXSA9ICdMJzsKCQkJaW5baV0ubCA9IG1ldGgt
PmNsYXNzOwoJCQlpKys7CgkJfQoJfQojZW5kaWYKCgkvKiBJZiB0aGlzIG1ldGhvZCBpc24ndCBz
dGF0aWMsIHdlIG11c3QgaW5zZXJ0IHRoZSBvYmplY3QgYXMKCSAqIHRoZSBmaXJzdCBhcmd1bWVu
dCBhbmQgZ2V0IHRoZSBmdW5jdGlvbiBjb2RlLgogCSAqLwoJaWYgKChtZXRoLT5hY2NmbGFncyAm
IEFDQ19TVEFUSUMpID09IDApIHsKCQljYWxsLmNhbGxzaXplW2ldID0gUFRSX1RZUEVfU0laRSAv
IFNJWkVPRl9JTlQ7CgkJcyArPSBjYWxsLmNhbGxzaXplW2ldOwoJCWNhbGwuY2FsbHR5cGVbaV0g
PSAnTCc7CgkJaW5baV0ubCA9IG9iajsKCQlpKys7Cgl9CgoJZm9yIChqID0gMDsgaiA8IE1FVEhP
RF9OQVJHUyhtZXRoKTsgaSsrLCBqKyspIHsKCQljYWxsLmNhbGx0eXBlW2ldID0gKk1FVEhPRF9B
UkdfVFlQRShtZXRoLCBqKTsKCQlzd2l0Y2ggKGNhbGwuY2FsbHR5cGVbaV0pIHsKCQljYXNlICdJ
JzoKCQljYXNlICdaJzoKCQljYXNlICdTJzoKCQljYXNlICdCJzoKCQljYXNlICdDJzoKCQkJY2Fs
bC5jYWxsc2l6ZVtpXSA9IDE7CgkJCWluW2ldLlBST01faSA9IHZhX2FyZyhhcmdzLCBqaW50KTsK
CQkJYnJlYWs7CgkJY2FzZSAnRic6CgkJCWNhbGwuY2FsbHNpemVbaV0gPSAxOwoJCQlpbltpXS5Q
Uk9NX2YgPSAoamZsb2F0KXZhX2FyZyhhcmdzLCBqZG91YmxlKTsKI2lmIFBST01PVEVfVE9fNjRi
aXRzCgkJCWNhbGwuY2FsbHR5cGVbaV0gPSAnRCc7CiNlbmRpZgoJCQlicmVhazsKCQljYXNlICdE
JzoKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDI7CgkJCUVOU1VSRV9BTElHTjY0KHt9KTsKCQkJaW5b
aV0uZCA9IHZhX2FyZyhhcmdzLCBqZG91YmxlKTsKCQkJZ290byBzZWNvbmRfd29yZDsKCQljYXNl
ICdKJzoKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IDI7CgkJCUVOU1VSRV9BTElHTjY0KHt9KTsKCQkJ
aW5baV0uaiA9IHZhX2FyZyhhcmdzLCBqbG9uZyk7CgkJc2Vjb25kX3dvcmQ6CiNpZiAhIE5PX0hP
TEVTCgkJCXMgKz0gY2FsbC5jYWxsc2l6ZVtpXTsKCQkJaW5baSsxXS5pID0gKCZpbltpXS5pKVsx
XTsKCQkJaSsrOwoJCQljYWxsLmNhbGxzaXplW2ldID0gMDsKI2VuZGlmCgkJCWJyZWFrOwoJCWNh
c2UgJ1snOgoJCQljYWxsLmNhbGx0eXBlW2ldID0gJ0wnOwoJCQkvKiBmYWxsIHRocm91Z2ggKi8K
CQljYXNlICdMJzoKCQkJY2FsbC5jYWxsc2l6ZVtpXSA9IFBUUl9UWVBFX1NJWkUgLyBTSVpFT0Zf
SU5UOwoJCQlpbltpXS5sID0gdmFfYXJnKGFyZ3MsIGpyZWYpOwoJCQlicmVhazsKCQlkZWZhdWx0
OgoJCQlBQk9SVCgpOwoJCX0KCQlzICs9IGNhbGwuY2FsbHNpemVbaV07Cgl9CgojaWYgZGVmaW5l
ZChTVEFDS19MSU1JVCkKCWNhbGwuY2FsbHR5cGVbaV0gPSAnTCc7CgljYWxsLmNhbGxzaXplW2ld
ID0gUFRSX1RZUEVfU0laRSAvIFNJWkVPRl9JTlQ7CglpbltpXS5sID0ganRocmVhZF9zdGFja2xp
bWl0KCk7CglzICs9IFBUUl9UWVBFX1NJWkUgLyBTSVpFT0ZfSU5UOwoJaSsrOwojZW5kaWYKCgkv
KiBSZXR1cm4gaW5mbyAqLwoJY2FsbC5yZXR0eXBlID0gKk1FVEhPRF9SRVRfVFlQRShtZXRoKTsK
CXN3aXRjaCAoY2FsbC5yZXR0eXBlKSB7CgljYXNlICdbJzoKCQljYWxsLnJldHR5cGUgPSAnTCc7
CgkJLyogZmFsbCB0aHJvdWdoICovCgljYXNlICdMJzoKCQljYWxsLnJldHNpemUgPSBQVFJfVFlQ
RV9TSVpFIC8gU0laRU9GX0lOVDsKCQlicmVhazsKCWNhc2UgJ1YnOgoJCWNhbGwucmV0c2l6ZSA9
IDA7CgkJYnJlYWs7CgljYXNlICdEJzoKCWNhc2UgJ0onOgoJCWNhbGwucmV0c2l6ZSA9IDI7CgkJ
YnJlYWs7CglkZWZhdWx0OgoJCWNhbGwucmV0c2l6ZSA9IDE7CgkJYnJlYWs7Cgl9CgoJLyogQ2Fs
bCBpbmZvIGFuZCBhcmd1bWVudHMgKi8KCWNhbGwubnJhcmdzID0gaTsKCWNhbGwuYXJnc2l6ZSA9
IHM7CgljYWxsLmFyZ3MgPSBpbjsKCWNhbGwucmV0ID0gcmV0OwoKI2lmIGRlZmluZWQoVFJBTlNM
QVRPUikKCWFzc2VydCgoZnVuYyA9PSAoTUVUSE9EX05BVElWRUNPREUobWV0aCkpKQoJICAgICAg
IHx8IChmdW5jID09ICgoKEhqYXZhX2xhbmdfT2JqZWN0KilvYmopLT5kdGFibGUtPm1ldGhvZFtt
ZXRoLT5pZHhdKSkpOwoJY2FsbC5mdW5jdGlvbiA9IGZ1bmM7CgoJLyogR0NESUFHIHdpcGVzIGZy
ZWUgbWVtb3J5IHdpdGggMHhmNC4uLiAqLwoJYXNzZXJ0KGNhbGwuZnVuY3Rpb24pOwoJYXNzZXJ0
KCoodWludDMyKikoY2FsbC5mdW5jdGlvbikgIT0gMHhmNGY0ZjRmNCk7CgoJLyogTWFrZSB0aGUg
Y2FsbCAtIHN5c3RlbSBkZXBlbmRlbnQgKi8KCXN5c2RlcENhbGxNZXRob2QoJmNhbGwpOwojZW5k
aWYKI2lmIGRlZmluZWQoSU5URVJQUkVURVIpCglpZiAoKG1ldGgtPmFjY2ZsYWdzICYgQUNDX05B
VElWRSkgPT0gMCkgewoJCXZpcnR1YWxNYWNoaW5lKG1ldGgsIChzbG90cyopY2FsbC5hcmdzLCAo
c2xvdHMqKWNhbGwucmV0LCBnZXRDdXJyZW50VGhyZWFkKCkpOwoJfQoJZWxzZSB7CgkJSGphdmFf
bGFuZ19PYmplY3QqIHN5bmNvYmogPSAwOwoJCXZtRXhjZXB0aW9uIG1qYnVmOwoJCUhqYXZhX2xh
bmdfVGhyZWFkKiB0aWQgPSBnZXRDdXJyZW50VGhyZWFkKCk7CgoJCWlmIChtZXRoLT5hY2NmbGFn
cyAmIEFDQ19TWU5DSFJPTklTRUQpIHsKCQkJaWYgKG1ldGgtPmFjY2ZsYWdzICYgQUNDX1NUQVRJ
QykgewoJCQkJc3luY29iaiA9ICZtZXRoLT5jbGFzcy0+aGVhZDsKCQkJfQoJCQllbHNlIHsKCQkJ
CXN5bmNvYmogPSAoSGphdmFfbGFuZ19PYmplY3QqKWNhbGwuYXJnc1swXS5sOwoJCQl9CgkJCWxv
Y2tPYmplY3Qoc3luY29iaik7CgkJfQoKCQltamJ1Zi5wYyA9IDA7CgkJbWpidWYubW9iaiA9IHN5
bmNvYmo7CgkJbWpidWYubWV0aCA9IG1ldGg7CgkJaWYgKHRpZCAhPSBOVUxMICYmIHVuaGFuZCh0
aWQpLT5Qcml2YXRlSW5mbyAhPSAwKSB7CgkJCW1qYnVmLnByZXYgPSAodm1FeGNlcHRpb24qKXVu
aGFuZCh0aWQpLT5leGNlcHRQdHI7CgkJCXVuaGFuZCh0aWQpLT5leGNlcHRQdHIgPSAoc3RydWN0
IEhrYWZmZV91dGlsX1B0ciopJm1qYnVmOwoJCX0KCgkJLyogTWFrZSB0aGUgY2FsbCAtIHN5c3Rl
bSBkZXBlbmRlbnQgKi8KCQlzeXNkZXBDYWxsTWV0aG9kKCZjYWxsKTsKCgkJaWYgKHN5bmNvYmog
IT0gMCkgewoJCQl1bmxvY2tPYmplY3Qoc3luY29iaik7CgkJfQoKCQlpZiAodGlkICE9IE5VTEwg
JiYgdW5oYW5kKHRpZCktPlByaXZhdGVJbmZvICE9IDApIHsKCQkJdW5oYW5kKHRpZCktPmV4Y2Vw
dFB0ciA9IChzdHJ1Y3QgSGthZmZlX3V0aWxfUHRyKiltamJ1Zi5wcmV2OwoJCX0KCX0KI2VuZGlm
Cn0KCi8qCiAqIExvb2t1cCBhIG1ldGhvZCBnaXZlbiBjbGFzcywgbmFtZSBhbmQgc2lnbmF0dXJl
LgogKi8KTWV0aG9kKgpsb29rdXBDbGFzc01ldGhvZChIamF2YV9sYW5nX0NsYXNzKiBjbHMsIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHNpZywgZXJyb3JJbmZvICplaW5mbykKewoJTWV0
aG9kICptZXRoOwoJVXRmOENvbnN0ICpuYW1lX3V0ZjgsICpzaWdfdXRmODsKCglhc3NlcnQoY2xz
ICE9IDAgJiYgbmFtZSAhPSAwICYmIHNpZyAhPSAwKTsKCgluYW1lX3V0ZjggPSB1dGY4Q29uc3RO
ZXcobmFtZSwgLTEpOwoJaWYgKCFuYW1lX3V0ZjgpIHsKCQlwb3N0T3V0T2ZNZW1vcnkoZWluZm8p
OwoJCXJldHVybiAwOwoJfQoJc2lnX3V0ZjggPSB1dGY4Q29uc3ROZXcoc2lnLCAtMSk7CglpZiAo
IXNpZ191dGY4KSB7CgkJdXRmOENvbnN0UmVsZWFzZShuYW1lX3V0ZjgpOwoJCXBvc3RPdXRPZk1l
bW9yeShlaW5mbyk7CgkJcmV0dXJuIDA7Cgl9CgltZXRoID0gZmluZE1ldGhvZChjbHMsIG5hbWVf
dXRmOCwgc2lnX3V0ZjgsIGVpbmZvKTsKCXV0ZjhDb25zdFJlbGVhc2UobmFtZV91dGY4KTsKCXV0
ZjhDb25zdFJlbGVhc2Uoc2lnX3V0ZjgpOwoJcmV0dXJuKG1ldGgpOwp9CgovKgogKiBMb29rdXAg
YSBtZXRob2QgZ2l2ZW4gb2JqZWN0LCBuYW1lIGFuZCBzaWduYXR1cmUuCiAqLwpNZXRob2QqCmxv
b2t1cE9iamVjdE1ldGhvZChIamF2YV9sYW5nX09iamVjdCogb2JqLCBjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBjaGFyKiBzaWcsIGVycm9ySW5mbyAqZWluZm8pCnsKCWFzc2VydChvYmogIT0gMCAm
JiBuYW1lICE9IDAgJiYgc2lnICE9IDApOwoJcmV0dXJuIChsb29rdXBDbGFzc01ldGhvZChPQkpF
Q1RfQ0xBU1Mob2JqKSwgbmFtZSwgc2lnLCBlaW5mbykpOwp9CgovKgogKiBTaWduYWwgYW4gZXJy
b3IgYnkgY3JlYXRpbmcgdGhlIG9iamVjdCBhbmQgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbi4KICog
U2VlIGFsc28gU2lnbmFsRXJyb3JmCiAqLwp2b2lkClNpZ25hbEVycm9yKGNvbnN0IGNoYXIqIGNu
YW1lLCBjb25zdCBjaGFyKiBzdHIpCnsKCUhqYXZhX2xhbmdfVGhyb3dhYmxlKiBvYmo7CgoJaWYg
KHN0ciA9PSBOVUxMIHx8ICpzdHIgPT0gJ1wwJykgewoJCW9iaiA9IChIamF2YV9sYW5nX1Rocm93
YWJsZSopZXhlY3V0ZV9qYXZhX2NvbnN0cnVjdG9yKGNuYW1lLAoJCQkwLCAwLCBFUlJPUl9TSUdO
QVRVUkUwKTsKCX0gZWxzZSB7CgkJb2JqID0gKEhqYXZhX2xhbmdfVGhyb3dhYmxlKilleGVjdXRl
X2phdmFfY29uc3RydWN0b3IoY25hbWUsCgkJCTAsIDAsIEVSUk9SX1NJR05BVFVSRSwgY2hlY2tQ
dHIoc3RyaW5nQzJKYXZhKHN0cikpKTsKCX0KCXRocm93RXhjZXB0aW9uKG9iaik7Cn0KCi8qCiAq
IFNpZ25hbCBhbiBlcnJvciBieSBjcmVhdGluZyB0aGUgb2JqZWN0IGFuZCB0aHJvd2luZyB0aGUg
ZXhjZXB0aW9uLgogKiBhbGxvd3MgZm9yIHByaW50Zi1saWtlIG1zZyBmb3JtYXQgd2l0aCBhZGRp
dGlvbmFsIHBhcmFtZXRlcnMuCiAqLwp2b2lkClNpZ25hbEVycm9yZihjb25zdCBjaGFyKiBjbmFt
ZSwgY29uc3QgY2hhciogZm10LCAuLi4pCnsKCWVycm9ySW5mbyBpbmZvOwoJdmFfbGlzdCBhcmdz
OwoKCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Cgl2cG9zdEV4Y2VwdGlvbk1lc3NhZ2UoJmluZm8sIGNu
YW1lLCBmbXQsIGFyZ3MpOwoJdmFfZW5kKGFyZ3MpOwoJdGhyb3dFcnJvcigmaW5mbyk7Cn0KCnN0
YXRpYyB2b2lkCnJlcGxhY2VjaGFyKGNvbnN0IGNoYXIqIGZyb20sIGNoYXIqIHRvLCBjaGFyIG9s
ZCwgY2hhciBuZXcpCnsKCWludCBpOwoKCS8qIENvbnZlcnQgYW55ICdvbGQnIGluIG5hbWUgdG8g
J25ldycgKi8KCWZvciAoaSA9IDA7IGZyb21baV0gIT0gMDsgaSsrKSB7CgkJaWYgKGZyb21baV0g
PT0gb2xkKSB7CgkJCXRvW2ldID0gbmV3OwoJCX0KCQllbHNlIHsKCQkJdG9baV0gPSBmcm9tW2ld
OwoJCX0KCX0KCXRvW2ldID0gMDsKfQoKLyoKICogQ29udmVydCBhIGNsYXNzIG5hbWUgdG8gYSBw
YXRoIG5hbWUuCiAqLwp2b2lkCmNsYXNzbmFtZTJwYXRobmFtZShjb25zdCBjaGFyKiBmcm9tLCBj
aGFyKiB0bykKewoJcmVwbGFjZWNoYXIoZnJvbSwgdG8sICcuJywgJy8nKTsKfQoKLyoKICogQ29u
dmVydCBhIHBhdGggbmFtZSB0byBhIGNsYXNzIG5hbWUuCiAqLwp2b2lkCnBhdGhuYW1lMmNsYXNz
bmFtZShjb25zdCBjaGFyKiBmcm9tLCBjaGFyKiB0bykKewoJcmVwbGFjZWNoYXIoZnJvbSwgdG8s
ICcvJywgJy4nKTsKfQoKLyoKICogUmV0dXJuIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMu
CiAqLwpqbG9uZwpjdXJyZW50VGltZSh2b2lkKQp7CglqbG9uZyB0bWU7CgojaWYgZGVmaW5lZChI
QVZFX0dFVFRJTUVPRkRBWSkKCXN0cnVjdCB0aW1ldmFsIHRtOwoJZ2V0dGltZW9mZGF5KCZ0bSwg
MCk7Cgl0bWUgPSAoKChqbG9uZyl0bS50dl9zZWMgKiAoamxvbmcpMTAwMCkgKyAoKGpsb25nKXRt
LnR2X3VzZWMgLyAoamxvbmcpMTAwMCkpOwojZWxpZiBkZWZpbmVkKEhBVkVfRlRJTUUpCglzdHJ1
Y3QgdGltZWIgdG07CglmdGltZSgmdG0pOwoJdG1lID0gKCgoamxvbmcpdG0udGltZSAqIChqbG9u
ZykxMDAwKSArIChqbG9uZyl0bS5taWxsaXRtKTsKI2VsaWYgZGVmaW5lZChIQVZFX19GVElNRSkK
CXN0cnVjdCB0aW1lYiB0bTsKCV9mdGltZSgmdG0pOwoJdG1lID0gKCgoamxvbmcpdG0udGltZSAq
IChqbG9uZykxMDAwKSArIChqbG9uZyl0bS5taWxsaXRtKTsKI2VsaWYgZGVmaW5lZChIQVZFX1RJ
TUUpCgl0bWUgPSAoamxvbmcpMTAwMCAqIChqbG9uZyl0aW1lKDApOwojZWxzZQoJdG1lID0gMDsK
I2VuZGlmCglyZXR1cm4gKHRtZSk7Cn0KCi8qCiAqIFNldCBhIHByb3BlcnR5IHRvIGEgdmFsdWUu
CiAqLwp2b2lkCnNldFByb3BlcnR5KHZvaWQqIHByb3BlcnRpZXMsIGNoYXIqIGtleSwgY2hhciog
dmFsdWUpCnsKCUhqYXZhX2xhbmdfU3RyaW5nKiBqa2V5OwoJSGphdmFfbGFuZ19TdHJpbmcqIGp2
YWx1ZTsKCglqa2V5ID0gY2hlY2tQdHIoc3RyaW5nQzJKYXZhKGtleSkpOwoJanZhbHVlID0gY2hl
Y2tQdHIoc3RyaW5nQzJKYXZhKHZhbHVlKSk7CgoJZG9fZXhlY3V0ZV9qYXZhX21ldGhvZChwcm9w
ZXJ0aWVzLCAicHV0IiwKCQkiKExqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvT2JqZWN0OylM
amF2YS9sYW5nL09iamVjdDsiLAoJCTAsIGZhbHNlLCBqa2V5LCBqdmFsdWUpOwp9CgovKgogKiBB
bGxvY2F0ZSBhIG5ldyBvYmplY3Qgb2YgdGhlIGdpdmVuIGNsYXNzIG5hbWUuCiAqLwpIamF2YV9s
YW5nX09iamVjdCoKQWxsb2NPYmplY3QoY29uc3QgY2hhciogY2xhc3NuYW1lLCBIamF2YV9sYW5n
X0NsYXNzTG9hZGVyKiBsb2FkZXIpCnsKCUhqYXZhX2xhbmdfQ2xhc3MqIGNsYXp6OwoJZXJyb3JJ
bmZvIGluZm87CgoJY2xhenogPSBsb29rdXBDbGFzcyhjbGFzc25hbWUsIGxvYWRlciwgJmluZm8p
OwoJaWYgKGNsYXp6ID09IDApIHsKCQl0aHJvd0Vycm9yKCZpbmZvKTsKCX0KCXJldHVybiAobmV3
T2JqZWN0KGNsYXp6KSk7Cn0KCi8qCiAqIEFsbG9jYXRlIGEgbmV3IGFycmF5IG9mIGEgZ2l2ZW4g
c2l6ZSBhbmQgdHlwZS4KICovCkhqYXZhX2xhbmdfT2JqZWN0KgpBbGxvY0FycmF5KGludCBsZW4s
IGludCB0eXBlKQp7CglyZXR1cm4gKG5ld0FycmF5KFRZUEVfQ0xBU1ModHlwZSksIGxlbikpOwp9
CgovKgogKiBBbGxvY2F0ZSBhIG5ldyBhcnJheSBvZiB0aGUgZ2l2ZW4gc2l6ZSBhbmQgY2xhc3Mg
bmFtZS4KICovCkhqYXZhX2xhbmdfT2JqZWN0KgpBbGxvY09iamVjdEFycmF5KGludCBzeiwgY29u
c3QgY2hhciogY2xhc3NuYW1lLCBIamF2YV9sYW5nX0NsYXNzTG9hZGVyKiBsb2FkZXIpCnsKCUhq
YXZhX2xhbmdfQ2xhc3MgKmVsY2xhc3M7CgllcnJvckluZm8gaW5mbzsKCglpZiAoc3ogPCAwKSB7
CgkJdGhyb3dFeGNlcHRpb24oTmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb24pOwoJfQogICAgICAg
IGVsY2xhc3MgPSBnZXRDbGFzc0Zyb21TaWduYXR1cmUoY2xhc3NuYW1lLCBsb2FkZXIsICZpbmZv
KTsKCWlmIChlbGNsYXNzID09IDApIHsKCQl0aHJvd0Vycm9yKCZpbmZvKTsKCX0KICAgICAgICBy
ZXR1cm4gKG5ld0FycmF5KGVsY2xhc3MsIHN6KSk7Cgp9CgovKgogKiBVc2VkIHRvIGdlbmVyYXRl
IGV4Y2VwdGlvbiBmb3IgdW5pbXBsZW1lbnRlZCBmZWF0dXJlcy4KICovCnZvaWQKdW5pbXAoY29u
c3QgY2hhciogbWVzcykKewoJU2lnbmFsRXJyb3IoImphdmEubGFuZy5JbnRlcm5hbEVycm9yIiwg
bWVzcyk7Cn0KCi8qCiAqIFByaW50IG1lc3NhZ2VzLgogKi8Kdm9pZAprcHJpbnRmKEZJTEUqIG91
dCwgY29uc3QgY2hhciogbWVzcywgLi4uKQp7Cgl2YV9saXN0IGFyZ3B0cjsKCgl2YV9zdGFydChh
cmdwdHIsIG1lc3MpOwoJdmZwcmludGYob3V0LCBtZXNzLCBhcmdwdHIpOwoJdmFfZW5kKGFyZ3B0
cik7Cn0KCi8qCiAqIEVudGVyL2xlYXZlIGNyaXRpY2FsIHJlZ2lvbi4gIFRoaXMgaW50ZXJmYWNl
IGlzIGV4cG9ydGVkIHRvIAogKiBuYXRpdmUgbGlicmFyaWVzIHRvIHByb3RlY3QgY2FsbHMgdG8g
bm9uLXJlZW50cmFudCBmdW5jdGlvbnMuCiAqIEl0IHdvcmtzIGFzIGEgZ2xvYmFsIG1hc3Rlcmxv
Y2sgZm9yIEMgbGlicmFyaWVzIHRoYXQgYXJlIG5vdAogKiB0aHJlYWQtc2FmZS4KICovCnZvaWQg
CmVudGVyVW5zYWZlUmVnaW9uKHZvaWQpCnsKCWp0aHJlYWRfc3Bpbm9uKDApOwp9Cgp2b2lkIAps
ZWF2ZVVuc2FmZVJlZ2lvbih2b2lkKQp7CglqdGhyZWFkX3NwaW5vZmYoMCk7Cn0KCiNpZiBkZWZp
bmVkKE5PX1NIQVJFRF9MSUJSQVJJRVMpCi8qCiAqIFJlZ2lzdGVyIGFuIHVzZXIgZnVuY3Rpb24g
c3RhdGljYWxseSBsaW5rZWQgaW4gdGhlIGJpbmFyeS4KICovCnZvaWQKYWRkTmF0aXZlTWV0aG9k
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGZ1bmMpCnsKCXN0YXRpYyBpbnQgZnVuY3NfbnIgPSAw
OwoJc3RhdGljIGludCBmdW5jc19tYXggPSAwOwoKCS8qIElmIHdlIHJ1biBvdXQgb2Ygc3BhY2Us
IHJlYWxsb2NhdGUgKi8KCWlmIChmdW5jc19uciArIDEgPj0gZnVuY3NfbWF4KSB7CgkJZnVuY3Nf
bWF4ICs9IE5BVElWRV9GVU5DX0lOQ1JFTUVOVDsKCQlpZiAobmF0aXZlX2Z1bmNzICE9IG51bGxf
ZnVuY3MpIHsKCQkJbmF0aXZlX2Z1bmNzID0gS1JFQUxMT0MobmF0aXZlX2Z1bmNzLCBmdW5jc19t
YXggKiBzaXplb2YobmF0aXZlRnVuY3Rpb24pKTsKCQl9CgkJZWxzZSB7CgkJCW5hdGl2ZV9mdW5j
cyA9IEtNQUxMT0MoTkFUSVZFX0ZVTkNfSU5DUkVNRU5UICogc2l6ZW9mKG5hdGl2ZUZ1bmN0aW9u
KSk7CgkJfQoJfQoJbmF0aXZlX2Z1bmNzW2Z1bmNzX25yXS5uYW1lID0gS01BTExPQyhzdHJsZW4o
bmFtZSkgKyAxKTsKCXN0cmNweShuYXRpdmVfZnVuY3NbZnVuY3NfbnJdLm5hbWUsIG5hbWUpOwoJ
bmF0aXZlX2Z1bmNzW2Z1bmNzX25yXS5mdW5jID0gZnVuYzsKCWZ1bmNzX25yKys7CgluYXRpdmVf
ZnVuY3NbZnVuY3NfbnJdLm5hbWUgPSAwOwoJbmF0aXZlX2Z1bmNzW2Z1bmNzX25yXS5mdW5jID0g
MDsKfQojZW5kaWYK


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-05-10  7:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-10  7:51 c/9495: Segfault when crosscompiling for PPC on x86 giovannibajo
  -- strict thread matches above, loose matches on Subject: below --
2003-02-02 22:39 bangerth
2003-01-29  8:36 takis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).