public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/8236: turning on optimization breaks preprocessor output
@ 2002-10-15 15:22 neil
  0 siblings, 0 replies; 3+ messages in thread
From: neil @ 2002-10-15 15:22 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, meshko, nobody

Synopsis: turning on optimization breaks preprocessor output

State-Changed-From-To: open->closed
State-Changed-By: neil
State-Changed-When: Tue Oct 15 15:22:27 2002
State-Changed-Why:
    Not a bug.  Macro arguments are determined before arguments
    are macro-expanded.  Glibc has a "feature" whereby if you
    specify optimization to GCC, it "optimizes" various library
    calls by making them into macros.
    
    It is quite entitled to do this, and so the bug is in your
    code.
    
    You can work around it by defining a macro
    
    #define my_strncmp(a, b, n) strncmp (a, b, n)
    
    and this extra level of indirection will work provided
    you use my_strncmp instead.  Of course, this may introduce
    other issues.

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


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

* Re: c/8236: turning on optimization breaks preprocessor output
@ 2002-10-15 15:26 Neil Booth
  0 siblings, 0 replies; 3+ messages in thread
From: Neil Booth @ 2002-10-15 15:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/8236; it has been noted by GNATS.

From: Neil Booth <neil@daikokuya.co.uk>
To: neil@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
	meshko@scorch2000.com, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: c/8236: turning on optimization breaks preprocessor output
Date: Tue, 15 Oct 2002 23:24:42 +0100

 neil@gcc.gnu.org wrote:-
 
 > Synopsis: turning on optimization breaks preprocessor output
 > 
 > State-Changed-From-To: open->closed
 > State-Changed-By: neil
 > State-Changed-When: Tue Oct 15 15:22:27 2002
 > State-Changed-Why:
 >     Not a bug.  Macro arguments are determined before arguments
 >     are macro-expanded.  Glibc has a "feature" whereby if you
 >     specify optimization to GCC, it "optimizes" various library
 >     calls by making them into macros.
 >     
 >     It is quite entitled to do this, and so the bug is in your
 >     code.
 >     
 >     You can work around it by defining a macro
 >     
 >     #define my_strncmp(a, b, n) strncmp (a, b, n)
 
 Bah, make that
 
 #define my_strncmp(a, b) strncmp (a, b)
 
 Neil.


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

* c/8236: turning on optimization breaks preprocessor output
@ 2002-10-15 15:06 meshko
  0 siblings, 0 replies; 3+ messages in thread
From: meshko @ 2002-10-15 15:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         8236
>Category:       c
>Synopsis:       turning on optimization breaks preprocessor output
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Oct 15 15:06:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     meshko@scorch2000.com
>Release:        unknown-1.0
>Organization:
>Environment:
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
same happens on Red Hat 7.2 with gcc 2.96-110
does not happen of FreeBSD gcc 2.95.4
>Description:
gcc ob.c works,
but gcc -O ob.c gives:
ob.c:7:24: macro "strncmp" requires 3 arguments, but only 2 given.
When I run gcc -O -E ob.c the output contains line
strncmp;
so preprocessor already output incorrect result!

ob.c listing:
#define STC "blah", 5

#include <string.h>

main(int argc, char** argv)
{
   strncmp(argv[1], STC);
}
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="ob.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ob.i"

IyAzICJvYi5jIgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMg
Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o
IiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMTIgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAz
MTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVk
aGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCBz
aXplX3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCmV4dGVybiB2b2lkICpt
ZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCAq
bWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQog
ICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3Qg
X19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICA7CgoKCgpleHRlcm4gdm9pZCAq
bWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1l
bWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24p
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAq
bWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAg
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyA3NyAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAzCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAgIDsKCmV4dGVybiBjaGFyICpz
dHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFy
ICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMpCiAgICAgICAgICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBf
X2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg
X19uKSA7CiMgMTIwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmR1
cCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNo
YXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKIyAxNjcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90
IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJz
cG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hh
ciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwojIDE4NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4
dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19kZWxpbSkKICAgICAgICAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tf
ciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAq
X19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKIyAyMTggIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFy
ICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDIyOSAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSA7CgoKCmV4dGVy
biBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikg
OwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0
LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQg
Kl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBp
bnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjcyICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CiMgMjk0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNo
YXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgOwojIDM1NyAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nLmgiIDEgMwojIDM1
OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMSAzCiMgNTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlh
bi5oIiAyIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDUz
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
dV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFk
X3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hh
ciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWdu
ZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50
MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBf
X2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9f
dWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFk
X3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dp
ZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsK
dHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBf
X3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBf
X3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAg
ICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5
cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNf
dDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tf
dDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoK
CgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19p
cGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxv
bmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVk
ZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0
X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBf
X2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYg
X19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRw
dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9w
dGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4
ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewog
ICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRo
cmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQg
X19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVh
ZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRo
cmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5Owog
IHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7
CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9z
ZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRf
YXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9f
Y19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoK
Cgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoK
CnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QK
ewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBf
X21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21f
bG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRl
eGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNl
X3Q7CiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxNDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDIgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDM3MSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50
MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9f
c3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBf
X3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3Ny
Y2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191
c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0Owog
IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAg
IF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9f
dXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNp
ID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIp
OwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAg
X191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3Ut
Pl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2Ogog
ICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8y
OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191
LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9
IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsK
ICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiBf
X2Rlc3Q7Cn0KIyA4NzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWpl
Y3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdo
aWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkK
ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4g
X19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19y
ZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7
CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVq
ZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1
bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nw
bl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0
ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMp
CnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRd
ICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19f
cmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICAr
K19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDkyOCAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3Qg
Y2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNw
bl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXpl
X3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAg
ICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90
IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQx
LCBjaGFyIF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdo
aWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNj
ZXB0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxp
bmUgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFy
IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3Qg
Y2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQz
KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3Vs
dF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8
IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19y
ZXN1bHQ7Cn0KIyA5ODMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19p
bmxpbmUgY2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAq
X19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MikKICAgICsrX19zOwogIHJldHVy
biAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19h
Y2NlcHQyLCBpbnQgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtf
YzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLAogICAg
ICAgICAgICAgIGludCBfX2FjY2VwdDMpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19z
ICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MgogICAgICAgICAmJiAqX19zICE9IF9f
YWNjZXB0MykKICAgICsrX19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSA6
IChjaGFyICopIChzaXplX3QpIF9fczsKfQojIDEwMzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmlu
ZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBj
aGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJ0
b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCkKewogIGNoYXIg
Kl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkpCiAgICBfX3MgPSAqX19uZXh0cDsK
ICB3aGlsZSAoKl9fcyA9PSBfX3NlcCkKICAgICsrX19zOwogIGlmICgqX19zID09ICdcMCcpCiAg
ICBfX3Jlc3VsdCA9ICgodm9pZCAqKTApOwogIGVsc2UKICAgIHsKICAgICAgX19yZXN1bHQgPSBf
X3M7CiAgICAgIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX3NlcCkKICAgICAgICAr
K19fczsKICAgICAgaWYgKCpfX3MgPT0gJ1wwJykKICAgICAgICAqX19uZXh0cCA9IF9fczsKICAg
ICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSAnXDAnOwogICAgICAgICAgKl9fbmV4
dHAgPSBfX3MgKyAxOwogICAgICAgIH0KICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMDgz
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9f
c3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKgpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVy
IGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAg
ICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3Qp
CiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIGlmICgoKl9fcyA9IChfX2V4dGVuc2lv
bl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1ww
JyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChf
X3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgICAqKCpfX3MpKysgPSAn
XDAnOwogICAgZWxzZQogICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgcmV0dXJuIF9fcmV0dmFs
Owp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIg
X19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJz
ZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJl
Z2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICop
MCkpCiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19y
ZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAgICAqKCpfX3MpKysgPSAnXDAnOwog
IGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3
aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19y
ZWplY3QyKQogICAgICAgICsrX19jcDsKICAgICAgaWYgKCpfX2NwICE9ICdcMCcpCiAgICAgICAg
ewogICAgICAgICAgKl9fcyA9IF9fY3A7CiAgICAgICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAg
ICAgIH0KICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsKICAgIH0KICByZXR1
cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAq
Kl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBj
aGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAo
X19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwog
IGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIKICAg
ICAgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MykKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxz
ZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxl
ICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVj
dDIKICAgICAgICAgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKICAgICAgICArK19fY3A7CiAg
ICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwog
ICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAq
X19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19p
bmxpbmUgY2hhciAqX19zdHJzZXBfZyAoY2hhciAqKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVj
dCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfZyAoY2hhciAqKl9fcywgX19jb25z
dCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBp
ZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgaWYg
KCgqX19zID0gX19leHRlbnNpb25fXyAoeyBjaGFyIF9fYTAsIF9fYTEsIF9fYTI7IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChfX3Jl
amVjdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoX19yZWplY3QpID09IDEpID8gKChf
X2EwID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMF0sIF9fYTAgPT0gJ1wwJykgPyAo
KHZvaWQpIChfX3JldHZhbCksICgodm9pZCAqKTApKSA6ICgoX19hMSA9ICgoX19jb25zdCBjaGFy
ICopIChfX3JlamVjdCkpWzFdLCBfX2ExID09ICdcMCcpID8gKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wIChfX2EwKSAmJiAoX19hMCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3
bWVtY2hyIChfX3JldHZhbCwgX19hMCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBfX2EwKSkpIDogKChf
X2EyID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMl0sIF9fYTIgPT0gJ1wwJykgPyBf
X3N0cnBicmtfYzIgKF9fcmV0dmFsLCBfX2EwLCBfX2ExKSA6ICgoKF9fY29uc3QgY2hhciAqKSAo
X19yZWplY3QpKVszXSA9PSAnXDAnID8gX19zdHJwYnJrX2MzIChfX3JldHZhbCwgX19hMCwgX19h
MSwgX19hMikgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3QpKSkpKSA6IHN0cnBicmsgKF9f
cmV0dmFsLCBfX3JlamVjdCkpOyB9KSkgIT0gKCh2b2lkICopMCkpCiAgICAqKCpfX3MpKysgPSAn
XDAnOwogIHJldHVybiBfX3JldHZhbDsKfQojIDExNzYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmlu
ZzIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDIgMwojIDUyNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2
b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7
CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTE3NyAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25z
dCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMjAwICIv
dXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CiMgMzYxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwojIDQg
Im9iLmMiIDIKCm1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQp7CiAgIHN0cm5jbXA7Cn0K


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

end of thread, other threads:[~2002-10-15 22:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-15 15:22 c/8236: turning on optimization breaks preprocessor output neil
  -- strict thread matches above, loose matches on Subject: below --
2002-10-15 15:26 Neil Booth
2002-10-15 15:06 meshko

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).