This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

optimization/3224: -fomit-frame-pointer generates wrong code (g77)



>Number:         3224
>Category:       optimization
>Synopsis:       -fomit-frame-pointer generates wrong code (g77)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Mon Jun 18 05:56:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Richard Guenther
>Release:        gcc version 3.0
>Organization:
>Environment:
Linux 2.4.3, Athlon
>Description:
The varlimit procedure (in the attached file) called with a field (0:NX2,0:NY2) inside a
common will barf compiled with -fomit-frame-pointer (checked with
-O2 and -O3). SIGSEGV at the second field access, the field
pointer is being destroyed (as viewing from gdb):


Program received signal SIGSEGV, Segmentation fault.
varlimit_ (ilimit=0x87aa9a58, feld=0x3fefffff, varmin=0xbfc5d091, 
    varmax=0x3fefffff, string=0xde425442, string2=0x3fefffff, 
    __g77_length_string=-292579374, __g77_length_string2=1072693247)
    at hhsub.F:188
188                 feld(I,J)=max(feld(i,j),varmin)
Current language:  auto; currently fortran
(gdb) bt
#0  varlimit_ (ilimit=0x87aa9a58, feld=0x3fefffff, varmin=0xbfc5d091, 
    varmax=0x3fefffff, string=0xde425442, string2=0x3fefffff, 
    __g77_length_string=-292579374, __g77_length_string2=1072693247)
    at hhsub.F:188
#1  0x3fefffff in ?? ()
(gdb) print feld
$1 = (PTR TO -> ( real*8 (0:133,0:133))) 0x3fefffff

(which is the same result as after single-stepping through the first iteration)

Generated code is:

(gdb) disassemble
Dump of assembler code for function varlimit_:
0x8089c60 <varlimit_>:  push   %ebp
0x8089c61 <varlimit_+1>:        mov    %esp,%ebp
0x8089c63 <varlimit_+3>:        push   %edi
0x8089c64 <varlimit_+4>:        mov    0x8(%ebp),%eax
0x8089c67 <varlimit_+7>:        push   %esi
0x8089c68 <varlimit_+8>:        push   %ebx
0x8089c69 <varlimit_+9>:        sub    $0x1c,%esp
0x8089c6c <varlimit_+12>:       mov    (%eax),%eax
0x8089c6e <varlimit_+14>:       test   %eax,%eax
0x8089c70 <varlimit_+16>:       jle    0x8089d06 <varlimit_+166>
0x8089c76 <varlimit_+22>:       mov    0x91d8024,%esi0x8089c7c <varlimit_+28>:       movl   $0x1,0xffffffec(%ebp)
0x8089c83 <varlimit_+35>:       dec    %esi
0x8089c84 <varlimit_+36>:       js     0x8089cf9 <varlimit_+153>
0x8089c86 <varlimit_+38>:       mov    0x91d8020,%eax
0x8089c8b <varlimit_+43>:       movl   $0x1,0xffffffe4(%ebp)
0x8089c92 <varlimit_+50>:       mov    %eax,0xffffffe8(%ebp)
0x8089c95 <varlimit_+53>:       lea    0x0(%esi,1),%esi
0x8089c99 <varlimit_+57>:       lea    0x0(%edi,1),%edi
0x8089ca0 <varlimit_+64>:       mov    0xffffffe8(%ebp),%edx
0x8089ca3 <varlimit_+67>:       mov    $0x1,%eax
0x8089ca8 <varlimit_+72>:       dec    %edx0x8089ca9 <varlimit_+73>:       js     0x8089cea <varlimit_+138>
0x8089cab <varlimit_+75>:       mov    0xffffffe4(%ebp),%ecx
0x8089cae <varlimit_+78>:       mov    $0x1,%ebx
0x8089cb3 <varlimit_+83>:       mov    0x14(%ebp),%eax
0x8089cb6 <varlimit_+86>:       imul   $0x86,%ecx,%ecx
0x8089cbc <varlimit_+92>:       fldl   (%eax)
0x8089cbe <varlimit_+94>:       mov    %esi,%esi
0x8089cc0 <varlimit_+96>:       mov    0xc(%ebp),%ebp
0x8089cc3 <varlimit_+99>:       lea    (%ebx,%ecx,1),%eax
0x8089cc6 <varlimit_+102>:      shl    $0x3,%eax
0x8089cc9 <varlimit_+105>:      fldl   (%eax,%ebp,1)
0x8089ccc <varlimit_+108>:      mov    0x10(%ebp),%edi
0x8089ccf <varlimit_+111>:      fcomi  %st(1),%st
0x8089cd1 <varlimit_+113>:      fldl   (%edi)
0x8089cd3 <varlimit_+115>:      fxch   %st(1)
0x8089cd5 <varlimit_+117>:      fcmovnbe %st(2),%st
0x8089cd7 <varlimit_+119>:      fcomi  %st(1),%st
0x8089cd9 <varlimit_+121>:      fxch   %st(1)
0x8089cdb <varlimit_+123>:      fcmovnb %st(1),%st
0x8089cdd <varlimit_+125>:      fstp   %st(1)
0x8089cdf <varlimit_+127>:      inc    %ebx
0x8089ce0 <varlimit_+128>:      dec    %edx
0x8089ce1 <varlimit_+129>:      fstpl  (%eax,%ebp,1)0x8089ce4 <varlimit_+132>:      jns    0x8089cc0 <varlimit_+96>
0x8089ce6 <varlimit_+134>:      fstp   %st(0)
0x8089ce8 <varlimit_+136>:      mov    %ebx,%eax
0x8089cea <varlimit_+138>:      incl   0xffffffe4(%ebp)
0x8089ced <varlimit_+141>:      dec    %esi
0x8089cee <varlimit_+142>:      jns    0x8089ca0 <varlimit_+64>
0x8089cf0 <varlimit_+144>:      mov    0xffffffe4(%ebp),%ebp
0x8089cf3 <varlimit_+147>:      mov    %ebp,0xffffffec(%ebp)
0x8089cf6 <varlimit_+150>:      mov    %eax,0xfffffff0(%ebp)
0x8089cf9 <varlimit_+153>:      call   0x8057080 <bounds_>
0x8089cfe <varlimit_+158>:      lea    0xfffffff4(%ebp),%esp
0x8089d01 <varlimit_+161>:      pop    %ebx
0x8089d02 <varlimit_+162>:      pop    %esi
0x8089d03 <varlimit_+163>:      pop    %edi
0x8089d04 <varlimit_+164>:      pop    %ebp
0x8089d05 <varlimit_+165>:      ret    






>How-To-Repeat:
If the above code snippet is not enough to find the problem, I can send you the whole package.
>Fix:
As a workaround dont use -fomit-frame-pointer.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="hhsub.F"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="hhsub.F"

I2luY2x1ZGUgImhoZ3JpZC5oIgoqKiBGaWxlOiBoaHN1Yi5mICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqCiAgICAgIFNVQlJP
VVRJTkUgU0NIUklUVAoqCioqICBDYWxjdWxhdGVzIHRoZSBNYWduaXR1ZGUgb2YgdGhlIFRpbWUg
U3RlcAoqCgogICAgICBpbXBsaWNpdCByZWFsKjggKGEtaCxvLXopCiAgICAgIGltcGxpY2l0IGlu
dGVnZXIgKGktbikKCioqICBEaW1lbnNpb24gb2YgdGhlIEFycmF5cyAobngxPS4uLiwgbngyPS4u
LiwgLi4pCiNpbmNsdWRlICJoaC5pbmMiCgoqKiAgTWluaW11bS9NYXhpbXVtIFZhbHVlcwogICAg
ICBjb21tb24gL0gyRF9taW5tYXh0LyB0ZW1wbWluLHRlbXBtYXgsaXRlbXB4CiAgICAgIGNvbW1v
biAvSDJEX21pbm1heHIvIHJobWluLHJobWF4LGlyaG8KICAgICAgY29tbW9uIC9IMkRfbWlubWF4
ZS8gZXJtaW4sZXJtYXgsaWVyYWQKICAgICAgY29tbW9uIC9oMmRfY29uc2Vydi8gaWV0b3QsaXNv
dGgsaXNvZGVuCgoKKiogIEZvciB0aW1pbmcgdGhlIHJvdXRpbmUKICAgICAgVElNMD1TRUNORCgp
CgoqKiAgQm91bmRhcnkgQ29uZGl0aW9ucwogICAgICBjYWxsIGJvdW5kcwoKKiogIENoZWNrIGZv
ciBuZWdhdGl2ZSB2YWx1ZXMgb2YgcmhvLCBULCBFciBvciBQZwogICAgICBpZiAoaXJoby5lcS4w
KSB0aGVuCiAgICAgICAgRE8gSj0wLE5ZKzEKICAgICAgICAgIERPIEk9MCxOWCsxCiAgICAgICAg
ICAgIElGIChSSChJLEopLkxFLjAuMCkgR09UTyA1MDAKICAgICAgICAgIGVuZCBkbwogICAgICAg
IGVuZCBkbwogICAgICBlbmQgaWYKICAgICAgaWYgKGllcmFkLmVxLjApIHRoZW4KICAgICAgICBE
TyBKPTAsTlkrMQogICAgICAgICAgRE8gST0wLE5YKzEKICAgICAgICAgICAgSUYgKEVSKEksSiku
TEUuMC4wKSBHT1RPIDUwMAogICAgICAgICAgZW5kIGRvCiAgICAgICAgZW5kIGRvCiAgICAgIGVu
ZCBpZgogICAgICBpZiAoaXRlbXB4LmVxLjAgLm9yLiBpc290aC5lcS4wKSB0aGVuCiAgICAgICAg
RE8gSj0wLE5ZKzEKICAgICAgICAgIERPIEk9MCxOWCsxCiAgICAgICAgICAgIElGIChUKEksSiku
TEUuMC4wKSBHT1RPIDUwMAogICAgICAgICAgZW5kIGRvCiAgICAgICAgZW5kIGRvCiAgICAgIGVu
ZCBpZgoKKiogIGlmIGZkZWx0PTAuID4+IGRlbHQ9ZHRtYXgKICAgICAgSUYgKEZERUxULkVRLjAu
MCkgVEhFTgogICAgICAgIERFTFQ9RFRNQVgKICAgICAgICBHT1RPIDkwMAogICAgICBFTFNFCiAg
ICAgICAgREVMVD1ERUxUKjEwMC4vRkRFTFQKICAgICAgRU5EIElGCgoqKiAgTW9kaWZpY2F0aW9u
OiBPY3RvYmVyIDk2IAoqKiAgU291bmR2ZWxvY2l0eQoqKiAgVHlwZSBpcyBkZXRlcm1pbmVkIGZy
b20gcGFyYW1ldGVyIGlkZWx0CiAgICAgIGlmIChpZGVsdC5uZS5pY3N0eXAgLmFuZC4gbW9kdHlw
Lm5lLjQpIHRoZW4KICAgICAgICBpY3NvbGQ9aWNzdHlwCiAgICAgICAgaWNzdHlwPWlkZWx0CiAg
ICAgICAgY2FsbCBzb3VuZAogICAgICAgIGljc3R5cD1pY3NvbGQKICAgICAgZW5kIGlmCgoqKiAg
RGV0ZXJtaW5lIE1pbmltdW0gVmFsdWUKICAgICAgRE8gMTIwIEo9MSxOWQogICAgICAgIERPIDEx
MCBJPTEsTlgKICAgICAgICAgIERFTFQ9TUlOKERYQShJKzEpLyhBQlMoVihJKzEsSikpK2NzKGks
aikpCiAgICAgJiAgICAgICAgLERZQShKKzEpLyhBQlMoRyhJLEorMSkpK0NTKGksaikqR0VPWEcx
KGkpKSxERUxUKQoqKiAgICAgICYgICAgICAgICxEWUEoSisxKS8oQUJTKEcoSSxKKzEpK29tcm90
KStDUyhpLGopKkdFT1hHMShpKSksREVMVCkKIDExMCAgICBDT05USU5VRQogMTIwICBDT05USU5V
RQoKICAgICAgaWYgKChtb2R0eXAuZXEuNCAub3IuIG1vZHR5cC5lcS4yNCkgLmFuZC4gaWRlbHQu
ZXEuMTApIHRoZW4KKiogIEFkanVzdCBmb3IgbW90aW9uIG9mIGJpbmFyeSBzdGFyCiAgICAgICAg
emMzPTEwLmQwCiAgICAgICAgRE8gMjIwIEo9MSxOWQogICAgICAgICAgemMzPW1pbih6YzMsZHlh
KGopKQogMjIwICAgIENPTlRJTlVFCiAgICAgICAgdGltZnJhYz0yLjBkMCptaW4ocnN0YXJzKDEp
KioyLHJzdGFycygyKSoqMikvc3FydCgxLjBkMC1ycGUqKjIpCiAgICAgICAgZGVsdD1taW4oZGVs
dCx6YzMqdGltZnJhYykKICAgICAgICBkZWx0PTAuOWQwKmRlbHQKICAgICAgZW5kIGlmCgoqKiAg
U2V0IHRoZSBzb3VuZCB2ZWxvY2l0eSBiYWNrIQogICAgICBpZiAoaWRlbHQubmUuaWNzdHlwIC5h
bmQuIG1vZHR5cC5uZS40KSB0aGVuCiAgICAgICAgY2FsbCBzb3VuZAogICAgICBlbmQgaWYKCiAg
ICAgIERFTFQ9ICBNSU4gKERFTFQsRFRNQVgpICogRkRFTFQKICAgICAgR09UTyA5MDAKCgoqKiAg
RXJyb3IgQnJhbmNoIDogVmFsdWUgIG5lZ2F0aXZlICEhCiA1MDAgIENPTlRJTlVFCiAgICAgIFdS
SVRFKDE2LCopICcgVGVtcC4gb3IgRGVuc2l0eSBuZWdhdGl2ZSBpbiBHcmlkcHQuIEksSj0gJyxJ
LEoKICAgICAgV1JJVEUoMTYsKikgJyBnYXMgVC4gICA9ICcsVChJLEopCiAgICAgIFdSSVRFKDE2
LCopICcgRGVuc2l0eSAgPSAnLFJIKEksSikKICAgICAgV1JJVEUoMTYsKikgJyByYWQuIEVuLiA9
ICcsRVIoSSxKKQogICAgICBXUklURSgxNiwqKSAnIGdhcyBQLiAgID0gJyxQRyhJLEopCiAgICAg
IFdSSVRFKDE2LCopCgogICAgICBDQUxMIExJU1QyRCAoMCxOWDIsMCxOWTIsRVIsMSxOWCsxLDEs
CiAgICAgMSAgICAgICAgIDEsMTMsMSwnUkFEIEVORVJHWScpCiAgICAgIENBTEwgTElTVDJEICgw
LE5YMiwwLE5ZMixULDEsTlgrMSwxLAogICAgIDEgICAgICAgICAxLDEzLDEsJ0dBUyBUZW1wZXJh
dHVyZScpCiAgICAgIENBTEwgTElTVDJEICgwLE5YMiwwLE5ZMixSSCwxLE5YKzEsMSwKICAgICAx
ICAgICAgICAgMSwxMywxLCcgREVOU0lUWSAgJykKICAgICAgQ0FMTCBMSVNUMkQgKDAsTlgyLDAs
TlkyLFYsMSxOWCsxLDEsCiAgICAgMSAgICAgICAgIDEsMTMsMSwnUkFEIFZFTE9DSVRZJykKICAg
ICAgQ0FMTCBMSVNUMkQgKDAsTlgyLDAsTlkyLEcsMSxOWCsxLDEsCiAgICAgMSAgICAgICAgIDEs
MTMsMSwnTUVSIEFORyBWRUwnKQogICAgICBDQUxMIERSVUNLICgyKQogICAgICBDQUxMIERSVUNL
ICg1KQogICAgICBDQUxMIERSVUNLICgzKQoKKiAgIEFib3J0IDoKICAgICAgd3JpdGUoMTYsKikg
JyAqKioqKiBTQ0hSSVRUOiBBYm9ydCEnCiAgICAgIHdyaXRlKCosKikgJyAqKioqKiBTQ0hSSVRU
OiBBYm9ydCEnCiAgICAgIGNhbGwgZmluaXMKCiA5MDAgIENPTlRJTlVFCgogICAgICBDUFVTQ0g9
Q1BVU0NIK1NFQ05EKCktVElNMAoKICAgICAgUkVUVVJOCiAgICAgIEVORAogICAgICBTVUJST1VU
SU5FIENPUkRFTgoqCioqICBDb3JyZWN0cyBEZW5zaXRpZXMgYWNjb3JkaW5nIHRvIHRoZSBGbHV4
LAoqKiAgT25seSBmb3IgVkFEIFRlc3QtTW9kZWwgKG1vZHR5cD05MywgYW5kIG1vZHZlcj05NCkK
KgogICAgICBpbXBsaWNpdCByZWFsKjggKGEtaCxvLXopCiAgICAgIGltcGxpY2l0IGludGVnZXIg
KGktbikKCioqICBEaW1lbnNpb24gb2YgdGhlIEFycmF5cyAobngxPS4uLiwgbngyPS4uLiwgLi4p
CiNpbmNsdWRlICJoaC5pbmMiCgogICAgICAgICAgWE1TT0wgID0gMS45OSBFICAzMwogICAgICAg
ICAgR1JBViAgPSA2LjY3IEUgLSA4CiAgICAgICAgICBTUiAgICA9IDUuNjcgRSAtIDUKICAgICAg
ICAgIFJHQVMgID0gOC4zMSBFICAgNwoKICAgICAgICAgIGRyYWQ9KHh4YShueCsxKSt4eGEoMSkp
LzIuCgogICAgICAgICAgRE1ET1Q9RE1GTCAqIDYuMzRFMjUgICAgICAgCiAgICAgICAgICBEVEVG
RiA9ICgzLi84Li9QSS9TUipHUkFWKlhNU1RBUipYTVNPTCpETURPVC8oZHJhZCpSMCkqKjMKICAg
ICAmICAgICAgKigxLjAtREJFVEEqU1FSVChSQk9VTkQvRFJBRCkpICkqKjAuMjUgL3RlbXAwCgog
ICAgICAgICAgQ0FMTCBldGFjYWxjCiAgICAgICAgICBERkxVWD0wLjAKICAgICAgICAgIERPIDEw
IEo9MSxOWQogICAgICAgICAgICBERkxVWD1ERkxVWCtFVEEoMSxqKSpEWUEoaisxKQogIDEwICAg
ICAgQ09OVElOVUUKCiAgICAgICAgICBERkxVWD0gREZMVVggKiA5Li80LiAvIGRyYWQqKjMKICAg
ICAgICAgIFRIRkxVWD0gU1JBRCpEVEVGRioqNAoKICAgICAgICAgIERPIDMwIGk9MSxOWCsxCiAg
ICAgICAgICAgIERPIDIwIGo9MCxOWSsxCiAgICAgICAgICAgICAgUkgoaSxqKT1USEZMVVgvREZM
VVgqUkgoaSxqKQogMjAgICAgICAgICBDT05USU5VRQogMzAgICAgICAgQ09OVElOVUUKCiAgICAg
IFJFVFVSTgogICAgICBFTkQKICAgICAgU1VCUk9VVElORSBWQVJMSU1JVChpbGltaXQsZmVsZCx2
YXJtaW4sdmFybWF4LHN0cmluZyxzdHJpbmcyKQoqCioqICBJbXBvc2VzIGxpbWl0cyBvbiB0aGUg
cGh5c2ljYWwgdmFyaWFibGVzCioKCiAgICAgIGltcGxpY2l0IHJlYWwqOCAoYS1oLG8teikKICAg
ICAgaW1wbGljaXQgaW50ZWdlciAoaS1uKQoKI2luY2x1ZGUgImhoLmluYyIKCiAgICAgIGRpbWVu
c2lvbiBmZWxkICgwOk5YMiwwOk5ZMikKICAgICAgQ0hBUkFDVEVSIFNUUklORyooKiksU1RSSU5H
MiooKikKCiAgICAgIElGIChpbGltaXQuZ2UuMSkgVEhFTgogICAgICAgIERPIDIwIEo9MSxOWQog
ICAgICAgICAgRE8gMTAgST0xLE5YCiAgICAgICAgICAgIGZlbGQoSSxKKT1taW4oZmVsZChpLGop
LHZhcm1heCkKICAgICAgICAgICAgZmVsZChJLEopPW1heChmZWxkKGksaiksdmFybWluKQogMTAg
ICAgICAgQ09OVElOVUUKIDIwICAgICBDT05USU5VRQogICAgICAgIGNhbGwgYm91bmRzCgogICAg
ICBlbHNlIElGIChpbGltaXQubHQuMCkgVEhFTgogICAgICAgIERPIDEyMCBKPTEsTlkKICAgICAg
ICAgIERPIDExMCBJPTEsTlgKICAgICAgICAgICAgaWYgKGZlbGQoaSxqKS5ndC52YXJtYXgpIHRo
ZW4KICAgICAgICAgICAgICBmZWxkKEksSik9dmFybWF4CiAgICAgICAgICAgICAgV1JJVEUoMTYs
KikgJyoqICAnLHN0cmluZywnIGluICgnLEksJywnLEosJyknCiAgICAgJiAgICAgICAgICAgICAg
ICAgICwnIGxvd2VyZWQgISAnLHN0cmluZzIKICAgICAgICAgICAgZW5kIGlmCiAgICAgICAgICAg
IGlmIChmZWxkKGksaikubHQudmFybWluKSB0aGVuCiAgICAgICAgICAgICAgZmVsZChJLEopPXZh
cm1pbgogICAgICAgICAgICAgIFdSSVRFKDE2LCopICcqKiAgJyxzdHJpbmcsJyBpbiAoJyxJLCcs
JyxKLCcpJwogICAgICYgICAgICAgICAgICAgICAgICAsJyBlbmhhbmNlZCAhICcsc3RyaW5nMgog
ICAgICAgICAgICBlbmQgaWYKIDExMCAgICAgIENPTlRJTlVFCiAxMjAgICAgQ09OVElOVUUKCiAg
ICAgICAgY2FsbCBib3VuZHMKICAgICAgRU5EIElGCgogICAgICByZXR1cm4KICAgICAgZW5kCiAg
ICAgIFNVQlJPVVRJTkUgVkVMTElNSVQoaXZlbCx2ZWxkaW0sdnRtYXgsc3RyaW5nLHN0cmluZzIp
CioKKiogIEltcG9zZXMgbGltaXRzIG9uIHRoZSBWZWxvY2l0aWVzCioKCiAgICAgIGltcGxpY2l0
IHJlYWwqOCAoYS1oLG8teikKICAgICAgaW1wbGljaXQgaW50ZWdlciAoaS1uKQoKICAgICAgcGFy
YW1ldGVyICh4ZG1pbj0xLjBkLTMwKQoKKiogIERpbWVuc2lvbiBvZiB0aGUgQXJyYXlzIChueDE9
Li4uLCBueDI9Li4uLCAuLikKI2luY2x1ZGUgImhoLmluYyIKCiAgICAgIENIQVJBQ1RFUiBTVFJJ
TkcqKCopLFNUUklORzIqKCopCgoKICAgICAgaWYgKGl2ZWwuZXEuMSkgdGhlbgogICAgICAgIERP
IDIwIEo9MSxOWQogICAgICAgICAgRE8gMTAgST0xLE5YCiAgICAgICAgICAgIFYoSSxKKT1WKEks
SikvKEFCUyhWKEksSikpK3hkbWluKQogICAgICYgICAgICAgICAgICAgICogbWluKGFicyh2KGks
aikpLDAuNSAqIHZlbGRpbSooYWJzKHYoaSxqKSkrVlRNQVgpKQoKICAgICAgICAgICAgRyhJLEop
PUcoSSxKKS8oQUJTKEcoSSxKKSkreGRtaW4pCiAgICAgJiAgICAgICAqIG1pbihhYnMoZyhpLGop
KSwwLjUqdmVsZGltKihhYnMoZyhpLGopKStWVE1BWCpHRU9YQjEoaSkpKQogMTAgICAgICAgY29u
dGludWUKIDIwICAgICBjb250aW51ZQoKICAgICAgICBjYWxsIGJvdW5kcwoKICAgICAgZWxzZSBp
ZiAoaXZlbC5lcS4yKSB0aGVuCiAgICAgICAgRE8gMjIwIEo9MSxOWQogICAgICAgICAgRE8gMjEw
IEk9MSxOWAogICAgICAgICAgICBpZiAoYWJzKHYoaSxqKSkuZ3QuCiAgICAgJiAgICAgICAgMC41
KnZlbGRpbSooYWJzKHYoaSxqKSkrdnRtYXgpKSB0aGVuCiAgICAgICAgICAgICAgV1JJVEUoMTYs
KikgJyoqICAnLCcgViAgICBpbiAoJyxJLCcsJyxKLCcpJwogICAgICYgICAgICAgICAgICAgICAg
ICAsJyBsb3dlcmVkICEgJyxzdHJpbmcyCiAgICAgICAgICAgIGVuZCBpZgogICAgICAgICAgICBp
ZiAoYWJzKGcoaSxqKSkuZ3QuCiAgICAgJiAgICAgICAgMC41KnZlbGRpbSooYWJzKGcoaSxqKSkr
dnRtYXgqR0VPWEIxKGkpKSkgdGhlbgogICAgICAgICAgICAgIFdSSVRFKDE2LCopICcqKiAgJywn
IEcgICAgaW4gKCcsSSwnLCcsSiwnKScKICAgICAmICAgICAgICAgICAgICAgICAgLCcgbG93ZXJl
ZCAhICcsc3RyaW5nMgogICAgICAgICAgICBlbmQgaWYKCiAgICAgICAgICAgIFYoSSxKKT1WKEks
SikvKEFCUyhWKEksSikpK3hkbWluKQogICAgICYgICAgICAgICAgICAgICogbWluKGFicyh2KGks
aikpLDAuNSAqIHZlbGRpbSooYWJzKHYoaSxqKSkrVlRNQVgpKQoKICAgICAgICAgICAgRyhJLEop
PUcoSSxKKS8oQUJTKEcoSSxKKSkreGRtaW4pCiAgICAgJiAgICAgICAqIG1pbihhYnMoZyhpLGop
KSwwLjUqdmVsZGltKihhYnMoZyhpLGopKStWVE1BWCpHRU9YQjEoaSkpKQogMjEwICAgICAgY29u
dGludWUKIDIyMCAgICBjb250aW51ZQoKICAgICAgICBjYWxsIGJvdW5kcwoKICAgICAgZWxzZSBp
ZiAoaXZlbC5lcS4zKSB0aGVuCgogICAgICAgIERPIDQwIEo9MSxOWQogICAgICAgICAgRE8gMzAg
ST0xLE5YCiAgICAgICAgICAgIFYoSSxKKT1WKEksSikvKEFCUyhWKEksSikpK3hkbWluKQogICAg
ICYgICAgICAgICAgICptaW4oYWJzKHYoaSxqKSksIDIuKiBjcyhpLGopICogdmVsZGltKQoKCkMg
ICAgICAgICAgICAgICAgICBvbWtlcD0wLjAKCkMgICAgICAgICAgICAgICAgICBpZiAobW9kdHlw
LmVxLjQpIHRoZW4KQyAgICAgICAgICAgICAgICAgICAgb21rZXA9MS4vc3FydCh4eGIoaSkqKjMp
CkMgICAgICAgICAgICAgICAgICBlbmQgaWYKQyAgICAgICAgICAgICAgICAgIGdnPWcoaSxqKS0o
b21rZXAtb21yb3QpCkMgICAgICAgICAgICAgICAgICBnZ2E9YWJzKGdnKQpDICAgICAgICAgICAg
ICAgICAgaWYgKGdnYSpHRU9YQihpKS5nZS4yLmUrMTAqY3MoaSxqKQpDICAgICAmICAgICAgICAg
ICAgLmFuZC4gZ2dhLm5lLjAuMCkgdGhlbgpDICAgICAgICAgICAgICAgICAgICBHKEksSik9KG9t
a2VwLW9tcm90KSArIGdnL2dnYQpDICAgICAmICAgICAgICAgICAgICAgICAqIDIuKiBjcyhpLGop
KkdFT1hCMShpKSAqIHZlbGRpbQpDICAgICAgICAgICAgICAgICAgICBpZiAoaXZlbC5lcS4tMikg
dGhlbgpDICAgICAgICAgICAgICAgICAgICAgIFdSSVRFKDE2LCopICcqKioqKiogIFktVmVsLiBp
biAoJyxJLCcsJyxKLCcpJwpDICAgICAmICAgICAgICAgICAgICAgICAgLCcgcmVkdWNlZCEnCkMg
ICAgICAgICAgICAgICAgICAgIGVuZCBpZgpDICAgICAgICAgICAgICAgICAgZW5kIGlmCgoKIDMw
ICAgICAgIENPTlRJTlVFCiA0MCAgICAgQ09OVElOVUUKCiAgICAgICAgY2FsbCBib3VuZHMKCiAg
ICAgIGVsc2UgaWYgKGl2ZWwuZXEuNCkgdGhlbgoqKiAgVmVsb2NpdGllcyBub3QgbGFyZ2VyIHRo
YW4gIHZlbGRpbSB0aW1lcyB0aGUgKGxvY2FsKSBzb3VuZCBzcGVlZAogICAgICAgIERPIDQyMCBK
PTEsTlkKICAgICAgICAgIERPIDQxMCBJPTEsTlgKICAgICAgICAgICAgVihJLEopPVYoSSxKKS8o
QUJTKFYoSSxKKSkreGRtaW4pCiAgICAgJiAgICAgICAgICAgICAgKiBtaW4oYWJzKHYoaSxqKSks
IDAuNSp2ZWxkaW0qKGNzKGksaikrY3MoaSsxLGopKSkKCiAgICAgICAgICAgIEcoSSxKKT1HKEks
SikvKEFCUyhHKEksSikpK3hkbWluKQogICAgICYgICAgICAgKiBtaW4oYWJzKGcoaSxqKSksMC41
KnZlbGRpbSooY3MoaSxqKStjcyhpLGorMSkpKkdFT1hCMShpKSkKIDQxMCAgICAgICBjb250aW51
ZQogNDIwICAgICBjb250aW51ZQoKICAgICAgICBjYWxsIGJvdW5kcwoKICAgICAgZWxzZSBpZiAo
aXZlbC5lcS41IC5vci4gaXZlbC5lcS4xNSkgdGhlbgoqKiAgVmVsb2NpdGllcyBub3QgbGFyZ2Vy
IHRoYW4gIHZlbGRpbSB0aW1lcyB0aGUgc3BlZWQgb2YgbGlnaHQKICAgICAgICBETyA1MjAgSj0x
LE5ZCiAgICAgICAgICBETyA1MTAgST0xLE5YCiAgICAgICAgICAgaWYgKGl2ZWwuZXEuMTUpIHRo
ZW4KICAgICAgICAgICAgaWYgKGFicyh2KGksaikpLmd0LgogICAgICYgICAgICAgIDAuNSp2ZWxk
aW0qKGFicyh2KGksaikpK2ZkKSkgdGhlbgogICAgICAgICAgICAgIFdSSVRFKDE2LCopICcqKiAg
JywnIFYgICAgaW4gKCcsSSwnLCcsSiwnKScKICAgICAmICAgICAgICAgICAgICAgICAgLCcgbG93
ZXJlZCAhICcsc3RyaW5nMgogICAgICAgICAgICBlbmQgaWYKICAgICAgICAgICAgaWYgKGFicyhn
KGksaikpLmd0LgogICAgICYgICAgICAgIDAuNSp2ZWxkaW0qKGFicyhnKGksaikpK2ZkKkdFT1hC
MShpKSkpIHRoZW4KICAgICAgICAgICAgICBXUklURSgxNiwqKSAnKiogICcsJyBHICAgIGluICgn
LEksJywnLEosJyknCiAgICAgJiAgICAgICAgICAgICAgICAgICwnIGxvd2VyZWQgISAnLHN0cmlu
ZzIKICAgICAgICAgICAgZW5kIGlmCiAgICAgICAgICAgZW5kIGlmCiAgICAgICAgICAgIFYoSSxK
KT1WKEksSikvKEFCUyhWKEksSikpK3hkbWluKQogICAgICYgICAgICAgICAgICAgICogbWluKGFi
cyh2KGksaikpLDAuNSAqIHZlbGRpbSooYWJzKHYoaSxqKSkrZmQpKQoKICAgICAgICAgICAgRyhJ
LEopPUcoSSxKKS8oQUJTKEcoSSxKKSkreGRtaW4pCiAgICAgJiAgICAgICAqIG1pbihhYnMoZyhp
LGopKSwwLjUqdmVsZGltKihhYnMoZyhpLGopKStmZCpHRU9YQjEoaSkpKQogNTEwICAgICAgIGNv
bnRpbnVlCiA1MjAgICAgIGNvbnRpbnVlCgogICAgICAgIGNhbGwgYm91bmRzCgogICAgICBlbmQg
aWYKCiAgICAgIHJldHVybgogICAgICBlbmQK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]