java/1114: Compiler doesn't check access modifiers on interface implementations
bryce@albatross.co.nz
bryce@albatross.co.nz
Wed Dec 20 12:06:00 GMT 2000
>Number: 1114
>Category: java
>Synopsis: Compiler doesn't check access modifiers on interface implementations
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: apbianco
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Dec 20 12:06:08 PST 2000
>Closed-Date: Mon Mar 06 22:29:12 PST 2000
>Last-Modified: Mon Mar 6 22:30:00 PST 2000
>Originator: Bryce McKinlay <bryce@albatross.co.nz>
>Release: 2.95.2
>Organization:
>Environment:
any
>Description:
Methods declared in interfaces may only be implemented by
public methods. gcj fails to check this at compile time,
and the following invalid code compiles:
>How-To-Repeat:
public interface I
{
void test();
}
public class Access implements I
{
public static void main(String args[])
{
I i = new Access();
i.test();
}
private void test() {}
}
>Fix:
Rebuild the compiler and try again on the test case.
>Release-Note:
Bryce,
This new patch incorporates the patch from Godmar you
pointed out (
http://gcc.gnu.org/ml/gcc-patches/1999-12/msg00539.html ).
I've been testing things with this patch plus your interface
dispatch patch. Once we have that in, your interface
dispatch patch will follow.
>Audit-Trail:
Formerly PR gcj/108
State-Changed-From-To: open->feedback
State-Changed-By: apbianco
State-Changed-When: Thu Mar 2 12:33:41 2000
State-Changed-Why:
There is a compiler patch available.
From: apbianco@cygnus.com
To: apbianco@cygnus.com, bryce@albatross.co.nz,
java-gnats@sourceware.cygnus.com
Cc:
Subject: Re: gcj/108
Date: 2 Mar 2000 20:33:41 -0000
Synopsis: Compiler doesn't check access modifiers on interface implementations
State-Changed-From-To: open->feedback
State-Changed-By: apbianco
State-Changed-When: Thu Mar 2 12:33:41 2000
State-Changed-Why:
There is a compiler patch available.
http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=108&database=java
State-Changed-From-To: feedback->closed
State-Changed-By: apbianco
State-Changed-When: Mon Mar 6 22:29:12 2000
State-Changed-Why:
I checked in the following patch:
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00205.html
From: apbianco@cygnus.com
To: apbianco@cygnus.com, bryce@albatross.co.nz,
java-gnats@sourceware.cygnus.com
Cc:
Subject: Re: gcj/108
Date: 7 Mar 2000 06:29:12 -0000
Synopsis: Compiler doesn't check access modifiers on interface implementations
State-Changed-From-To: feedback->closed
State-Changed-By: apbianco
State-Changed-When: Mon Mar 6 22:29:12 2000
State-Changed-Why:
I checked in the following patch:
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00205.html
http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=108&database=java
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="patch-2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch-2"
MTk5OS0wMy0wNiAgQnJ5Y2UgTWNLaW5sYXkgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCiAgICAg
ICAgKiB0eXBlY2suYyAobG9va3VwX2RvKTogU2VhcmNoIHN1cGVyaW50ZXJmYWNlcyBmaXJzdAog
ICAgICAgIHdoZW4gbG9va2luZyB1cCBhbiBpbnRlcmZhY2UgbWV0aG9kLiBGcm9tIEdvZG1hciBC
YWNrCiAgICAgICAgPGdiYWNrQGNzLnV0YWguZWR1PgoKMjAwMC0wMy0wMiAgQWxleGFuZHJlIFBl
dGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgogICAgICAgICogamF2YS10cmVlLmgg
KGxvb2t1cF9hcmd1bWVudF9tZXRob2QyKTogRGVjbGFyZWQuCiAgICAgICAgKHNhZmVfbGF5b3V0
X2NsYXNzKTogUHJvdG90eXBlIG1vdmVkIGZyb20gcGFyc2UuaC4KICAgICAgICAqIHBhcnNlLmgg
KHNhZmVfbGF5b3V0X2NsYXNzKTogUHJvdG90eXBlIG1vdmVkIHRvIGphdmEtdHJlZS5oLgogICAg
ICAgICogcGFyc2UueSAoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBMb2NhbCBgc3VwZXJf
Y2xhc3MnIGdvbmUuCiAgICAgICAgQ2FsbCBsb29rdXBfYXJndW1lbnRfbWV0aG9kMiBpbnN0ZWFk
IG9mIGxvb2t1cF9hcmd1bWVudF9tZXRob2QuCiAgICAgICAgUGVyZm9ybSBtb2RpZmllciBtYXRj
aCBmb3IgbWV0aG9kcyBmb3VuZCBkZWNsYXJlZCBpbiBpbXBsZW1lbnRlZAogICAgICAgIGludGVy
ZmFjZXMuIEZpeGVkIGluZGVudGF0aW9uIHByb2JsZW0uIE92ZXJyaWRpbmcvaGlkaW5nIGVycm9y
CiAgICAgICAgcmVwb3J0IHRvIHRha2UgcGxhY2Ugb25seSBmb3IgbWV0aG9kcyBmb3VuZCBpbiBj
bGFzc2VzLgogICAgICAgICogdHlwZWNrLmMgKGxvb2t1cF9hcmd1bWVudF9tZXRob2QpOiBDaGFu
Z2VkIGxlYWRpbmcKICAgICAgICBjb21tZW50LiBSZS13cml0dGVuIGJ5IGNhbGxpbmcgbG9va3Vw
X2RvLgogICAgICAgIChsb29rdXBfYXJndW1lbnRfbWV0aG9kMik6IE5ldyBmdW5jdGlvbi4KICAg
ICAgICAobG9va3VwX2phdmFfbWV0aG9kKTogUmUtd3JpdHRlbiBieSBjYWxsaW5nIGxvb2t1cF9k
by4KICAgICAgICAobG9va3VwX2RvKTogTmV3IGZ1bmN0aW9uLgoKSW5kZXg6IGphdmEtdHJlZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvamF2YS10cmVlLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTYKZGlmZiAtdSAtcCAtcjEuNTYgamF2YS10cmVlLmgK
LS0tIGphdmEtdHJlZS5oCTIwMDAvMDMvMDQgMjI6Mjc6MzUJMS41NgorKysgamF2YS10cmVlLmgJ
MjAwMC8wMy8wNyAwMToyMzozMwpAQCAtNTEwLDYgKzUxMCw3IEBAIGV4dGVybiB0cmVlIGxvb2t1
cF9jbGFzcyBQQVJBTVMgKCh0cmVlKSkKIGV4dGVybiB0cmVlIGxvb2t1cF9qYXZhX2NvbnN0cnVj
dG9yIFBBUkFNUyAoKHRyZWUsIHRyZWUpKTsKIGV4dGVybiB0cmVlIGxvb2t1cF9qYXZhX21ldGhv
ZCBQQVJBTVMgKCh0cmVlLCB0cmVlLCB0cmVlKSk7CiBleHRlcm4gdHJlZSBsb29rdXBfYXJndW1l
bnRfbWV0aG9kIFBBUkFNUyAoKHRyZWUsIHRyZWUsIHRyZWUpKTsKK2V4dGVybiB0cmVlIGxvb2t1
cF9hcmd1bWVudF9tZXRob2QyIFBBUkFNUyAoKHRyZWUsIHRyZWUsIHRyZWUpKTsKIGV4dGVybiB0
cmVlIHByb21vdGVfdHlwZSBQQVJBTVMgKCh0cmVlKSk7CiBleHRlcm4gdHJlZSBnZXRfY29uc3Rh
bnQgUEFSQU1TICgoc3RydWN0IEpDRiosIGludCkpOwogZXh0ZXJuIHRyZWUgZ2V0X25hbWVfY29u
c3RhbnQgUEFSQU1TICgoc3RydWN0IEpDRiosIGludCkpOwpAQCAtNjY1LDYgKzY2Niw3IEBAIGV4
dGVybiBjaGFyKiBvcGVuX2NsYXNzIFBBUkFNUyAoKGNoYXIgKiwKICMgZW5kaWYgLyogSkNGX1VT
RV9TVERJTyAqLwogI2VuZGlmCiB2b2lkIGphdmFfZGVidWdfY29udGV4dCBQQVJBTVMgKCh2b2lk
KSk7Cit2b2lkIHNhZmVfbGF5b3V0X2NsYXNzIFBBUkFNUyAoKHRyZWUpKTsKIAogZXh0ZXJuIHRy
ZWUgZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvciBQQVJBTVMgKCh0cmVlKSk7CiAKSW5kZXg6IHBh
cnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9nY2MvamF2YS9wYXJzZS5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ1CmRpZmYgLXUgLXAgLXIxLjQ1IHBhcnNlLmgKLS0t
IHBhcnNlLmgJMjAwMC8wMi8yOSAwMjozNDo0OAkxLjQ1CisrKyBwYXJzZS5oCTIwMDAvMDMvMDcg
MDE6MjM6MzMKQEAgLTY3OCw3ICs2NzgsNiBAQCBzdHJ1Y3QgcGFyc2VyX2N0eHQgewogfTsKIAog
I2lmbmRlZiBKQzFfTElURQotdm9pZCBzYWZlX2xheW91dF9jbGFzcyBQQVJBTVMgKCh0cmVlKSk7
CiB2b2lkIGphdmFfY29tcGxldGVfY2xhc3MgUEFSQU1TICgodm9pZCkpOwogdm9pZCBqYXZhX2No
ZWNrX2NpcmN1bGFyX3JlZmVyZW5jZSBQQVJBTVMgKCh2b2lkKSk7CiB2b2lkIGphdmFfZml4X2Nv
bnN0cnVjdG9ycyBQQVJBTVMgKCh2b2lkKSk7CkluZGV4OiBwYXJzZS55Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvcGFyc2UueSx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xMzYKZGlmZiAtdSAtcCAtcjEuMTM2IHBhcnNlLnkKLS0tIHBhcnNlLnkJMjAwMC8wMi8y
NiAwMjowNTozNQkxLjEzNgorKysgcGFyc2UueQkyMDAwLzAzLzA3IDAxOjIzOjMzCkBAIC00NzYy
LDcgKzQ3NjIsNyBAQCBjaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMgKGRvX2luCiAg
ICAgfQogfQogCi0vKiBDaGVjayB0aGF0IENMQVNTX0RFQ0wgc29tZWhvb3cgaW1wbGVtZW50cyBh
bGwgaW5oZXJpdGVkIGFic3RyYWN0CisvKiBDaGVjayB0aGF0IENMQVNTX0RFQ0wgc29tZWhvdyBp
bXBsZW1lbnRzIGFsbCBpbmhlcml0ZWQgYWJzdHJhY3QKICAgIG1ldGhvZHMuICAqLwogCiBzdGF0
aWMgdm9pZApAQCAtNDgwNyw3ICs0ODA3LDYgQEAgamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMg
KGNsYXNzX2RlY2wpCiAgIGludCBzYXdfY29uc3RydWN0b3IgPSAwOwogICB0cmVlIG1ldGhvZDsK
ICAgdHJlZSBjbGFzcyA9IENMQVNTX1RPX0hBTkRMRV9UWVBFIChUUkVFX1RZUEUgKGNsYXNzX2Rl
Y2wpKTsKLSAgdHJlZSBzdXBlcl9jbGFzcyA9IENMQVNTVFlQRV9TVVBFUiAoY2xhc3MpOwogICB0
cmVlIHNhdmVkX2ZvdW5kX3dmbCA9IE5VTExfVFJFRSwgZm91bmQgPSBOVUxMX1RSRUU7CiAgIHRy
ZWUgbXRocm93czsKIApAQCAtNDg1OSw3ICs0ODU4LDcgQEAgamF2YV9jaGVja19yZWd1bGFyX21l
dGhvZHMgKGNsYXNzX2RlY2wpCiAJfQogCiAgICAgICBzaWcgPSBidWlsZF9qYXZhX2FyZ3VtZW50
X3NpZ25hdHVyZSAoVFJFRV9UWVBFIChtZXRob2QpKTsKLSAgICAgIGZvdW5kID0gbG9va3VwX2Fy
Z3VtZW50X21ldGhvZCAoc3VwZXJfY2xhc3MsIERFQ0xfTkFNRSAobWV0aG9kKSwgc2lnKTsKKyAg
ICAgIGZvdW5kID0gbG9va3VwX2FyZ3VtZW50X21ldGhvZDIgKGNsYXNzLCBERUNMX05BTUUgKG1l
dGhvZCksIHNpZyk7CiAKICAgICAgIC8qIE5vdGhpbmcgb3ZlcnJpZGVzIG9yIGl0J3MgYSBwcml2
YXRlIG1ldGhvZC4gKi8KICAgICAgIGlmICghZm91bmQpCkBAIC00ODc1LDEyICs0ODc0LDI1IEBA
IGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzIChjbGFzc19kZWNsKQogICAgICAgc2F2ZWRfZm91
bmRfd2ZsID0gREVDTF9OQU1FIChmb3VuZCk7CiAgICAgICByZXNldF9tZXRob2RfbmFtZSAoZm91
bmQpOwogCisgICAgICAvKiBJZiBgZm91bmQnIGlzIGRlY2xhcmVkIGluIGFuIGludGVyZmFjZSwg
bWFrZSBzdXJlIHRoZQorCSBtb2RpZmllciBtYXRjaC4gKi8KKyAgICAgIGlmIChDTEFTU19JTlRF
UkZBQ0UgKFRZUEVfTkFNRSAoREVDTF9DT05URVhUIChmb3VuZCkpKSAKKwkgICYmIGNsaW5pdF9p
ZGVudGlmaWVyX25vZGUgIT0gREVDTF9OQU1FIChmb3VuZCkKKwkgICYmICFNRVRIT0RfUFVCTElD
IChtZXRob2QpKQorCXsKKwkgIHRyZWUgZm91bmRfZGVjbCA9IFRZUEVfTkFNRSAoREVDTF9DT05U
RVhUIChmb3VuZCkpOworCSAgcGFyc2VfZXJyb3JfY29udGV4dCAobWV0aG9kX3dmbCwgIkNsYXNz
IGAlcycgbXVzdCBvdmVycmlkZSBgJXMnIHdpdGggYSBwdWJsaWMgbWV0aG9kIGluIG9yZGVyIHRv
IGltcGxlbWVudCBpbnRlcmZhY2UgYCVzJyIsCisJCQkgICAgICAgSURFTlRJRklFUl9QT0lOVEVS
IChERUNMX05BTUUgKGNsYXNzX2RlY2wpKSwKKwkJCSAgICAgICBsYW5nX3ByaW50YWJsZV9uYW1l
IChtZXRob2QsIDApLAorCQkJICAgICAgIElERU5USUZJRVJfUE9JTlRFUiAoREVDTF9OQU1FIChm
b3VuZF9kZWNsKSkpOworCX0KKwogICAgICAgLyogQ2FuJ3Qgb3ZlcnJpZGUgYSBtZXRob2Qgd2l0
aCB0aGUgc2FtZSBuYW1lIGFuZCBkaWZmZXJlbnQgcmV0dXJuCiAJIHR5cGVzLiAqLwogICAgICAg
aWYgKFRSRUVfVFlQRSAoVFJFRV9UWVBFIChmb3VuZCkpICE9IFRSRUVfVFlQRSAoVFJFRV9UWVBF
IChtZXRob2QpKSkKIAl7Ci0JICBjaGFyICp0ID0geHN0cmR1cCAobGFuZ19wcmludGFibGVfbmFt
ZSAoVFJFRV9UWVBFIChUUkVFX1RZUEUgKGZvdW5kKSksCi0JCQkJCQkgMCkpOworCSAgY2hhciAq
dCA9IHhzdHJkdXAgCisJICAgIChsYW5nX3ByaW50YWJsZV9uYW1lIChUUkVFX1RZUEUgKFRSRUVf
VFlQRSAoZm91bmQpKSwgMCkpOwogCSAgcGFyc2VfZXJyb3JfY29udGV4dCAKIAkgICAgKG1ldGhv
ZF93ZmwsCiAJICAgICAiTWV0aG9kIGAlcycgd2FzIGRlZmluZWQgd2l0aCByZXR1cm4gdHlwZSBg
JXMnIGluIGNsYXNzIGAlcyciLCAKQEAgLTQ5NDMsMTIgKzQ5NTUsMTUgQEAgamF2YV9jaGVja19y
ZWd1bGFyX21ldGhvZHMgKGNsYXNzX2RlY2wpCiAJIC0gT3ZlcnJpZGluZy9oaWRpbmcgcHJvdGVj
dGVkIG11c3QgYmUgcHJvdGVjdGVkIG9yIHB1YmxpYwogICAgICAgICAgLSBJZiB0aGUgb3ZlcnJp
ZGVuIG9yIGhpZGRlbiBtZXRob2QgaGFzIGRlZmF1bHQgKHBhY2thZ2UpCiAgICAgICAgICAgIGFj
Y2VzcywgdGhlbiB0aGUgb3ZlcnJpZGluZyBvciBoaWRpbmcgbWV0aG9kIG11c3Qgbm90IGJlCi0g
ICAgICAgICAgIHByaXZhdGU7IG90aGVyd2lzZSwgYSBjb21waWxlLXRpbWUgZXJyb3Igb2NjdXJz
ICovCi0gICAgICBpZiAoKE1FVEhPRF9QVUJMSUMgKGZvdW5kKSAmJiAhTUVUSE9EX1BVQkxJQyAo
bWV0aG9kKSkgCi0JICB8fCAoTUVUSE9EX1BST1RFQ1RFRCAoZm91bmQpIAotCSAgICAgICYmICEo
TUVUSE9EX1BVQkxJQyAobWV0aG9kKSB8fCBNRVRIT0RfUFJPVEVDVEVEIChtZXRob2QpKSkKLQkg
IHx8ICghKGFmbGFncyAmIChBQ0NfUFVCTElDIHwgQUNDX1BSSVZBVEUgfCBBQ0NfU1RBVElDKSkK
LQkgICAgICAmJiBNRVRIT0RfUFJJVkFURSAobWV0aG9kKSkpCisgICAgICAgICAgIHByaXZhdGU7
IG90aGVyd2lzZSwgYSBjb21waWxlLXRpbWUgZXJyb3Igb2NjdXJzLiAgSWYKKyAgICAgICAgICAg
YGZvdW5kJyBiZWxvbmdzIHRvIGFuIGludGVyZmFjZSwgdGhpbmdzIGhhdmUgYmVlbiBhbHJlYWR5
CisgICAgICAgICAgIHRha2VuIGNhcmUgb2YuICAqLworICAgICAgaWYgKCFDTEFTU19JTlRFUkZB
Q0UgKFRZUEVfTkFNRSAoREVDTF9DT05URVhUIChmb3VuZCkpKQorCSAgJiYgKChNRVRIT0RfUFVC
TElDIChmb3VuZCkgJiYgIU1FVEhPRF9QVUJMSUMgKG1ldGhvZCkpCisJICAgICAgfHwgKE1FVEhP
RF9QUk9URUNURUQgKGZvdW5kKSAKKwkJICAmJiAhKE1FVEhPRF9QVUJMSUMgKG1ldGhvZCkgfHwg
TUVUSE9EX1BST1RFQ1RFRCAobWV0aG9kKSkpCisJICAgICAgfHwgKCEoYWZsYWdzICYgKEFDQ19Q
VUJMSUMgfCBBQ0NfUFJJVkFURSB8IEFDQ19TVEFUSUMpKQorCQkgICYmIE1FVEhPRF9QUklWQVRF
IChtZXRob2QpKSkpCiAJewogCSAgcGFyc2VfZXJyb3JfY29udGV4dCAKIAkgICAgKG1ldGhvZF93
ZmwsCkluZGV4OiB0eXBlY2suYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2dj
Yy9qYXZhL3R5cGVjay5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI0CmRpZmYgLXUgLXAgLXIx
LjI0IHR5cGVjay5jCi0tLSB0eXBlY2suYwkyMDAwLzAyLzI2IDE5OjU2OjIzCTEuMjQKKysrIHR5
cGVjay5jCTIwMDAvMDMvMDcgMDE6MjM6MzMKQEAgLTM3LDYgKzM3LDcgQEAgVGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiBpcyBpbmRlcGVuZAogc3RhdGljIHRyZWUgY29udmVydF9pZWVlX3Jl
YWxfdG9faW50ZWdlciBQQVJBTVMgKCh0cmVlLCB0cmVlKSk7CiBzdGF0aWMgdHJlZSBwYXJzZV9z
aWduYXR1cmVfdHlwZSBQQVJBTVMgKChjb25zdCB1bnNpZ25lZCBjaGFyICoqLAogCQkJCQkgY29u
c3QgdW5zaWduZWQgY2hhciAqKSk7CitzdGF0aWMgdHJlZSBsb29rdXBfZG8gUEFSQU1TICgodHJl
ZSwgdHJlZSwgdHJlZSwgdHJlZSwgdHJlZSAoKikodHJlZSkpKTsKIAogdHJlZSAqIHR5cGVfbWFw
OwogZXh0ZXJuIHN0cnVjdCBvYnN0YWNrIHBlcm1hbmVudF9vYnN0YWNrOwpAQCAtNzEzLDEwNiAr
NzE0LDEyOSBAQCBzZXRfamF2YV9zaWduYXR1cmUgKHR5cGUsIHNpZykKICNlbmRpZgogfQogCi0v
KiBTZWFyY2ggaW4gY2xhc3MgQ0xBUyAoYW5kIGl0cyBzdXBlcmNsYXNzZXMpIGZvciBhIG1ldGhv
ZAorLyogU2VhcmNoIGluIGNsYXNzIFNFQVJDSEVEX0NMQVNTIChhbmQgaXRzIHN1cGVyY2xhc3Nl
cykgZm9yIGEgbWV0aG9kCiAgICBtYXRjaGluZyBNRVRIT0RfTkFNRSBhbmQgYXJndW1lbnQgc2ln
bmF0dXJlIE1FVEhPRF9TSUdOQVRVUkUuCiAgICBSZXR1cm4gYSBGVU5DVElPTl9ERUNMIG9uIHN1
Y2Nlc3MsIG9yIE5VTExfVFJFRSBpZiBub25lIGZvdW5kLgotICAgKENvbnRyYXN0IGxvb2t1cF9q
YXZhX21ldGhvZCwgd2hpY2ggdGFrZXMgaW50byBhY2NvdW50IHJldHVybiB0eXBlLikgKi8KKyAg
IChDb250cmFzdCBsb29rdXBfamF2YV9tZXRob2QsIHdoaWNoIHRha2VzIGludG8gYWNjb3VudCBy
ZXR1cm4KKyAgIHR5cGUuKSAqLwogCiB0cmVlCi1sb29rdXBfYXJndW1lbnRfbWV0aG9kIChjbGFz
LCBtZXRob2RfbmFtZSwgbWV0aG9kX3NpZ25hdHVyZSkKLSAgICAgdHJlZSBjbGFzLCBtZXRob2Rf
bmFtZSwgbWV0aG9kX3NpZ25hdHVyZTsKK2xvb2t1cF9hcmd1bWVudF9tZXRob2QgKHNlYXJjaGVk
X2NsYXNzLCBtZXRob2RfbmFtZSwgbWV0aG9kX3NpZ25hdHVyZSkKKyAgICAgdHJlZSBzZWFyY2hl
ZF9jbGFzcywgbWV0aG9kX25hbWUsIG1ldGhvZF9zaWduYXR1cmU7CiB7Ci0gIHRyZWUgbWV0aG9k
OwotICB3aGlsZSAoY2xhcyAhPSBOVUxMX1RSRUUpCi0gICAgewotICAgICAgZm9yIChtZXRob2Qg
PSBUWVBFX01FVEhPRFMgKGNsYXMpOwotCSAgIG1ldGhvZCAhPSBOVUxMX1RSRUU7ICBtZXRob2Qg
PSBUUkVFX0NIQUlOIChtZXRob2QpKQotCXsKLQkgIHRyZWUgbWV0aG9kX3NpZyA9IGJ1aWxkX2ph
dmFfYXJndW1lbnRfc2lnbmF0dXJlIChUUkVFX1RZUEUgKG1ldGhvZCkpOwotCSAgdHJlZSBuYW1l
ID0gREVDTF9OQU1FIChtZXRob2QpOwotCSAgaWYgKChUUkVFX0NPREUgKG5hbWUpID09IEVYUFJf
V0lUSF9GSUxFX0xPQ0FUSU9OID8KLQkgICAgICAgRVhQUl9XRkxfTk9ERSAobmFtZSkgOiBuYW1l
KSA9PSBtZXRob2RfbmFtZSAKLQkgICAgICAmJiBtZXRob2Rfc2lnID09IG1ldGhvZF9zaWduYXR1
cmUpCi0JICAgIHJldHVybiBtZXRob2Q7Ci0JfQotICAgICAgY2xhcyA9IENMQVNTVFlQRV9TVVBF
UiAoY2xhcyk7Ci0gICAgfQotICByZXR1cm4gTlVMTF9UUkVFOworICByZXR1cm4gbG9va3VwX2Rv
IChzZWFyY2hlZF9jbGFzcywgTlVMTF9UUkVFLCBtZXRob2RfbmFtZSwgbWV0aG9kX3NpZ25hdHVy
ZSwgCisJCSAgICBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZSk7CiB9CiAKLS8qIFNlYXJj
aCBpbiBjbGFzcyBDTEFTIChhbmQgaXRzIHN1cGVyY2xhc3NlcykgZm9yIGEgbWV0aG9kCi0gICBt
YXRjaGluZyBNRVRIT0RfTkFNRSBhbmQgc2lnbmF0dXJlIE1FVEhPRF9TSUdOQVRVUkUuCi0gICBS
ZXR1cm4gYSBGVU5DVElPTl9ERUNMIG9uIHN1Y2Nlc3MsIG9yIE5VTExfVFJFRSBpZiBub25lIGZv
dW5kLgotICAgKENvbnRyYXN0IGxvb2t1cF9hcmd1bWVudF9tZXRob2QsIHdoaWNoIGlnbm9yZXMg
cmV0dXJuIHR5cGUuKSAqLworLyogU2VhcmNoIGluIGNsYXNzIFNFQVJDSEVEX0NMQVNTIChhbmQg
aXRzIHN1cGVyY2xhc3NlcyBhbmQKKyAgIGltcGxlbWVudGVkIGludGVyZmFjZXMpIGZvciBhIG1l
dGhvZCBtYXRjaGluZyBNRVRIT0RfTkFNRSBhbmQKKyAgIGFyZ3VtZW50IHNpZ25hdHVyZSBNRVRI
T0RfU0lHTkFUVVJFLiAgUmV0dXJuIGEgRlVOQ1RJT05fREVDTCBvbgorICAgc3VjY2Vzcywgb3Ig
TlVMTF9UUkVFIGlmIG5vbmUgZm91bmQuICAoQ29udHJhc3QgbG9va3VwX2phdmFfbWV0aG9kLAor
ICAgd2hpY2ggdGFrZXMgaW50byBhY2NvdW50IHJldHVybiB0eXBlLikgKi8KIAogdHJlZQotbG9v
a3VwX2phdmFfbWV0aG9kIChzZWFyY2hlZF9jbGFzcywgbWV0aG9kX25hbWUsIG1ldGhvZF9zaWdu
YXR1cmUpCitsb29rdXBfYXJndW1lbnRfbWV0aG9kMiAoc2VhcmNoZWRfY2xhc3MsIG1ldGhvZF9u
YW1lLCBtZXRob2Rfc2lnbmF0dXJlKQogICAgICB0cmVlIHNlYXJjaGVkX2NsYXNzLCBtZXRob2Rf
bmFtZSwgbWV0aG9kX3NpZ25hdHVyZTsKIHsKLSAgdHJlZSBtZXRob2Q7Ci0gIHRyZWUgY3VycmVu
dGx5X3NlYXJjaGVkID0gc2VhcmNoZWRfY2xhc3M7Ci0KLSAgd2hpbGUgKGN1cnJlbnRseV9zZWFy
Y2hlZCAhPSBOVUxMX1RSRUUpCi0gICAgewotICAgICAgZm9yIChtZXRob2QgPSBUWVBFX01FVEhP
RFMgKGN1cnJlbnRseV9zZWFyY2hlZCk7Ci0JICAgbWV0aG9kICE9IE5VTExfVFJFRTsgIG1ldGhv
ZCA9IFRSRUVfQ0hBSU4gKG1ldGhvZCkpCi0JewotCSAgdHJlZSBtZXRob2Rfc2lnID0gYnVpbGRf
amF2YV9zaWduYXR1cmUgKFRSRUVfVFlQRSAobWV0aG9kKSk7Ci0JICB0cmVlIG5hbWUgPSBERUNM
X05BTUUgKG1ldGhvZCk7CisgIHJldHVybiBsb29rdXBfZG8gKENMQVNTVFlQRV9TVVBFUiAoc2Vh
cmNoZWRfY2xhc3MpLCBzZWFyY2hlZF9jbGFzcywKKwkJICAgIG1ldGhvZF9uYW1lLCBtZXRob2Rf
c2lnbmF0dXJlLCAKKwkJICAgIGJ1aWxkX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlKTsKK30KIAot
CSAgaWYgKChUUkVFX0NPREUgKG5hbWUpID09IEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OID8KLQkg
ICAgICAgRVhQUl9XRkxfTk9ERSAobmFtZSkgOiBuYW1lKSA9PSBtZXRob2RfbmFtZQotCSAgICAg
ICYmIG1ldGhvZF9zaWcgPT0gbWV0aG9kX3NpZ25hdHVyZSkKLQkgICAgcmV0dXJuIG1ldGhvZDsK
LQl9Ci0gICAgICBjdXJyZW50bHlfc2VhcmNoZWQgPSBDTEFTU1RZUEVfU1VQRVIgKGN1cnJlbnRs
eV9zZWFyY2hlZCk7Ci0gICAgfQorLyogU2VhcmNoIGluIGNsYXNzIFNFQVJDSEVEX0NMQVNTIChh
bmQgaXRzIHN1cGVyY2xhc3NlcykgZm9yIGEgbWV0aG9kCisgICBtYXRjaGluZyBNRVRIT0RfTkFN
RSBhbmQgc2lnbmF0dXJlIE1FVEhPRF9TSUdOQVRVUkUuICBSZXR1cm4gYQorICAgRlVOQ1RJT05f
REVDTCBvbiBzdWNjZXNzLCBvciBOVUxMX1RSRUUgaWYgbm9uZSBmb3VuZC4gIChDb250cmFzdAor
ICAgbG9va3VwX2FyZ3VtZW50X21ldGhvZCwgd2hpY2ggaWdub3JlcyByZXR1cm4gdHlwZS4pIElm
CisgICBTRUFSQ0hFRF9DTEFTUyBpcyBhbiBpbnRlcmZhY2UsIHNlYXJjaCBpdCB0b28uICovCiAK
K3RyZWUKK2xvb2t1cF9qYXZhX21ldGhvZCAoc2VhcmNoZWRfY2xhc3MsIG1ldGhvZF9uYW1lLCBt
ZXRob2Rfc2lnbmF0dXJlKQorICAgICB0cmVlIHNlYXJjaGVkX2NsYXNzLCBtZXRob2RfbmFtZSwg
bWV0aG9kX3NpZ25hdHVyZTsKK3sKKyAgdHJlZSBzZWFyY2hlZF9pbnRlcmZhY2U7CisgIAogICAv
KiBJZiB0aGlzIGNsYXNzIGlzIGFuIGludGVyZmFjZSBjbGFzcywgc2VhcmNoIGl0cyBzdXBlcmlu
dGVyZmFjZXMgYXMKICAgICogd2VsbC4gIEEgc3VwZXJpbnRlcmZhY2UgaXMgbm90IGFuIGludGVy
ZmFjZSdzIHN1cGVyY2xhc3M6IGEKICAgICogc3VwZXIgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVk
IGJ5IHRoZSBpbnRlcmZhY2UuCiAgICAqLworCisgIHNlYXJjaGVkX2ludGVyZmFjZSA9IChDTEFT
U19JTlRFUkZBQ0UgKFRZUEVfTkFNRSAoc2VhcmNoZWRfY2xhc3MpKSA/CisJCQlzZWFyY2hlZF9j
bGFzcyA6IE5VTExfVFJFRSk7CisgIHJldHVybiBsb29rdXBfZG8gKHNlYXJjaGVkX2NsYXNzLCBz
ZWFyY2hlZF9pbnRlcmZhY2UsIG1ldGhvZF9uYW1lLCAKKwkJICAgIG1ldGhvZF9zaWduYXR1cmUs
IGJ1aWxkX2phdmFfc2lnbmF0dXJlKTsKK30KKworLyogU2VhcmNoIGluIGNsYXNzIFNFQVJDSEVE
X0NMQVNTIChhbiBpdHMgc3VwZXJjbGFzc2VzKSBmb3IgYSBtZXRob2QKKyAgIG1hdGNoaW5nIE1F
VEhPRF9OQU1FIGFuZCBzaWduYXR1cmUgU0lHTkFUVVJFLiAgQWxzbyBzZWFyY2ggaW4KKyAgIFNF
QVJDSEVEX0lOVEVSRkFDRSAoYW4gaXRzIHN1cGVyaW50ZXJmYWNlcykgZm9yIGEgc2ltaWxhciBt
YXRjaC4KKyAgIFJldHVybiB0aGUgbWF0Y2hlZCBtZXRob2QgREVDTCBvciBOVUxMX1RSRUUuICBT
SUdOQVRVUkVfQlVJTERFUiBpcworICAgdXNlZCBvbiBtZXRob2QgY2FuZGlkYXRlcyB0byBidWls
ZCB0aGVpciAoc29tZXRpbWVzIHBhcnRpYWwpCisgICBzaWduYXR1cmUuICAqLwogCi0gIGN1cnJl
bnRseV9zZWFyY2hlZCA9IHNlYXJjaGVkX2NsYXNzOwotICBpZiAoQ0xBU1NfSU5URVJGQUNFIChU
WVBFX05BTUUgKGN1cnJlbnRseV9zZWFyY2hlZCkpKQorc3RhdGljIHRyZWUKK2xvb2t1cF9kbyAo
c2VhcmNoZWRfY2xhc3MsIHNlYXJjaGVkX2ludGVyZmFjZSwgbWV0aG9kX25hbWUsIHNpZ25hdHVy
ZSwgc2lnbmF0dXJlX2J1aWxkZXIpCisgICAgIHRyZWUgc2VhcmNoZWRfY2xhc3MsIHNlYXJjaGVk
X2ludGVyZmFjZSwgbWV0aG9kX25hbWUsIHNpZ25hdHVyZTsKKyAgICAgdHJlZSAoKnNpZ25hdHVy
ZV9idWlsZGVyKSBQQVJBTVMgKCh0cmVlKSk7Cit7CisgIHRyZWUgbWV0aG9kOworICAKKyAgaWYg
KHNlYXJjaGVkX2ludGVyZmFjZSkKICAgICB7CiAgICAgICBpbnQgaTsKICAgICAgIGludCBpbnRl
cmZhY2VfbGVuID0gCi0JVFJFRV9WRUNfTEVOR1RIIChUWVBFX0JJTkZPX0JBU0VUWVBFUyAoY3Vy
cmVudGx5X3NlYXJjaGVkKSkgLSAxOworCVRSRUVfVkVDX0xFTkdUSCAoVFlQRV9CSU5GT19CQVNF
VFlQRVMgKHNlYXJjaGVkX2ludGVyZmFjZSkpIC0gMTsKIAogICAgICAgZm9yIChpID0gaW50ZXJm
YWNlX2xlbjsgaSA+IDA7IGktLSkKICAgICAgICB7CiAgICAgICAgICB0cmVlIGNoaWxkID0gCi0J
ICAgVFJFRV9WRUNfRUxUIChUWVBFX0JJTkZPX0JBU0VUWVBFUyAoY3VycmVudGx5X3NlYXJjaGVk
KSwgaSk7CisJICAgVFJFRV9WRUNfRUxUIChUWVBFX0JJTkZPX0JBU0VUWVBFUyAoc2VhcmNoZWRf
aW50ZXJmYWNlKSwgaSk7CiAgICAgICAgICB0cmVlIGljbGFzcyA9IEJJTkZPX1RZUEUgKGNoaWxk
KTsKIAogICAgICAgICAgLyogSWYgdGhlIHN1cGVyaW50ZXJmYWNlIGhhc24ndCBiZWVuIGxvYWRl
ZCB5ZXQsIGRvIHNvIG5vdy4gICovCi0gICAgICAgICBpZiAoISBDTEFTU19MT0FERURfUCAoaWNs
YXNzKSkKLSAgICAgICAgICAgbG9hZF9jbGFzcyAoaWNsYXNzLCAxKTsKKwkgaWYgKENMQVNTX0ZS
T01fU09VUkNFX1AgKGljbGFzcykpCisJICAgc2FmZV9sYXlvdXRfY2xhc3MgKGljbGFzcyk7CisJ
IGVsc2UgaWYgKCFDTEFTU19MT0FERURfUCAoaWNsYXNzKSkKKwkgICBsb2FkX2NsYXNzIChpY2xh
c3MsIDEpOwogCiAgICAgICAgICBmb3IgKG1ldGhvZCA9IFRZUEVfTUVUSE9EUyAoaWNsYXNzKTsK
ICAgICAgICAgICAgICAgbWV0aG9kICE9IE5VTExfVFJFRTsgIG1ldGhvZCA9IFRSRUVfQ0hBSU4g
KG1ldGhvZCkpCiAgICAgICAgICAgIHsKLSAgICAgICAgICAgICB0cmVlIG1ldGhvZF9zaWcgPSBi
dWlsZF9qYXZhX3NpZ25hdHVyZSAoVFJFRV9UWVBFIChtZXRob2QpKTsKKyAgICAgICAgICAgICB0
cmVlIG1ldGhvZF9zaWcgPSAoKnNpZ25hdHVyZV9idWlsZGVyKSAoVFJFRV9UWVBFIChtZXRob2Qp
KTsKIAkgICAgIHRyZWUgbmFtZSA9IERFQ0xfTkFNRSAobWV0aG9kKTsKIAogCSAgICAgaWYgKChU
UkVFX0NPREUgKG5hbWUpID09IEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OID8KIAkJICBFWFBSX1dG
TF9OT0RFIChuYW1lKSA6IG5hbWUpID09IG1ldGhvZF9uYW1lCi0JCSAmJiBtZXRob2Rfc2lnID09
IG1ldGhvZF9zaWduYXR1cmUpCisJCSAmJiBtZXRob2Rfc2lnID09IHNpZ25hdHVyZSkKICAgICAg
ICAgICAgICAgIHJldHVybiBtZXRob2Q7CiAgICAgICAgICAgIH0KIAogICAgICAgICAgLyogaXQg
Y291bGQgYmUgZGVmaW5lZCBpbiBhIHN1cGVyc3VwZXJpbnRlcmZhY2UgKi8KICAgICAgICAgIGlm
IChDTEFTU19JTlRFUkZBQ0UgKFRZUEVfTkFNRSAoaWNsYXNzKSkpCiAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICBtZXRob2QgPSBsb29rdXBfamF2YV9tZXRob2QgKGljbGFzcywgCi0JCQkJCSAg
bWV0aG9kX25hbWUsIAotCQkJCQkgIG1ldGhvZF9zaWduYXR1cmUpOworICAgICAgICAgICAgIG1l
dGhvZCA9IGxvb2t1cF9kbyAoaWNsYXNzLCBpY2xhc3MsIG1ldGhvZF9uYW1lLCAKKwkJCQkgc2ln
bmF0dXJlLCBzaWduYXR1cmVfYnVpbGRlcik7CiAgICAgICAgICAgICAgaWYgKG1ldGhvZCAhPSBO
VUxMX1RSRUUpIAogCSAgICAgICByZXR1cm4gbWV0aG9kOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgIH0KKworICB3aGlsZSAoc2VhcmNoZWRfY2xhc3MgIT0gTlVMTF9UUkVFKQorICAgIHsK
KyAgICAgIGZvciAobWV0aG9kID0gVFlQRV9NRVRIT0RTIChzZWFyY2hlZF9jbGFzcyk7CisJICAg
bWV0aG9kICE9IE5VTExfVFJFRTsgIG1ldGhvZCA9IFRSRUVfQ0hBSU4gKG1ldGhvZCkpCisJewor
CSAgdHJlZSBtZXRob2Rfc2lnID0gKCpzaWduYXR1cmVfYnVpbGRlcikgKFRSRUVfVFlQRSAobWV0
aG9kKSk7CisJICB0cmVlIG5hbWUgPSBERUNMX05BTUUgKG1ldGhvZCk7CisKKwkgIGlmICgoVFJF
RV9DT0RFIChuYW1lKSA9PSBFWFBSX1dJVEhfRklMRV9MT0NBVElPTiA/CisJICAgICAgIEVYUFJf
V0ZMX05PREUgKG5hbWUpIDogbmFtZSkgPT0gbWV0aG9kX25hbWUKKwkgICAgICAmJiBtZXRob2Rf
c2lnID09IHNpZ25hdHVyZSkKKwkgICAgcmV0dXJuIG1ldGhvZDsKKwl9CisgICAgICBzZWFyY2hl
ZF9jbGFzcyA9IENMQVNTVFlQRV9TVVBFUiAoc2VhcmNoZWRfY2xhc3MpOworICAgIH0KKwogICBy
ZXR1cm4gTlVMTF9UUkVFOwogfQogCg==
More information about the Gcc-prs
mailing list