java/1464: Failure to compile try/finally?
gback@cs.utah.edu
gback@cs.utah.edu
Wed Dec 20 12:28:00 GMT 2000
>Number: 1464
>Category: java
>Synopsis: Failure to compile try/finally?
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: apbianco
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Dec 20 12:20:18 PST 2000
>Closed-Date: Tue Mar 07 14:17:48 PST 2000
>Last-Modified: Tue Mar 7 14:20:00 PST 2000
>Originator: Godmar Back
>Release: CVS October
>Organization:
>Environment:
Linux
>Description:
An old problem I've mentioned in April still hasn't been
fixed.
The following program produces incorrect results when
compiled from the java source.
It works when compiled from a .class file generated by
say jikes.
Sun's JDK executes the .class file generated by gcj -C.
gcj cannot compile the .class file it generates with -C.
>How-To-Repeat:
/*
* test that caught null pointers exceptions in finalizers work correctly
* and that local variables are accessible in null pointer exception handlers.
*/
import java.io.*;
public class NullPointerTest {
static String s;
public static void main(String[] args) {
System.out.println(tryfinally() + s);
}
public static String tryfinally() {
String yuck = null;
String local_s = null;
try {
return "This is ";
} finally {
try {
local_s = "Perfect";
/* trigger null pointer exception */
String x = yuck.toLowerCase();
} catch (Exception _) {
/*
* when the null pointer exception is caught, we must still
* be able to access local_s.
* Our return address for the finally clause must also still
* be intact.
*/
s = local_s;
}
}
}
}
/* Expected Output:
This is Perfect
*/
>Fix:
There is a new patch (attachment `patch-2')
>Release-Note:
This is the comple patch. With this one, you should be
able to recompile libgcj.
>Audit-Trail:
Formerly PR gcj/83
From: Alexandre Petit-Bianco <apbianco@cygnus.com>
To: gback@cs.utah.edu
Cc: java-gnats@sourceware.cygnus.com
Subject: Re: gcj/83: Failure to compile try/finally?
Date: Fri, 18 Feb 2000 16:23:37 -0800 (PST)
gback@cs.utah.edu writes:
> The following program produces incorrect results when
> compiled from the java source.
> ...
> gcj cannot compile the .class file it generates with -C.
This PR actually exposes two problems. The first one has to do with
gcj not enforcing a correct order of evaluation for something like:
foo (a+b);
With `a' and `b' being of type String or returning something of type
String.
`b' is currently evaluated before `a', if `a' modifies `b', its new
value won't be used to construct the string. I believe this is fixed
with the patch below.
The second problem is a gcj verifier problem. I think we should file a
second PR with it.
On thing. I tried to rebuild libgcj with the patch, and I think it
exposes an other problem in check_init (I might have a patch for
that.) So, before I get a definite answer, I'm not checking anything
in.
Here's the patch to fix the order of evaluation problem. I'm filing an
other PR for the gcj's generated class to native.
./A
Fri Feb 18 16:18:04 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (patch_string): Call force_evaluation_order on the
completed string concatenation tree.
* expr.c (force_evaluation_order): Call force_evaluation_order on
function's arguments too.
Index: parse.y
===================================================================
RCS file: /cvs/gcc/egcs/gcc/java/parse.y,v
retrieving revision 1.135
diff -u -p -r1.135 parse.y
--- parse.y 2000/02/15 22:54:21 1.135
+++ parse.y 2000/02/19 00:19:06
@@ -10272,6 +10272,8 @@ patch_string (node)
/* Temporary disable forbid the use of `this'. */
ctxp->explicit_constructor_p = 0;
ret = java_complete_tree (make_qualified_primary (node, invoke, 0));
+ /* String concatenation arguments must be evaluated in order too. */
+ ret = force_evaluation_order (ret);
/* Restore it at its previous value */
ctxp->explicit_constructor_p = saved;
return ret;
Index: expr.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/java/expr.c,v
retrieving revision 1.59
diff -u -p -r1.59 expr.c
--- expr.c 2000/02/18 18:17:37 1.59
+++ expr.c 2000/02/19 00:19:06
@@ -2694,7 +2694,7 @@ force_evaluation_order (node)
for (cmp = NULL_TREE, arg = TREE_OPERAND (node, 1);
arg; arg = TREE_CHAIN (arg))
{
- tree saved = save_expr (TREE_VALUE (arg));
+ tree saved = save_expr (force_evaluation_order (TREE_VALUE (arg)));
cmp = (cmp == NULL_TREE ? saved :
build (COMPOUND_EXPR, void_type_node, cmp, saved));
TREE_VALUE (arg) = saved;
State-Changed-From-To: open->feedback
State-Changed-By: apbianco
State-Changed-When: Fri Feb 18 16:33:29 2000
State-Changed-Why:
There is a patch available.
From: apbianco@cygnus.com
To: apbianco@cygnus.com, gback@cs.utah.edu, java-gnats@sourceware.cygnus.com
Cc:
Subject: Re: gcj/83
Date: 19 Feb 2000 00:33:29 -0000
Synopsis: Failure to compile try/finally?
State-Changed-From-To: open->feedback
State-Changed-By: apbianco
State-Changed-When: Fri Feb 18 16:33:29 2000
State-Changed-Why:
There is a patch available.
http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=83&database=java
From: Alexandre Petit-Bianco <apbianco@cygnus.com>
To: java-gnats@sourceware.cygnus.com
Cc:
Subject: Re: gcj/83
Date: Mon, 21 Feb 2000 18:52:22 -0800 (PST)
apbianco@cygnus.com writes:
> There is a patch available.
There is a new patch available.
./A
State-Changed-From-To: feedback->closed
State-Changed-By: apbianco
State-Changed-When: Tue Mar 7 14:17:48 2000
State-Changed-Why:
I checked in a patch to fix the PR. On the egcs-patches
mailing list, I wrote `PR #108' but I really meant `PR #83'.
I corrected my mistake in a follow-up:
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00228.html
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00229.html
From: apbianco@cygnus.com
To: apbianco@cygnus.com, gback@cs.utah.edu, java-gnats@sourceware.cygnus.com
Cc:
Subject: Re: gcj/83
Date: 7 Mar 2000 22:17:48 -0000
Synopsis: Failure to compile try/finally?
State-Changed-From-To: feedback->closed
State-Changed-By: apbianco
State-Changed-When: Tue Mar 7 14:17:48 2000
State-Changed-Why:
I checked in a patch to fix the PR. On the egcs-patches
mailing list, I wrote `PR #108' but I really meant `PR #83'.
I corrected my mistake in a follow-up:
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00228.html
http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00229.html
http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=83&database=java
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="patch-1"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch-1"
RnJpIEZlYiAxOCAxNjoxODowNCAyMDAwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFu
Y29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX3N0cmluZyk6IENhbGwgZm9yY2VfZXZh
bHVhdGlvbl9vcmRlciBvbiB0aGUKIAljb21wbGV0ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24gdHJl
ZS4KCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKTogQ2FsbCBmb3JjZV9ldmFsdWF0
aW9uX29yZGVyIG9uCglmdW5jdGlvbidzIGFyZ3VtZW50cyB0b28uCgpJbmRleDogcGFyc2UueQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2djYy9qYXZhL3BhcnNlLnksdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMTM1CmRpZmYgLXUgLXAgLXIxLjEzNSBwYXJzZS55Ci0tLSBwYXJz
ZS55CTIwMDAvMDIvMTUgMjI6NTQ6MjEJMS4xMzUKKysrIHBhcnNlLnkJMjAwMC8wMi8xOSAwMDox
OTowNgpAQCAtMTAyNzIsNiArMTAyNzIsOCBAQCBwYXRjaF9zdHJpbmcgKG5vZGUpCiAgICAgICAv
KiBUZW1wb3JhcnkgZGlzYWJsZSBmb3JiaWQgdGhlIHVzZSBvZiBgdGhpcycuICovCiAgICAgICBj
dHhwLT5leHBsaWNpdF9jb25zdHJ1Y3Rvcl9wID0gMDsKICAgICAgIHJldCA9IGphdmFfY29tcGxl
dGVfdHJlZSAobWFrZV9xdWFsaWZpZWRfcHJpbWFyeSAobm9kZSwgaW52b2tlLCAwKSk7CisgICAg
ICAvKiBTdHJpbmcgY29uY2F0ZW5hdGlvbiBhcmd1bWVudHMgbXVzdCBiZSBldmFsdWF0ZWQgaW4g
b3JkZXIgdG9vLiAqLworICAgICAgcmV0ID0gZm9yY2VfZXZhbHVhdGlvbl9vcmRlciAocmV0KTsK
ICAgICAgIC8qIFJlc3RvcmUgaXQgYXQgaXRzIHByZXZpb3VzIHZhbHVlICovCiAgICAgICBjdHhw
LT5leHBsaWNpdF9jb25zdHJ1Y3Rvcl9wID0gc2F2ZWQ7CiAgICAgICByZXR1cm4gcmV0OwpJbmRl
eDogZXhwci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvZXhw
ci5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU5CmRpZmYgLXUgLXAgLXIxLjU5IGV4cHIuYwot
LS0gZXhwci5jCTIwMDAvMDIvMTggMTg6MTc6MzcJMS41OQorKysgZXhwci5jCTIwMDAvMDIvMTkg
MDA6MTk6MDYKQEAgLTI2OTQsNyArMjY5NCw3IEBAIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIgKG5v
ZGUpCiAgICAgICBmb3IgKGNtcCA9IE5VTExfVFJFRSwgYXJnID0gVFJFRV9PUEVSQU5EIChub2Rl
LCAxKTsgCiAJICAgYXJnOyBhcmcgPSBUUkVFX0NIQUlOIChhcmcpKQogCXsKLQkgIHRyZWUgc2F2
ZWQgPSBzYXZlX2V4cHIgKFRSRUVfVkFMVUUgKGFyZykpOworCSAgdHJlZSBzYXZlZCA9IHNhdmVf
ZXhwciAoZm9yY2VfZXZhbHVhdGlvbl9vcmRlciAoVFJFRV9WQUxVRSAoYXJnKSkpOwogCSAgY21w
ID0gKGNtcCA9PSBOVUxMX1RSRUUgPyBzYXZlZCA6CiAJCSBidWlsZCAoQ09NUE9VTkRfRVhQUiwg
dm9pZF90eXBlX25vZGUsIGNtcCwgc2F2ZWQpKTsKIAkgIFRSRUVfVkFMVUUgKGFyZykgPSBzYXZl
ZDsK
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="patch-2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch-2"
MjAwMC0wMi0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+
CgoJKiBqYXZhLXRyZWUuaCAoSVNfSU5JVF9DSEVDS0VEKTogTmV3IGZsYWcuCgkqIGNoZWNrLWlu
aXQuYyAoY2hlY2tfaW5pdCk6IFRlc3QgYW5kIHNldCBJU19JTklUX0NIRUNLRUQuCgkqIHBhcnNl
LnkgKHBhdGNoX3N0cmluZyk6IENhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlciBvbiB0aGUKCWNv
bXBsZXRlZCBzdHJpbmcgY29uY2F0ZW5hdGlvbiB0cmVlLgoJKiBleHByLmMgKGZvcmNlX2V2YWx1
YXRpb25fb3JkZXIpOiBDYWxsIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIgb24KCWZ1bmN0aW9uJ3Mg
YXJndW1lbnRzIHRvby4KCkluZGV4OiBjaGVjay1pbml0LmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9nY2MvZWdjcy9nY2MvamF2YS9jaGVjay1pbml0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMTcKZGlmZiAtdSAtcCAtcjEuMTcgY2hlY2staW5pdC5jCi0tLSBjaGVjay1pbml0LmMJMjAw
MC8wMS8yMSAyMDo1NzowMAkxLjE3CisrKyBjaGVjay1pbml0LmMJMjAwMC8wMi8yMiAwMjoyNzo0
NQpAQCAtNjE2LDcgKzYxNiw2IEBAIGNoZWNrX2luaXQgKGV4cCwgYmVmb3JlKQogICAgIGNhc2Ug
RklYX1RSVU5DX0VYUFI6CiAgICAgY2FzZSBJTkRJUkVDVF9SRUY6CiAgICAgY2FzZSBBRERSX0VY
UFI6Ci0gICAgY2FzZSBTQVZFX0VYUFI6CiAgICAgY2FzZSBQUkVERUNSRU1FTlRfRVhQUjoKICAg
ICBjYXNlIFBSRUlOQ1JFTUVOVF9FWFBSOgogICAgIGNhc2UgUE9TVERFQ1JFTUVOVF9FWFBSOgpA
QCAtNjI0LDYgKzYyMywxMyBAQCBjaGVja19pbml0IChleHAsIGJlZm9yZSkKICAgICBjYXNlIE5P
Tl9MVkFMVUVfRVhQUjoKICAgICBjYXNlIElOU1RBTkNFT0ZfRVhQUjoKICAgICAgIC8qIEF2b2lk
IG5lZWRsZXNzIHJlY3Vyc2lvbi4gKi8KKyAgICAgIGV4cCA9IFRSRUVfT1BFUkFORCAoZXhwLCAw
KTsKKyAgICAgIGdvdG8gYWdhaW47CisKKyAgICBjYXNlIFNBVkVfRVhQUjoKKyAgICAgIGlmIChJ
U19JTklUX0NIRUNLRUQgKGV4cCkpCisJcmV0dXJuOworICAgICAgSVNfSU5JVF9DSEVDS0VEIChl
eHApID0gMTsKICAgICAgIGV4cCA9IFRSRUVfT1BFUkFORCAoZXhwLCAwKTsKICAgICAgIGdvdG8g
YWdhaW47CiAKSW5kZXg6IGV4cHIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2Nz
L2djYy9qYXZhL2V4cHIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41OQpkaWZmIC11IC1wIC1y
MS41OSBleHByLmMKLS0tIGV4cHIuYwkyMDAwLzAyLzE4IDE4OjE3OjM3CTEuNTkKKysrIGV4cHIu
YwkyMDAwLzAyLzIyIDAyOjI3OjUxCkBAIC0yNjk0LDcgKzI2OTQsNyBAQCBmb3JjZV9ldmFsdWF0
aW9uX29yZGVyIChub2RlKQogICAgICAgZm9yIChjbXAgPSBOVUxMX1RSRUUsIGFyZyA9IFRSRUVf
T1BFUkFORCAobm9kZSwgMSk7IAogCSAgIGFyZzsgYXJnID0gVFJFRV9DSEFJTiAoYXJnKSkKIAl7
Ci0JICB0cmVlIHNhdmVkID0gc2F2ZV9leHByIChUUkVFX1ZBTFVFIChhcmcpKTsKKwkgIHRyZWUg
c2F2ZWQgPSBzYXZlX2V4cHIgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIgKFRSRUVfVkFMVUUgKGFy
ZykpKTsKIAkgIGNtcCA9IChjbXAgPT0gTlVMTF9UUkVFID8gc2F2ZWQgOgogCQkgYnVpbGQgKENP
TVBPVU5EX0VYUFIsIHZvaWRfdHlwZV9ub2RlLCBjbXAsIHNhdmVkKSk7CiAJICBUUkVFX1ZBTFVF
IChhcmcpID0gc2F2ZWQ7CkluZGV4OiBqYXZhLXRyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL2djYy9lZ2NzL2djYy9qYXZhL2phdmEtdHJlZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjUyCmRpZmYgLXUgLXAgLXIxLjUyIGphdmEtdHJlZS5oCi0tLSBqYXZhLXRyZWUuaAkyMDAwLzAy
LzA5IDE0OjA4OjQ0CTEuNTIKKysrIGphdmEtdHJlZS5oCTIwMDAvMDIvMjIgMDI6Mjc6NTMKQEAg
LTU2LDYgKzU2LDcgQEAgc3RydWN0IEpDRjsKICAgIDU6IEhBU19CRUVOX0FMUkVBRFlfUEFSU0VE
X1AgKGluIElERU5USUZJRVJfTk9ERSkKICAgICAgIElTX0JSRUFLX1NUTVRfUCAoaW4gRVhQUl9X
SVRIX0ZJTEVfTE9DQVRJT04pCiAgICAgICBJU19DUkFGVEVEX1NUUklOR19CVUZGRVJfUCAoaW4g
Q0FMTF9FWFBSKQorICAgICAgSVNfSU5JVF9DSEVDS0VEIChpbiBTQVZFX0VYUFIpCiAgICA2OiBD
QU5fQ09NUExFVEVfTk9STUFMTFkgKGluIHN0YXRlbWVudCBub2RlcykuCiAKICAgIFVzYWdlIG9m
IFRZUEVfTEFOR19GTEFHXz86CkBAIC04MzgsNiArODM5LDEwIEBAIGV4dGVybiB0cmVlICp0eXBl
X21hcDsKIAogLyogVHJ1ZSBpZiBFWFBSIChhIENBTExfRVhQUiBpbiB0aGF0IGNhc2UpIGlzIGEg
Y3JhZnRlZCBTdHJpbmdCdWZmZXIgKi8KICNkZWZpbmUgSVNfQ1JBRlRFRF9TVFJJTkdfQlVGRkVS
X1AoRVhQUikgVFJFRV9MQU5HX0ZMQUdfNSAoRVhQUikKKworLyogVHJ1ZSBpZiBFWFBSIChhIFNB
VkVfRVhQUiBpbiB0aGF0IGNhc2UpIGhhZCBpdHMgY29udGVudCBhbHJlYWR5CisgICBjaGVja2Vk
IGZvciAodW4paW5pdGlhbGl6ZWQgbG9jYWwgdmFyaWFibGVzLiAgKi8KKyNkZWZpbmUgSVNfSU5J
VF9DSEVDS0VEKEVYUFIpIFRSRUVfTEFOR19GTEFHXzUgKEVYUFIpCiAKIC8qIElmIHNldCBpbiBD
QUxMX0VYUFIsIHRoZSByZWNlaXZlciBpcyAnc3VwZXInLiAqLwogI2RlZmluZSBDQUxMX1VTSU5H
X1NVUEVSKEVYUFIpIFRSRUVfTEFOR19GTEFHXzQgKEVYUFIpCkluZGV4OiBwYXJzZS5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvcGFyc2UuYyx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xMjMKZGlmZiAtdSAtcCAtcjEuMTIzIHBhcnNlLmMKLS0tIHBhcnNlLmMJ
MjAwMC8wMi8xNSAyMjo1NDoyMAkxLjEyMworKysgcGFyc2UuYwkyMDAwLzAyLzIyIDAyOjI4OjMy
CkBAIC0xMjk2Miw2ICsxMjk2Miw4IEBAIHBhdGNoX3N0cmluZyAobm9kZSkKICAgICAgIC8qIFRl
bXBvcmFyeSBkaXNhYmxlIGZvcmJpZCB0aGUgdXNlIG9mIGB0aGlzJy4gKi8KICAgICAgIGN0eHAt
PmV4cGxpY2l0X2NvbnN0cnVjdG9yX3AgPSAwOwogICAgICAgcmV0ID0gamF2YV9jb21wbGV0ZV90
cmVlIChtYWtlX3F1YWxpZmllZF9wcmltYXJ5IChub2RlLCBpbnZva2UsIDApKTsKKyAgICAgIC8q
IFN0cmluZyBjb25jYXRlbmF0aW9uIGFyZ3VtZW50cyBtdXN0IGJlIGV2YWx1YXRlZCBpbiBvcmRl
ciB0b28uICovCisgICAgICByZXQgPSBmb3JjZV9ldmFsdWF0aW9uX29yZGVyIChyZXQpOwogICAg
ICAgLyogUmVzdG9yZSBpdCBhdCBpdHMgcHJldmlvdXMgdmFsdWUgKi8KICAgICAgIGN0eHAtPmV4
cGxpY2l0X2NvbnN0cnVjdG9yX3AgPSBzYXZlZDsKICAgICAgIHJldHVybiByZXQ7CkluZGV4OiBw
YXJzZS55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvcGFyc2Uu
eSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMzUKZGlmZiAtdSAtcCAtcjEuMTM1IHBhcnNlLnkK
LS0tIHBhcnNlLnkJMjAwMC8wMi8xNSAyMjo1NDoyMQkxLjEzNQorKysgcGFyc2UueQkyMDAwLzAy
LzIyIDAyOjI5OjAwCkBAIC0xMDI3Miw2ICsxMDI3Miw4IEBAIHBhdGNoX3N0cmluZyAobm9kZSkK
ICAgICAgIC8qIFRlbXBvcmFyeSBkaXNhYmxlIGZvcmJpZCB0aGUgdXNlIG9mIGB0aGlzJy4gKi8K
ICAgICAgIGN0eHAtPmV4cGxpY2l0X2NvbnN0cnVjdG9yX3AgPSAwOwogICAgICAgcmV0ID0gamF2
YV9jb21wbGV0ZV90cmVlIChtYWtlX3F1YWxpZmllZF9wcmltYXJ5IChub2RlLCBpbnZva2UsIDAp
KTsKKyAgICAgIC8qIFN0cmluZyBjb25jYXRlbmF0aW9uIGFyZ3VtZW50cyBtdXN0IGJlIGV2YWx1
YXRlZCBpbiBvcmRlciB0b28uICovCisgICAgICByZXQgPSBmb3JjZV9ldmFsdWF0aW9uX29yZGVy
IChyZXQpOwogICAgICAgLyogUmVzdG9yZSBpdCBhdCBpdHMgcHJldmlvdXMgdmFsdWUgKi8KICAg
ICAgIGN0eHAtPmV4cGxpY2l0X2NvbnN0cnVjdG9yX3AgPSBzYXZlZDsKICAgICAgIHJldHVybiBy
ZXQ7Cg==
More information about the Gcc-prs
mailing list