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]

c++/454: Template instanciation failure on i686-pc-linux-gnu



>Number:         454
>Category:       c++
>Synopsis:       Template instanciation failure on i686-pc-linux-gnu
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 08 04:16:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     pnobili@cgg.com
>Release:        gcc version 2.95.2 19991024 (release)  (gcc -v)
>Organization:
>Environment:
Linux [hostname] 2.2.14-6.1.1 #1 Thu Apr 13 20:01:58 EDT 2000 i686 unknown
>Description:
Gcc 2.95.2 fails to instanciate template on i868-pc-linux-gnu
targets.

'-frepo' option is used while compiling source code. Afterwards,
a "pre-link" phase is done to force template instanciation
before including object files in a library:

gcc -frepo WorkSession.o

This pre-link phase fails to instanciate template 
GmList<GmWorkSessionHistoryLog*>::clear() properly on 
i868-pc-linux-gnu targets. It works well on
SunOS5.x and IRIX6.x targets (same compiler version).

The WorkSession.rpo does not seem to contain all template
information (.rpo files produced on SunOS and IRIX are
different).
>How-To-Repeat:
a) gcc -c -frepo WorkSession.C  ==> WorkSession.o,rpo
b) gcc -frepo WorkSession.o     ==> pre-link

Produces:

collect: recompiling WorkSession.C
collect: relinking
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
WorkSession.o: In function `GmList<GmWorkSessionHistoryLog *>::~GmList(void)':
WorkSession.o(.text+0xfb): undefined reference to `GmList<GmWorkSessionHistoryLog *>::clear(void)'
collect2: ld returned 1 exit status
>Fix:
None that I am aware of except using explicit template 
instanciation schemes, that are not very practical in my 
case.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="WorkSession.C"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="WorkSession.C"

CnR5cGVkZWYgdW5zaWduZWQgY2hhciBHbUJvb2xlYW4gOwp0eXBlZGVmIHZvaWQqICAgICAgICAg
R21BbnkgICAgIDsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBHbUxpc3ROb2RlIDsKCnRlbXBs
YXRlIDxjbGFzcyBUPgpjbGFzcyBHbUxpc3QKewoKcHVibGljIDoKCSAgICAgICAgICAgICAgICBH
bUxpc3QoKSA7CgkgICAgICAgICAgICAgICAgR21MaXN0KCBjb25zdCBHbUxpc3Q8VD4mICkgOwoJ
ICAgICAgICAgICAgICAgIH5HbUxpc3QoKSA7CgkKCUdtTGlzdDxUPiYgICAgICBvcGVyYXRvcj0o
IGNvbnN0IEdtTGlzdDxUPiYgKSA7Cgl2b2lkICAgICAgICAgICAgYXBwZW5kKCBHbUxpc3Q8VD4m
ICkgOwoJdm9pZCAgICAgICAgICAgIHByZXBlbmQoIEdtTGlzdDxUPiYgKSA7CgoJR21Cb29sZWFu
ICAgICAgIGlzRW1wdHkoKSBjb25zdCA7CglpbnQgICAgICAgICAgICAgY291bnQoKSBjb25zdCA7
CgoJdm9pZCAgICAgICAgICAgIGNsZWFyKCkgOwoKCUdtQW55ICAgICAgICAgICBwcmVwZW5kKCBj
b25zdCBUJiApIDsKCUdtQW55ICAgICAgICAgICBhcHBlbmQgKCBjb25zdCBUJiApIDsKCglHbUFu
eSAgICAgICAgICAgZmlyc3QoKSBjb25zdCA7CglHbUFueSAgICAgICAgICAgc2VlayggY29uc3Qg
VCYgKSBjb25zdCA7CglHbUFueSAgICAgICAgICAgc2VlayggdW5zaWduZWQgaW50ICkgY29uc3Qg
OwoJdm9pZCAgICAgICAgICAgIG5leHQoIEdtQW55JiApIGNvbnN0IDsKCVQmICAgICAgICAgICAg
ICBvcGVyYXRvcigpKCBHbUFueSApIGNvbnN0IDsKCVQgICAgICAgICAgICAgICBwb3AoKSA7CgoJ
dm9pZCAgICAgICAgICAgIHN1YnN0aXR1dGUoIEdtQW55LCBjb25zdCBUJiApIDsKCglHbUJvb2xl
YW4gICAgICAgb3ducyggR21BbnkgKSBjb25zdCA7CglHbUJvb2xlYW4gICAgICAgb3ducyggY29u
c3QgVCYgKSBjb25zdCA7CgoJVCYgICAgICAgICAgICAgIGhlYWQoKSBjb25zdCA7CglUJiAgICAg
ICAgICAgICAgdGFpbCgpIGNvbnN0IDsKCglHbUFueSAgICAgICAgICAgaW5zZXJ0QWZ0ZXIoIEdt
QW55LCBjb25zdCBUJiApIDsKCXZvaWQgICAgICAgICAgICByZW1vdmVBZnRlciggR21BbnkgKSA7
Cgl2b2lkICAgICAgICAgICAgcmVtb3ZlKCBjb25zdCBUJiApIDsKCgl2b2lkICAgICAgICAgICAg
cmV2ZXJzZSgpIDsKCXZvaWQgICAgICAgICAgICBzb3J0KCBHbUJvb2xlYW4gKCopKCBUJiwgVCYg
KSApIDsKCnByb3RlY3RlZCA6CglHbUxpc3ROb2RlPFQ+ICogUCA7Cn0gOwoKCgojaW5jbHVkZSA8
c3RkbGliLmg+CiNpbmNsdWRlIDxpb3N0cmVhbS5oPgoKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFz
cyBHbUxpc3ROb2RlCnsKCnB1YmxpYyA6CglHbUxpc3ROb2RlPFQ+KiB0bCA7CglUICAgICAgICAg
ICAgICBoZCA7CgoJR21MaXN0Tm9kZSgpICB7fQoJfkdtTGlzdE5vZGUoKSB7fQoKCUdtTGlzdE5v
ZGUoIGNvbnN0IFQmIGgsIEdtTGlzdE5vZGU8VD4qIHQgPSAwKSA6IGhkKGgpLCB0bCh0KSB7fQp9
IDsKCgovLyBHbUxpc3QKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCgp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KR21MaXN0PFQ+OjpHbUxpc3QoKQp7CglQID0gMCA7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4K
R21MaXN0PFQ+OjpHbUxpc3QoIGNvbnN0IEdtTGlzdDxUPiYgYSApIAp7CglpZiggYS5QID09IDAg
KSAKCXsKCQlQID0gMCA7CgkJcmV0dXJuIDsKCX0KCglHbUxpc3ROb2RlPFQ+ICogcCA9IGEuUC0+
dGwgOwoJR21MaXN0Tm9kZTxUPiAqIGggPSBuZXcgR21MaXN0Tm9kZTxUPiggcC0+aGQgKSA7CgkK
CVAgPSBoIDsKCglmb3IoIDs7ICkgCgl7CgkJaWYoIHAgPT0gYS5QICkgCgkJewoJCQlQLT50bCA9
IGggOwoJCQlyZXR1cm4gOwoJCX0KCQlwID0gcC0+dGwgOwoJCUdtTGlzdE5vZGU8VD4gKiBuID0g
bmV3IEdtTGlzdE5vZGU8VD4oIHAtPmhkICkgOwoJCVAtPnRsID0gbiA7CgkJUCA9IG4gOwoJfQp9
CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CkdtTGlzdDxUPjo6fkdtTGlzdCgpIAp7CgljbGVhcigpIDsK
fQoKCnRlbXBsYXRlIDxjbGFzcyBUPgpHbUxpc3Q8VD4mIEdtTGlzdDxUPjo6b3BlcmF0b3IgPSAo
IGNvbnN0IEdtTGlzdDxUPiYgYSApCnsKCWlmKCBQID09IGEuUCApIHJldHVybiAqdGhpcyA7CgoJ
Y2xlYXIoKSA7CgoJaWYoIGEuUCA9PSAwICkgcmV0dXJuICp0aGlzIDsKCglHbUxpc3ROb2RlPFQ+
ICogcCA9IGEuUC0+dGwgOwoJR21MaXN0Tm9kZTxUPiAqIGggPSBuZXcgR21MaXN0Tm9kZTxUPigg
cC0+aGQgKSA7CgoJUCA9IGggOwoKCWZvciggOzsgKQoJewoJCWlmKCBwID09IGEuUCApCgkJewoJ
CQlQLT50bCA9IGggOwoJCQlicmVhayA7CgkJfQoJCXAgPSBwLT50bCA7CgkJR21MaXN0Tm9kZTxU
PiAqIG4gPSBuZXcgR21MaXN0Tm9kZTxUPiggcC0+aGQgKSA7CgkJUC0+dGwgPSBuIDsKCQlQID0g
biA7Cgl9CgoJcmV0dXJuICp0aGlzIDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBUPgp2b2lkIEdtTGlz
dDxUPjo6YXBwZW5kKCBHbUxpc3Q8VD4mIGIgKQp7CglHbUxpc3ROb2RlPFQ+ICogdCA9IGIuUCA7
CgoJLy8gZGVzdHJ1Y3RpZiA6IGxhIGxpc3RlIGIgZXN0IGRvcmVuYXZhbnQgdmlkZS4KCWIuUCA9
IDAgOwoKCWlmKCBQID09IDAgKQoJewoJCVAgPSB0IDsKCX0KCWVsc2UgaWYoIHQgIT0gMCApCgl7
CgkJR21MaXN0Tm9kZTxUPiAqIGYgPSBQLT50bCA7CgkJUC0+dGwgPSB0LT50bCA7CgkJdC0+dGwg
PSBmIDsKCQlQID0gdCA7Cgl9Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kdm9pZCBHbUxpc3Q8VD46
OnByZXBlbmQoIEdtTGlzdDxUPiYgYiApCnsKCUdtTGlzdE5vZGU8VD4gKiB0ID0gYi5QIDsKCgkv
LyBkZXN0cnVjdGlmIDogbGEgbGlzdGUgYiBlc3QgZG9yZW5hdmFudCB2aWRlLgoJYi5QID0gMCA7
CgoJaWYoIFAgPT0gMCApCgl7CgkJUCA9IHQgOwoJfQoJZWxzZSBpZiggdCAhPSAwICkKCXsKCQlH
bUxpc3ROb2RlPFQ+ICogZiA9IFAtPnRsIDsKCQlQLT50bCA9IHQtPnRsIDsKCQl0LT50bCA9IGYg
OwoJfQp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CkdtQm9vbGVhbiBHbUxpc3Q8VD46OmlzRW1wdHko
KSBjb25zdAp7CgoJcmV0dXJuIFAgPT0gMCA/IEdtVFJVRSA6IEdtRkFMU0UgOwp9CgoKdGVtcGxh
dGUgPGNsYXNzIFQ+CmludCBHbUxpc3Q8VD46OmNvdW50KCkgY29uc3QKewoKCWludCBzdW0gPSAw
IDsKCglHbUxpc3ROb2RlPFQ+ICogbiA9IFAgOwoJaWYoIG4gKQoJewoJCWRvCgkJewoJCQluID0g
bi0+dGwgOwoJCQlzdW0rKyA7CgkJfSB3aGlsZSggbiAhPSBQICkgOwoJfQoJcmV0dXJuIHN1bSA7
Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kdm9pZCBHbUxpc3Q8VD46OmNsZWFyKCkKewoKCWlmKCBQ
ID09IDAgKSByZXR1cm4gOwoKCUdtTGlzdE5vZGU8VD4gKiBwID0gUC0+dGwgOwoJUC0+dGwgPSAw
IDsKCVAgPSAwIDsKCgl3aGlsZSggcCAhPSAwICkKCXsKCQlHbUxpc3ROb2RlPFQ+ICogbnh0ID0g
cC0+dGwgOwoJCWRlbGV0ZSBwIDsKCQlwID0gbnh0IDsKCX0KfQoKCnRlbXBsYXRlIDxjbGFzcyBU
PgpHbUFueSBHbUxpc3Q8VD46OmFwcGVuZCggY29uc3QgVCYgaXRlbSApCnsKCglHbUxpc3ROb2Rl
PFQ+ICogdCA9IG5ldyBHbUxpc3ROb2RlPFQ+KGl0ZW0pIDsKCglpZiggUCA9PSAwICkKCXsKCQl0
LT50bCA9IFAgPSB0IDsKCX0KCWVsc2UKCXsKCQl0LT50bCA9IFAtPnRsIDsKCQlQLT50bCA9IHQg
OwoJCVAgPSB0IDsKCX0KCglyZXR1cm4gR21BbnkodCkgOwp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+
CkdtQW55IEdtTGlzdDxUPjo6cHJlcGVuZCggY29uc3QgVCYgaXRlbSApCnsKCglHbUxpc3ROb2Rl
PFQ+ICogdCA9IG5ldyBHbUxpc3ROb2RlPFQ+KGl0ZW0pIDsKCglpZiggUCA9PSAwICkKCXsKCQl0
LT50bCA9IFAgPSB0IDsKCX0KCWVsc2UKCXsKCQl0LT50bCA9IFAtPnRsIDsKCQlQLT50bCA9IHQg
OwoJfQoKCXJldHVybiBHbUFueSh0KSA7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KR21BbnkgR21M
aXN0PFQ+OjpmaXJzdCgpIGNvbnN0CnsKCXJldHVybiAhUCA/IDAgOiBHbUFueSggUC0+dGwgKSA7
Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KR21BbnkgR21MaXN0PFQ+OjpzZWVrKCBjb25zdCBUJiBp
dGVtICkgY29uc3QKewoJaWYoIFAgPT0gMCApCgl7CgkJcmV0dXJuIEdtQW55KCAwICkgOyAvLyBl
bXB0eSBsaXN0Cgl9CgoJR21MaXN0Tm9kZTxUPiAqIHQgPSBQLT50bCA7IC8vIGZpcnN0CgoJZG8K
CXsKCQlpZiggdC0+aGQgPT0gaXRlbSApIGJyZWFrIDsgLy8gZm91bmQKCQl0ID0gdC0+dGwgOwoJ
fSB3aGlsZSggdCAhPSBQICkgOwoKCWlmKCB0LT5oZCAhPSBpdGVtICkgcmV0dXJuIEdtQW55KCAw
ICkgOyAvLyBub3QgZm91bmQKCglyZXR1cm4gR21BbnkoIHQgKSA7Cn0KCgp0ZW1wbGF0ZSA8Y2xh
c3MgVD4KR21BbnkgR21MaXN0PFQ+OjpzZWVrKCB1bnNpZ25lZCBpbnQgcG9zICkgY29uc3QKewoJ
aWYoIFAgPT0gMCApCgl7CgkJcmV0dXJuIEdtQW55KCAwICkgOyAvLyBlbXB0eSBsaXN0Cgl9CgoJ
aW50IGwgPSAwIDsKCUdtTGlzdE5vZGU8VD4gKiB0ID0gUC0+dGwgOwoKCWRvCgl7CgkJaWYoIGwg
PT0gcG9zICkKCQl7CgkJCXJldHVybiBHbUFueSggdCApIDsKCQl9CgkJdCA9IHQtPnRsIDsKCQls
KysgOwoJfSB3aGlsZSggdCAhPSBQLT50bCApIDsKCglyZXR1cm4gR21BbnkoIDAgKSA7Cn0KCgp0
ZW1wbGF0ZSA8Y2xhc3MgVD4Kdm9pZCBHbUxpc3Q8VD46Om5leHQoIEdtQW55JiBwICkgY29uc3QK
ewoJcCA9IChwPT0wIHx8IHA9PVApID8gMCA6IEdtQW55KCAoKEdtTGlzdE5vZGU8VD4qKXApLT50
bCApIDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBUPgpUJiBHbUxpc3Q8VD46Om9wZXJhdG9yICgpICgg
R21BbnkgcCApIGNvbnN0CnsKCWlmKCAhcCApCgl7CgkJR21GYXRhbEVycm9yKCAiVCYgR21MaXN0
PFQ+OjpvcGVyYXRvciAoKSAoIEdtQW55IHAgKSIsCgkJCSAgICAgICJOdWxsIGl0ZXJhdG9yIHAi
ICkgOwoJfQoKCXJldHVybiAoKEdtTGlzdE5vZGU8VD4qKXApLT5oZCA7Cn0KCgp0ZW1wbGF0ZSA8
Y2xhc3MgVD4KVCBHbUxpc3Q8VD46OnBvcCgpCnsKCWlmKCBQID09IDAgKQoJewoJCUdtRmF0YWxF
cnJvciggIlQgR21MaXN0PFQ+Ojpwb3AoKSIsICJFbXB0eSBsaXN0IiApIDsKCX0KCglHbUxpc3RO
b2RlPFQ+ICogdCA9IFAtPnRsIDsKCVQgICAgICAgICAgICAgcmVzID0gdC0+aGQgOwoKCWlmKCB0
ID09IFAgKQoJewoJCVAgPSAwIDsKCX0KCWVsc2UKCXsKCQlQLT50bCA9IHQtPnRsIDsKCX0KCglk
ZWxldGUgdCA7CglyZXR1cm4gcmVzIDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBUPgpHbUJvb2xlYW4g
R21MaXN0PFQ+Ojpvd25zKCBHbUFueSBwICkgY29uc3QKewoJR21MaXN0Tm9kZTxUPiAqIHQgPSBQ
IDsKCglpZiggdCAhPSAwICYmIHAgIT0gMCApCgl7CgkJZG8KCQl7CgkJCWlmKCBHbUFueSh0KSA9
PSBwICkgcmV0dXJuIEdtVFJVRSA7CgkJCXQgPSB0LT50bCA7CgkJfSB3aGlsZSggdCAhPSBQICkg
OwoJfQoKCXJldHVybiBHbUZBTFNFIDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBUPgpHbUJvb2xlYW4g
R21MaXN0PFQ+Ojpvd25zKCBjb25zdCBUJiBpdGVtICkgY29uc3QKewoJR21MaXN0Tm9kZTxUPiog
dCA9IFAgOwoKCWlmKCB0ID09IDAgKQoJewoJCXJldHVybiBHbUZBTFNFIDsKCX0KCglkbwoJewoJ
CWlmKCB0LT5oZCA9PSBpdGVtICkKCQl7CgkJCXJldHVybiBHbVRSVUUgOwoJCX0KCQl0ID0gdC0+
dGwgOwoKCX0gd2hpbGUoIHQgIT0gUCApIDsKCglyZXR1cm4gR21GQUxTRSA7Cn0KCgp0ZW1wbGF0
ZSA8Y2xhc3MgVD4KVCYgR21MaXN0PFQ+OjpoZWFkKCkgY29uc3QKewoJaWYoIFAgPT0gMCApCgl7
CgkJR21GYXRhbEVycm9yKCAiVCYgR21MaXN0PFQ+OjpoZWFkKCkiLCAiRW1wdHkgbGlzdCIgKSA7
Cgl9CgoJcmV0dXJuIFAtPnRsLT5oZCA7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KVCYgR21MaXN0
PFQ+Ojp0YWlsKCkgY29uc3QKewoJaWYoIFAgPT0gMCApCgl7CgkJR21GYXRhbEVycm9yKCAiVCYg
R21MaXN0PFQ+Ojp0YWlsKCkiLCAiRW1wdHkgbGlzdCIgKSA7Cgl9CgoJcmV0dXJuIFAtPmhkIDsK
fQoKCnRlbXBsYXRlIDxjbGFzcyBUPgpHbUFueSBHbUxpc3Q8VD46Omluc2VydEFmdGVyKCBHbUFu
eSBwLCBjb25zdCBUJiBpdGVtICkKewoJR21MaXN0Tm9kZTxUPiAqIHUgPSAoR21MaXN0Tm9kZTxU
PiopcCA7CglHbUxpc3ROb2RlPFQ+ICogdCA9IG5ldyBHbUxpc3ROb2RlPFQ+KCBpdGVtICkgOwoK
CWlmKCBQID09IDAgKQoJewoJCXQtPnRsID0gUCA9IHQgOwoJfQoJZWxzZSBpZiAoIHUgPT0gMCAp
Cgl7CgkJLy8gaW5zZXJ0QWZ0ZXIgMCBtZWFucyBwcmVwZW5kCgkJdC0+dGwgPSBQLT50bCA7CgkJ
UC0+dGwgPSB0IDsKCX0KCWVsc2UKCXsKCQl0LT50bCA9IHUtPnRsIDsKCQl1LT50bCA9IHQgOwoJ
CWlmKCB1ID09IFAgKSBQID0gdCA7Cgl9CgoJcmV0dXJuIEdtQW55KCB0ICkgOwp9CgoKdGVtcGxh
dGUgPGNsYXNzIFQ+CnZvaWQgR21MaXN0PFQ+OjpzdWJzdGl0dXRlKCBHbUFueSBwLCBjb25zdCBU
JiBpdGVtICkKewoJaWYoIHAgPT0gMCApCgl7CgkJR21FcnJvcigKCQkJInZvaWQgR21MaXN0PFQ+
OjpzdWJzdGl0dXRlKCBHbUFueSBwLCBjb25zdCBUJiBpdGVtICkiLAoJCQkiTnVsbCBpdGVyYXRv
ciBwIiApIDsKCQlyZXR1cm4gOwoJfQoKCUdtTGlzdE5vZGU8VD4gKiB1ID0gKEdtTGlzdE5vZGU8
VD4qKXAgOwoKCXUtPmhkID0gaXRlbSA7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kdm9pZCBHbUxp
c3Q8VD46OnJlbW92ZUFmdGVyKCBHbUFueSBwICkKewoJR21MaXN0Tm9kZTxUPiAqIHUgPSAoR21M
aXN0Tm9kZTxUPiopcCA7CgoJLy8gY2Fubm90IGRlbF9hZnRlciBsYXN0CglpZiggUCA9PSAwICkK
CXsKCQlHbUVycm9yKAoJCQkidm9pZCBHbUxpc3Q8VD46OnJlbW92ZUFmdGVyKCBHbUFueSBwICki
LAoJCQkiRW1wdHkgbGlzdCIgKSA7CgkJcmV0dXJuIDsKCX0KCglpZiggdSA9PSBQICkKCXsKCQlH
bUVycm9yKAoJCQkidm9pZCBHbUxpc3Q8VD46OnJlbW92ZUFmdGVyKCBHbUFueSBwICkiLAoJCQki
Q2FuJ3QgcmVtb3ZlIGFmdGVyIGxpc3QgaXRlbSIgKSA7CgkJcmV0dXJuIDsKCX0KCglpZiggdSA9
PSAwICkgdSA9IFAgOyAvLyBkZWxfYWZ0ZXIgMCBtZWFucyBkZWxldGUgZmlyc3QKCUdtTGlzdE5v
ZGU8VD4gKiB0ID0gdS0+dGwgOwoJaWYoIHUgPT0gdCApCgl7CgkJUCA9IDAgOwoJfQoJZWxzZQoJ
ewoJCXUtPnRsID0gdC0+dGwgOwoJCWlmKCBQID09IHQgKSBQID0gdSA7Cgl9CgoJZGVsZXRlIHQg
Owp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CnZvaWQgR21MaXN0PFQ+OjpyZW1vdmUoIGNvbnN0IFQm
IGl0ZW0gKQp7CglpZiggUCA9PSAwICkKCXsKCQlHbUVycm9yKAoJCQkidm9pZCBHbUxpc3Q8VD46
OnJlbW92ZSggY29uc3QgVCYgaXRlbSApIiwKCQkJIkVtcHR5IGxpc3QiICkgOwoJCXJldHVybiA7
Cgl9CgoJR21MaXN0Tm9kZTxUPiAqIHQgPSBQLT50bCA7IC8vIGZpcnN0CglHbUxpc3ROb2RlPFQ+
ICogcCA9IDAgOyAvLyBwcmV2aW91cyBub2RlCgoJZG8KCXsKCQlpZiggdC0+aGQgPT0gaXRlbSAp
IGJyZWFrIDsgLy8gZm91bmQKCQlwID0gdCA7CgkJdCA9IHQtPnRsIDsKCX0gd2hpbGUoIHQgIT0g
UCApIDsKCglpZiggdC0+aGQgIT0gaXRlbSApCgl7CgkJR21FcnJvcigKCQkJInZvaWQgR21MaXN0
PFQ+OjpyZW1vdmUoIGNvbnN0IFQmIGl0ZW0gKSIsCgkJCSJVbmFibGUgdG8gZm91bmQgaXRlbSIg
KSA7CgkJcmV0dXJuIDsgLy8gbm90IGZvdW5kCgl9CgoJcmVtb3ZlQWZ0ZXIoIEdtQW55KHApICkg
Owp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CnZvaWQgR21MaXN0PFQ+OjpyZXZlcnNlKCkKewoJaWYo
IFAgPT0gMCApCgl7CgkJcmV0dXJuIDsgLy8gZW1wdHkgbGlzdAoJfQoKCUdtTGlzdE5vZGU8VD4g
KiBsID0gUCA7CglHbUxpc3ROb2RlPFQ+ICogcCA9IFAtPnRsIDsgCglHbUxpc3ROb2RlPFQ+ICog
bmV3X2xhc3QgPSBwIDsgCgoJd2hpbGUoIHAgIT0gUCApCgl7CgkJR21MaXN0Tm9kZTxUPiAqIG54
dCA9IHAtPnRsIDsKCQlwLT50bCA9IGwgOwoJCWwgPSBwIDsKCQlwID0gbnh0IDsKCX0KCVAtPnRs
ID0gbCA7CgoJUCA9IG5ld19sYXN0IDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBUPgp2b2lkIEdtTGlz
dDxUPjo6c29ydCggR21Cb29sZWFuICgqc29ydF9wcm9jKSggVCYsIFQmICkgKQp7CglHbUxpc3Q8
VD4gc29ydGVkIDsKCglpZiggaXNFbXB0eSgpICkgcmV0dXJuIDsKCgkvLyBsZSBwcmVtaWVyIGVs
ZW1lbnQgYXBwYXJ0aWVudCBmb3JjZW1lbnQgYSBsYSBsaXN0ZSB0cmllZS4KCglzb3J0ZWQuYXBw
ZW5kKCBoZWFkKCkgKSA7CglHbUFueSBpID0gZmlyc3QoKSA7CgoJZm9yKCBuZXh0KCBpICkgOyBp
IT0wIDsgbmV4dCggaSApICkKCXsKCQlUIHRvX3NvcnQgPSAoKnRoaXMpKGkpIDsKCgkJR21Bbnkg
aiwgal9wcmV2PTAgOwoJCS8vIHJlY2hlcmNoZSBkdSAxZXIgZWxlbWVudCBzdXBlcmlldXIgYSBs
J2l0ZW0gYSBjbGFzc2VyLgoJCWZvciggaj1zb3J0ZWQuZmlyc3QoKSA7IGohPTAgOyBzb3J0ZWQu
bmV4dCggaiApICkKCQl7CgkJCWlmKCAoKnNvcnRfcHJvYykoIHRvX3NvcnQsIHNvcnRlZCggaiAp
ICkgKSBicmVhayA7CgkJCWpfcHJldiA9IGogOwoJCX0KCQkvLyBqX3ByZXYgPSAwIGNvcnJlc3Bv
bmQgYSB1biBwcmVwZW5kLgoJCS8vIHNpIGogPT0gMCwgal9wcmV2IHBvaW50ZSBzdXIgbGUgZGVy
bmllciBlbHQgZGUgc29ydGVkLgoJCXNvcnRlZC5pbnNlcnRBZnRlciggal9wcmV2LCB0b19zb3J0
ICkgOwoJfQoKCWNsZWFyKCkgOwoJYXBwZW5kKCBzb3J0ZWQgKSA7Cn0KCgoKY2xhc3MgR21Xb3Jr
U2Vzc2lvbkhpc3RvcnlMb2c7CgplbnVtIEdtV29ya1Nlc3Npb25TdGF0ZQp7CglHbVdTX0lETEUs
CglHbVdTX1dPUktJTkcKfTsKCmNsYXNzIEdtV29ya1Nlc3Npb24gewpwdWJsaWMgOgoJR21Xb3Jr
U2Vzc2lvbigpOwoJdmlydHVhbCB+R21Xb3JrU2Vzc2lvbigpOwoKCXZpcnR1YWwgdm9pZAkJCWFk
ZEhpc3RvcnlMb2coIEdtV29ya1Nlc3Npb25IaXN0b3J5TG9nJik7Cgpwcm90ZWN0ZWQgOgoJR21X
b3JrU2Vzc2lvblN0YXRlCQkJc3RhdGVfOwoJR21MaXN0PEdtV29ya1Nlc3Npb25IaXN0b3J5TG9n
Kj4JaGlzdG9yeV9sb2dzXzsKCnByaXZhdGUgOgp9OwoKY2xhc3MgR21Xb3JrU2Vzc2lvbjsKY2xh
c3MgR21Xb3JrU2Vzc2lvbkV2ZW50OwoKY2xhc3MgR21Xb3JrU2Vzc2lvbkhpc3RvcnlMb2cKewpw
dWJsaWMgOgoJR21Xb3JrU2Vzc2lvbkhpc3RvcnlMb2coIEdtV29ya1Nlc3Npb24mIHdvcmtfc2Vz
c2lvbik7Cgl2aXJ0dWFsIH5HbVdvcmtTZXNzaW9uSGlzdG9yeUxvZygpOwoKCXZpcnR1YWwgdm9p
ZAkJCXJlY29yZCggR21Xb3JrU2Vzc2lvbkV2ZW50JiB3X3NfZXZlbnQgKTsKCnByaXZhdGUgOgoJ
R21MaXN0PEdtV29ya1Nlc3Npb25FdmVudCo+CXdvcmtfc2Vzc2lvbl9ldmVudHNfOwoJR21Xb3Jr
U2Vzc2lvbiYJCQl3b3JrX3Nlc3Npb25fOwp9OwoKR21Xb3JrU2Vzc2lvbjo6R21Xb3JrU2Vzc2lv
bigpCnsKCXN0YXRlXyA9IEdtV1NfSURMRTsKfQoKR21Xb3JrU2Vzc2lvbjo6fkdtV29ya1Nlc3Np
b24oKQp7Cn0KCnZvaWQgR21Xb3JrU2Vzc2lvbjo6YWRkSGlzdG9yeUxvZyggR21Xb3JrU2Vzc2lv
bkhpc3RvcnlMb2cmIHdfc19oaXN0X2xvZyApCi8qCglQdXJwb3NlIDogQWpvdXQgZCd1biBoaXN0
b3lfbG9nLgoqLwp7CgloaXN0b3J5X2xvZ3NfLmFwcGVuZCggJndfc19oaXN0X2xvZyApOwp9Cg==

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