From 1b6d342ee8adef6fef52f76be20dc6e4d39f6938 Mon Sep 17 00:00:00 2001
From: gary <gary@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 15 Jan 2007 10:25:38 +0000
Subject: [PATCH] 2007-01-15  Gary Benson  <gbenson@redhat.com>

	* java/net/URLClassLoader.java: Removed.
	* gnu/java/net/loader/Load_gcjlib.java: New file.
	* gnu/gcj/runtime/BootClassLoader.java: Ensure core
	URL handler is present in static executables.
	* sources.am, Makefile.in: Rebuilt.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120791 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog                             |    8 +
 libjava/Makefile.in                           |    3 +-
 .../lib/gnu/gcj/runtime/BootClassLoader.class |  Bin 1561 -> 1706 bytes
 .../net/loader/Load_gcjlib$SoResource.class   |  Bin 0 -> 1102 bytes
 .../lib/gnu/java/net/loader/Load_gcjlib.class |  Bin 0 -> 1645 bytes
 .../lib/java/net/URLClassLoader$1.class       |  Bin 1022 -> 1022 bytes
 .../lib/java/net/URLClassLoader$2.class       |  Bin 908 -> 908 bytes
 .../net/URLClassLoader$CoreResource.class     |  Bin 1826 -> 0 bytes
 .../net/URLClassLoader$CoreURLLoader.class    |  Bin 1344 -> 0 bytes
 .../net/URLClassLoader$FileResource.class     |  Bin 1739 -> 0 bytes
 .../net/URLClassLoader$FileURLLoader.class    |  Bin 1278 -> 0 bytes
 .../net/URLClassLoader$JarURLLoader.class     |  Bin 3418 -> 0 bytes
 .../net/URLClassLoader$JarURLResource.class   |  Bin 2202 -> 0 bytes
 .../net/URLClassLoader$RemoteResource.class   |  Bin 1152 -> 0 bytes
 .../net/URLClassLoader$RemoteURLLoader.class  |  Bin 1724 -> 0 bytes
 .../java/net/URLClassLoader$Resource.class    |  Bin 1217 -> 0 bytes
 .../java/net/URLClassLoader$SoResource.class  |  Bin 1097 -> 0 bytes
 .../java/net/URLClassLoader$SoURLLoader.class |  Bin 1625 -> 0 bytes
 .../java/net/URLClassLoader$URLLoader.class   |  Bin 1354 -> 0 bytes
 .../lib/java/net/URLClassLoader.class         |  Bin 14234 -> 14476 bytes
 libjava/gnu/gcj/runtime/BootClassLoader.h     |    3 +
 libjava/gnu/gcj/runtime/BootClassLoader.java  |    8 +-
 .../java/net/loader/Load_gcjlib$SoResource.h  |   50 +
 libjava/gnu/java/net/loader/Load_gcjlib.h     |   58 +
 libjava/gnu/java/net/loader/Load_gcjlib.java  |   77 +
 libjava/java/net/URLClassLoader.h             |   25 +-
 libjava/java/net/URLClassLoader.java          | 1448 -----------------
 libjava/sources.am                            |    3 +-
 28 files changed, 224 insertions(+), 1459 deletions(-)
 create mode 100644 libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib$SoResource.class
 create mode 100644 libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$CoreResource.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$CoreURLLoader.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$FileResource.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$FileURLLoader.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$JarURLLoader.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$JarURLResource.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$RemoteResource.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$RemoteURLLoader.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$Resource.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$SoResource.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$SoURLLoader.class
 delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$URLLoader.class
 create mode 100644 libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h
 create mode 100644 libjava/gnu/java/net/loader/Load_gcjlib.h
 create mode 100644 libjava/gnu/java/net/loader/Load_gcjlib.java
 delete mode 100644 libjava/java/net/URLClassLoader.java

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index af4a1a7cfbae..ad6c1fba4ef3 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,11 @@
+2007-01-15  Gary Benson  <gbenson@redhat.com>
+
+	* java/net/URLClassLoader.java: Removed.
+	* gnu/java/net/loader/Load_gcjlib.java: New file.
+	* gnu/gcj/runtime/BootClassLoader.java: Ensure core
+	URL handler is present in static executables.
+	* sources.am, Makefile.in: Rebuilt.
+
 2007-01-14  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* Makefile.am (libgcj_la_LDFLAGS): Add
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index 0f052e67b9d3..e03542934f2b 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -1922,6 +1922,7 @@ classpath/gnu/java/net/loader/FileResource.java \
 classpath/gnu/java/net/loader/FileURLLoader.java \
 classpath/gnu/java/net/loader/JarURLLoader.java \
 classpath/gnu/java/net/loader/JarURLResource.java \
+gnu/java/net/loader/Load_gcjlib.java \
 classpath/gnu/java/net/loader/RemoteResource.java \
 classpath/gnu/java/net/loader/RemoteURLLoader.java \
 classpath/gnu/java/net/loader/Resource.java \
@@ -4402,7 +4403,7 @@ classpath/java/net/SocketTimeoutException.java \
 classpath/java/net/URI.java \
 classpath/java/net/URISyntaxException.java \
 classpath/java/net/URL.java \
-java/net/URLClassLoader.java \
+classpath/java/net/URLClassLoader.java \
 classpath/java/net/URLConnection.java \
 classpath/java/net/URLDecoder.java \
 classpath/java/net/URLEncoder.java \
diff --git a/libjava/classpath/lib/gnu/gcj/runtime/BootClassLoader.class b/libjava/classpath/lib/gnu/gcj/runtime/BootClassLoader.class
index 1635a30404009ad59a0701f9777d1e354cba70ec..857b7a17cbae26fe6ebc9f2d9185e45cd236f5bc 100644
GIT binary patch
literal 1706
zcmah}T~8ZF6g@*=?JP?Ph7d{<LLdoXTyN<|(g67+IMCQ6g_J6f%kG41wBAAEb({W*
z{*1gPssvIawU3qhqpF@+FJ@yJ)skmt=H5B?oO|!g-~asn2Y@B)6woJdc|UHu`~E9e
zx8o#iO80?M$y(&KT6N_GQWwxKaHZF2Lq-Qu=iCGaeWm4w7YC8l0weWT-cOzzdGWrR
zx~&KlSN$lA!{m;@nfZlXf&MiW$N~lhW=w$eL@X2cK&wRgDsl~^n_-@Xz>tFhSOUZK
zFqT{G=AP8gyuC;Yl<La&qFqmiW}R(Xt68}7^Eo;@i4Noam4#g!XE5sE9L5AD^By@}
zbSq+<_=a3n#(~l;8B~K%w`>xcaPTQcc-#wuhoP2!qI4)*HLaRYwPK2rUyArl;1cy!
zndNGh<qwexxFq0o<^Ql<FXA%OW8@ccMF2(23JBN6MO-tCuL~^a8E2YKtK2-jWrPdN
zJ6J$jz#?-7WW_Q(QvhyIcmWkEJE`M#r$g3X`|=<ORcvDsRl~+*BJymWz0~SwQ->5}
zNnon0t>Hy4lx|8BvkOG2$;+_CKCAaOT2D8!i>xTzWBN_WPpD=3nWNVN(;b5m@}J=d
zGPK7oHw~VaTHsoq{&9ok@Q+*A?s9Gwu*y&;6jGNhmDE%_4!Uk8)ps1+#VvO2i!ct-
zTh$3`Z1){JFt)SCmXYa?y(U{)_&j2GK9b3{Y^k>PxjXZ5rpJ{txEl^OQDavb+>_Ji
zdhnR@#g7BFlQ44E<91VO&lG&6fQG<msyS5d=93R(K5_6AkD1$iNCvQXQtGwP+|#k1
zf>sR}A0s{qe3bY`m<!I?0A~gMnHjFi{F<LtvVVi~j<Y^|!qMgzyb}YsfZ=qP0~>NA
zJNGLw4DM1{9HCS$oj=5da%s|x?{V>YX{t2cSDHD()kDm^!BFEp7N1v+@cEzb2rz<K
zT*nt#s3}4LGYmD0L0qM^Olt*maOty@hM(>P!<YEV@Zj#(_=ZSx6mbJLi6rnXZt=TJ
zYd=>jsXWacLvy0Mc!=AL%3l~ZvwMv<uznPc%3FHclr>8Kj_}DeNjEs&q~$g(cQJ<h
z7{|jLlZh^q39O||ER^VBrA*dQBd$sBGS?=NmWlf4EoYr57VTgknbeMVJi3ThhA8kI
X9@BQLsD2u8s~2(We-OV<8EpRxw3LEf

literal 1561
zcmah}+foxj5Iut-3CkiRT#N{E7YH$Hyh9L_JDQ*ch{fZQ9l}z{4mH^*eubaGE51OL
zROzEtew1a;CWIwGxv9)<PxqWYr@MFm{QdD0Knj@<8W{TWPT9!k_6=EfT)W7PIU(Hn
zf>|nMglTaZLV#hQK4^s(4!HD%F$AY=$988JI>$2m=4aC=m`>i<aHZ|!)8ktVfq7wZ
z4Y$ywqY)ZIw?EK_MbTmC3{eG><c=j|iCam_mL&}gw{^54NXJdfTCgS0xkB2!v?N9G
zgA_!|{TfDup_fP}Nm;V0>@rda?F_m{)Zwo2aXk}8Cy~qv$-}tAfH3YdFhfHW_Y~tE
zhABVes<f+OSFdi3Zz<;Yb@ZX1N=3{mAw#5!S7kuLLl`7w7xi1ObY<}{#}8avI2r~p
ztk{e&#QbbF_oVn@?i9EOGD^v6+OlS0SI8n)Icq=+tr^?lYvtk&mz(M!6+9zyW?{>e
zwz8|60e8<X(FkPfXP|CS(xj_k?@*T%(1n6(nW&V94E+^{(t9l{0%_Ty0aUZ+O$5V;
zU*-8Y`S86kI;Yj7l|pz*sV*pZA#1{25@pA#g{h7_*YN@=s>QDDSl+-_(kkDijw$79
zQobsgfMXV^P%KBiyM{xn;=at?bzTx>nWM<To7tZ?UFCYCV-B-4kSf>3>9#sN>chm%
zfMwS%7>iE1$fc=fB^|;NL%UZ8TNtbFFG*j~v5Ez%w?8E%&^A2kOSYPbj=Cl%6&QUx
z7`?{o3edk1L9#>i^o>@vpNg|ngyYfX6STymZE8J3bUWG+?P`d|PSJgW-XpYR&oHo^
zIK|Mf?*tIR5FXI40b>Ml-vjI+@Ln{N6~VCQ9mO~vVS-kmzmg1bvelJB0uKpk6irCN
zAS6byDY`!<Z-A^P9;&1rMKczkIKi`Q;x}5=)647;f}dD6aZHgK+R#q%6*k=@5rh>a
zG>s;v9h2xl8eN$2F^Scf#K@<Z1nJu`jaMF%8O+j-D$^9%4RjBxtgnyhsggyN5t#Q7
gyDAYi#9$SXk$-`F=ZY4uA}-e>uKWk_t;gWqKdi541poj5

diff --git a/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib$SoResource.class b/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib$SoResource.class
new file mode 100644
index 0000000000000000000000000000000000000000..86c42ea8020e2017c4b286c1279b730e4479ac97
GIT binary patch
literal 1102
zcmah{%Wl(96rAfk+&E4eD72vz`k+8w)P)rgR2ET?f-DdXWQ&~iDs`3Gk>emfiUmke
zBo=%CABC9fyj&EimTaGU9y4>#Ie-5C`VHVQ4s~b(mA*H&&YVw<<;l<*_|Az8EStZN
z{odKY?e4ezV>$B2K~L&P3T!RQpJfOn#=$@!Z_g1w9NTq)^b6N>!y|zwC3_h_jIe&W
zw%id&HvAK5Ac3q29j3tEaujkYAQ{xloeU_$L<(tvRonICoAG&92JfBjKnh&9{hl-E
zIDxCqQ)e<fbw>iVs}#msqOLaSnZWK<bxh9pW!UnD<FFkD(m5B{D3vGob$u%qV5-sl
z+>^u5^}UgfTLNoQOI6z2dBnhN+|jWmV8$D6;x4vH<`1RU@I6oV6pX;;j7*K1&056j
z26k~z$DY7?9BGkZ;wIKPiXQO<ikF78$fE8HuV_oJAD(g>O63+iL=V{n3jgt|TehRs
zdgZFA6k=;|pk(k~Ey@oX17|dn?8AY;_7(dRVa^s3hg^dM*PSC*yFe?+SH}uH8Cvh4
zMe%H<`V&T__5-<ZbZc1UHy?$bvhW!UJV$}Pok=>b5l}r@tl<X1l%)tX+Uykn8}uc4
zDn>+2S{gmM%6H^0uxVE>u=ACU36&8AkErWqM56$hJf&G7^giwrLf`=&@~gDhqB9Y+
zFLRtUeLyq9Fe6)=VhEH_o>p4Z%9Ikb5HTr!9V<>vi#1dtiYiILUML}tV4?UAAUpA8

literal 0
HcmV?d00001

diff --git a/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib.class b/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib.class
new file mode 100644
index 0000000000000000000000000000000000000000..3293b2e59e7c578a976c1a50f872f709a356f18e
GIT binary patch
literal 1645
zcmb7ETTc@~7(D|mrOOIf5h-#j7oite@1g~~G$EK&9;lG$i<xeRcFD49wp$Z^fG_?U
zOcabJzMA->jNi;|ON&+FL$@>YeRIy4?>jR;e|`N9;1-_6(8DlYbsEM2f5#0+_=fHB
zitvmg{k^H02ews?A;K`(EopbBDD#BJ&{q@oTRBJ-WhU)3yoTdjhr%e;xF;$_tGuOB
z@|3)0IhMb{@P4V-A||kc&Fl35F|S}+!B7?DlzdO{!!7PqY~dBSSrhpVjE?vwH+|PT
z>dZJdOYbp63T{Pc=*57J82U9_!cYu@40=leQR^7SWrkQ)_?wn37)F-T0k_SaszJ<_
zQ_aW0a7D)mt}+ZeZb5jyL@&7w&!j!$!H&8x8=mDK8E3J)hHFU1Fc!AtA2rl5j_VBC
zzU5Scsxnl=S}H9al~iYFm-u%HuhSQ{Po8g5M-+VwLq*FG+l|Ar@Luw=EJ>p1n%v&w
zo+anuV#Kdm^`<pi6%BhT`yD!stTA9p4+J5GWS~^~@|-;wqNZ#<L-s$MLe1L`EWt3_
zf!)<M480A{W*F>9l`46;?%EAs?8<OI8A27DVWGVVp&{BmqS92OS9BQ2F~nsL!`*Rp
z_-%fu3i(Idh?kglL_M_9?XG0qE^2d+V!o&2J|2*_C37=E_2`P$>K4^MAHze2OgDnI
zCeD}KCa8v0<mHW8V<52?Z0vR~9aRf0xIDq78*bxTk@Dyy&mD&z1L+(=KBM%e0(#`A
ziS*bp^hnFnsF%ic$LSlV*#}yat5cb5ZaEoAMo*z-vdPE^^vowDB40528518VqX$#;
z9VHZC1_MYTfmynTDNJGx)3mw~AW<|$Gs2|!9P!A}JQfH+j&5L4DVo9((uk<F42`0c
znME$twNBYGKTawpvL{$Rrb!^7PeCp!%F!UHMH$CUb!4hH?u1Y#k;oDxL#Vqiaz7Ad
z$KSB}Dw8|KqciA)(vzdgEYlOXf+6y#JlRYD(4t9VUD3qpMU<zIS~rxy$9O{j8d0y(
I?<vN917+H!N&o-=

literal 0
HcmV?d00001

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$1.class b/libjava/classpath/lib/java/net/URLClassLoader$1.class
index 4481e7b35d58b806cf53866d244887505f8ca8ae..762625a3c7a4ee79560032d80f91af0b47e5701a 100644
GIT binary patch
delta 33
ocmeyz{*Qe_1~U^=+~h3g06wN91|Ftl1|g;t21%x*$tRf20H9<DL;wH)

delta 33
pcmeyz{*Qe_1~U^&_v9?*06vy}1|F6P3_>gu86;WyC!b(80|2b*2`>Nu

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$2.class b/libjava/classpath/lib/java/net/URLClassLoader$2.class
index 64c9e24573b0d59374d7712803576b5f5d59b436..741aa3bf03ffe0692c4c8625f7e1df044691fb13 100644
GIT binary patch
delta 29
kcmeBS?_uA-$jrnXJeir<lZ!c=frB}MfuA{iau~B209O75X8-^I

delta 29
lcmeBS?_uA-$jrn#XEHOhCl~7i1`gJR4E(GMCWkSb0RUvn29p2)

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$CoreResource.class b/libjava/classpath/lib/java/net/URLClassLoader$CoreResource.class
deleted file mode 100644
index f37294203816396a639c8c2f7fd6b5660afcaf1b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1826
zcmaJ>O>+}R5Ph?jy_Q&PER*mVSr7*#S@xRG1Vo$=VF!T>!8Rg3uBC~*)Oy#oS^>X;
zUy=i<GPo+PO76MvamXdNq^Kl+B9-phm9)Z$gS0a}-LK!g?w;TN`}r3D=di9r6PSKz
zJ+e$!2Il>hYT2<`t*U1=q(5Eue7Pc9UfZur9SMQ#AkU7MK%!1T0%O&t+cul^hbDuR
z$nIKOWKUNWgk!l)b2ad7w@GIs*KF4g76fkP!s7v4h+fF7v>&BEU%o~e%U(mKFoc5!
zk{A;>GZ?*xoUbJzaLB+gMtGGrpkq{EylT7hPJ3%Z`fJvPqpsrBEvIJrHt!>2BG|NB
zl<I@`=%~e4ca+ouXFnLx<44jqWl(Xq+X3k(tu28gxqKLGduHr_&{K;~>T)}<J-4Of
z6M;!3KD*uRp6HkoC~&p9#ohM3z^i+X$+c7kjKQXm!6{bsw7^7ezwAk(SCwuv*c2Gb
z<ts^?K~Be60VCcL2J$HI{UcXVp$&!7O-cUFjiN><>6oMVE<tkQ+RPg`f^!0&4%Duv
zTM`#=NykNjQ*oGhyLX)pT*l`D`i9k#iqBYIf)Zn0F>n<m@qs!IOs9&+`W$26rBMv0
zuz;_1d_@%-K*7Lud_!dlbqMQw({dY*^aaeQedDte6+V)wFQAmdEN*b276lgiTmOCY
z6Q|S<l&|UdwnJKFuegEqUCUYYea}x}2^G$BOBKAv`>KIu+!09fV3)0Si{_;m=fAe;
zdyjc;O3@V*ZqKUYJAq7>)3W9K;Q3p!LFMRnu7DueY)|s{dQpuuoBX2E?B~yOvZ~&=
zC7b7Zl5)f<H^(HX`6{j}ePx$4;70sy#5^_Q5WT1x()@1FD$TD3eG~LcB1Pv1Xw@JO
zwj3(V?7}F_KF4^W_#6{Ikxj!S{ipd{dx>G~6;j%3jB9UjnCyix4j<uT+7SYE{!v2Z
z6=%}aigPoMV>nKh6SPW@&q<a0GM%u$v4_lhVF%;8$UdWen0JKFwBJ=OBlL@M(Rg8+
zEX@BreHmkv<9G1ckMG3)5sM$~#?PP_#XpVs&F^8BIhZ>*PoIf!`9=EL3w*hY^0Vq5
zmezN1bGbP40=FL&e^psCn8MwNZ-#CS?N8F@FPxz7l=c=`?Qi6?e=w*0t9WFU7V{C0
hEGcylD}<CIy;iYCNE+^|8`SWCzFZ|56?~7Q{{uX-zw7`2

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$CoreURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$CoreURLLoader.class
deleted file mode 100644
index 050f529734c058f06e8ccac681ce9cf564474568..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1344
zcmZ`(ZBNrs7(KU}6iOX1USujNIAAM-fiEZ)L78GSQxZ@jAG_@`yOfS}9lr|`1p>yz
zm-xXSWqfYik(P}QZSTu@?m72)&eOmDPQL?Kz$+ON!(`1kF!DBc^B*>g1<PnOiglyH
zophn@a9Z+bGU5#5mqE{A46%yoFeHl})H3X9e#>=CyQ(vEEt|IKt}tjBf4iMjk8J4K
zZH9QEUf~L2=v5)3y9W$cRV2{IAeW4WkjRjT#wi%Upo}Dg8kVeL2*VUs<?gy^afYEx
z)(;E|6%5x@TtOE@U(vMryXIbrJMWE>2uT*}Wy9Jw98=7L#kl*)Y%okmR9u=%N=0v3
zB--*4&5*h*j*zjYV-cPtZ}LXH>6A&sVvxVE>fj>nDNVQHbQu$Lvx|jUYnm37TR|FA
zGA0@NFCtV-BSUFBFsvru*kzas^KX=DyzJ^75~*Munkd=~!*Dnxa71=nAZAs}Ay4iw
z_V>A6VVLa%Z7WkCTNg(xsJJHz+wIo<qZK^BqKt=B|Ek^0SIf1$aI=a>cubDkH3iQ^
zN1iaAGWLWa9k$TLqPCK&U<u3Ou1^`>1P6DhMWm+!vxlo#jL>`bw~ak2dAv;eh0h}Z
z24&0hgm34;Xa~;;;go{cw#^++IB&>!+44ZUJnF27K+IDs#OPnaAc=mUkwg!5A+7Y#
z=p*fl{iHUNJBFfZU!WeL|0_m5d)QHWCj>$|MVEAj0qGl3w06gj!gbuB8O7r!#^_8j
zx`jTE<u;*w7MHjMi*|<b9ikXH!QEqIXO56N!u$#Dzs>zY;tWeWo(%nv9THlCU{4}W
w!yiaVKQSi#LPq)>QlOnH(6B=HqgJFp$10vtw1ns0DQhUuSD`(I7g)#We?P=hbpQYW

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$FileResource.class b/libjava/classpath/lib/java/net/URLClassLoader$FileResource.class
deleted file mode 100644
index e7a12687ef3ace5bc33cd42ce722aca8e5189210..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1739
zcmaJ>OHUhD7(Mr5n0OfCLI_}zQrbd-jT?tP(>i?`(mFAD05Kt}PRs-*8fMUV-1n*v
zDa)!-tF(*mqNptkDzzXrQoHYus(S9c>^#WA<2(2J?m6c>-#7Q)|Ni<Lz#P^zNP($a
z=0|4PwSw~1rFzvdTdlfhu3P@pIoq+8td`gIo0f)*z~n)hNtQt7CJzZ5u7|0%S5_bu
zfxff0YX@%$oSBJ22k=os#9nz2q0k_9)myi8^q}8>21DS)!B`!fLL&<bGSG`Yfn42o
zt&8og8<xLf-cVA9>R!`y8m4cn_jofCY}zdnJW*>>wJOgEEfYBT#1kD=RJ36QHFvum
zEC;@2ZV8Oe6w;cz0z}srK51Ipf$h014S9hhiMh2)X+*~{JgwolfRRL%^#&&Jj6lEL
znzwzc8F>Du0zET@>pD$&*1&Ukp6V%u(gdDLB*fjR=$OVy4JQ)Rc;CPbMySi%w%ka*
zh9WEIX6`CMM*$_(vlj#g<DMm>p&HxM_MLQQ5^8}gWz{WrBiIZj*OZu-47`k2n5?L)
zp6jwE`XVs?kn~QBMZAXBHJlL`2?Zvjm!3B82Ig2j`FJd_+?ZB*de*?3;N12(9VO>k
zdNVyOF!o^6(+HW5;XMOYWpZ!e(PIq@iBFE{Zj@`J^Ig+f@O{tMF^~6^PalK@H`M!i
z0~f&7WYzamHQOzYY$^6IL|EDMy^q!CR^st_Xjj8Ufr+&6Mbo+I`CHaH#iYX{AP76z
zDdVwOoJ46eFCXPSs$Y%ja(G>+(c_$wqw7LBr9^O&YV4XH?pvJa)x?jaEu9;Pxe6%x
z&TyJD+ryiStx{hzR~h~^9O6!vt1FOUyuUcR54~9W69d0<TO!BjVHJ{}p;vwmU4B6b
zU@}U_Acpt`^y3JI38q$xKyq~yBm5ubD#OTFNc17ksn}%k4-D*K{6`EF_vqj39;SBh
zqp+s-_c6Q6oQQo$NtIuc`D^6lHyD<;Lj?+3>4+5M$a)H8@(30?$EPamE9R)Or&G40
z3EPW{r9Hg5vnqF@SmpK(59KH`&tF76L5Co}CG~ft{+`r7ATRG=T>gaP^5-rirc)UM
zv5a8~dK>Q$NvNwL7Uac(@)7B~yY>5+U)#sI#S$H;t(N{_V$_($Si}f{An)Rkyoap(
t1%vWejLP4-$n!CImV1|QnFxby>=i5#L1LMB5-YgMe|2>UG;j@L{{!;=koo`s

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$FileURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$FileURLLoader.class
deleted file mode 100644
index d750821a99e68f363b88448ffa4f5d12f5db51e5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1278
zcmaJ=ZBNrs6n<_usdQyb-Uhy)$dGj#3{epsf{L1uOie&$@Qapl9ha1rw4K3^{tW#U
zm?%pm@dx;$jOX@cVd6~F-rn=_oO7Q0++V+c`~+|lk5woPQ+wtIvuty}yt!UowM@^e
zI_3^{bI*ju$rSEXBpD{Ug|@>O5<9|WNLPbU;glsxg`sCj*ur0CSj>m6vjr<1j=y$B
zjUl<}>~IYUq;#k_ucD7ZKV3&dKQ5@q#OA1mjsXlZs15GRZWxC0Mp(--?M8XScZJ=k
zXwWe%fkzmIqb5)Ljan}lMs=J+4?}-d*!)Fvf1A6n%xwueP<862RWn^7_mMH_?+TA$
zx?{AiBoj}mx;z0ZI01&SZg~`$Xu4LL=x9<2U~YSk)%5wMbf;+Mb?!M$w@xiC{A;Xk
zC310Iz|53n<_5!L1QDO?Sssm=WHPVAK!G7c4Xm2BV+$fDWIq$LA7jY)l8zb7l1})c
z@O+{ykvHB*$DB?|B}YnlPlU_szT<vWaf>0>O^mWi+`EQ(+>xy>{7-qEQje4ucW2a8
zEHVtnLR)+J^svqkeBsz6N!#2H&OY#-mJ9jb2V&DU0`|k%2RrZBtV|=duGuzs16goS
z#Y2W{m*E)tBvAXlVU9GJpxeyoC1KK6p_gt4S$gTOfh0XZwook1w4fDEpl{6_Bi+K#
zcVxc?31jq4OBm%XROKB;6cZQ8RtQsZ372U{Ah?3@pi~xDaV;p7#RUDy7OrD5D*B1?
zq@^f}6}}-`Y$11y>F1?m6hC8_mhu;*PcXk#D7A3==rubEV5gDCU4oSjjnF($c9Bs8
v#+5zf6$^%P5HuDREVdgf;vVi3LI$I#5DN-DON61|0hVdi$j7jPM;QGB7Z)^n

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$JarURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$JarURLLoader.class
deleted file mode 100644
index 11c1e9dc61ad6a38e1a3b63e0f8b4aad06d836dd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3418
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
bP+qNKZZ0z`m??+f!~0w#9{asm#?Jo&a*=(0

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$JarURLResource.class b/libjava/classpath/lib/java/net/URLClassLoader$JarURLResource.class
deleted file mode 100644
index 74ebc39810169e5085ce183bcda9a30250221746..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2202
zcma)7TUQ%Z6#jMy3`s{Q>4o40fnZHS+9~2ah?huhFtkb_mDbxKIfUs76V_y+w!gqv
zU%fo|;*(43S~M)hOP~EwF87%kl8Ir~@&V?YefIhG<@?Ug-~asfCxAulX^0Rm-4&k+
z!;+4%wNWZGM5|S5ikh_N*M!ZM4cTh8?W)ueCCr5Ro_G<4rRCW72+5M`+jh)`aaY&|
zqphlwJRxd{eMv}o9t~mDjk05#R-MmAmQBlaRtV*^cO06Smt}qsBrI^I!l4Vznv7!z
zkLieEjH?e1!^QhCGL;wzXLSr?M6D7!G>j6)OQt1nwD)(Uy(xAYZcWXqXjFu4s=aTF
zI(ue|5FV+&)2a&%mjX`j|22UyR+moEI%qrGNh$UTlj)3i*K8Vr0|t+;eo>VNj@h(Y
z8lEDYbBR)JH@hdQ%BOWqVup|k&7s#J4ReI~Fm-tKdCiPr7V|ou!6kym!q_!c-zEo1
zyT%9kIMT>!$Pg|J$VoZqn8E_V@O$g3?Y?<n+%^w9wS_ey#{DWutM2R(hSHg090nFO
zTqRr_2;?H^cn(XPGT$qk_c>+0wZ;<QeL>oexocL1Bbnw@I&;UXrX{Ow+jQ<3Rdz4}
zUT#@0>3A8h5JnlnjX=oxWdxsuU%+5xD&xG4=kWsTg)x{6*60cA{<Fzzc%7gJiBSZ+
zspBmaSPDC$B|UanLVY~vV_3yI8m<v$gV%!-qRYRI>nIY=RMq%6(e6|qUf^DS6z_8X
znEW`_aZ|$$7C=Z09q-|N)~HvYC+_RQsx_qDqy3bA`Stf*;I^-ztRDU*VWs~$hR%^w
zfie{hJWaf$-RMQjk+vlotG3<bvbOMninHy?q@wnBbbN@92r)I^3ZmU&3H9;4xo0;&
zS5qVJQ|{vStQtNcOn2L~E*iT{dtcU=gzmE?5W~*&8h@%6&wz-@em+5i`KuvOcBj62
zW88g?5#aBNN`h5Yv@B`6cBT6<Pe&)e1h~p0WQc!fB1ovY$*Y8#n*1H+zZl|teuh^y
z_K5QLY<A%YdiL@|jAwHXG4TuAA~?tY6Y8A4#xQ+@IDLz8`VQyWp7rkG0xt575qMrD
z8C9)Rq=>sxu~i;Zc$_Uy@G8naPr9*}*`oXt*+Wb}!t5bZyc+M|*#~U(qK_yK`reJG
zd*0oMIb3Fos$$7Uih1|1eEH*l0DcGn#JT|ddVPR3A0XM6%0ve*K7!G~tG$HAR5|n$
z&ePABR9}wdC6?^sF5@*H_bb2rrDLpYcd_5#)r8s|;_bv*2c;uyJSZJwYx@Yd)^iIT
z+`g6j%dK`6bNJZr#WeR7)IoxdFwNgN`V}cU<`Mim7U>T+l^M6&OMWUT=HgQbMp|G-
Xc2H%c2y?EwE3wO8r32zQP)G7#2cskh

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$RemoteResource.class b/libjava/classpath/lib/java/net/URLClassLoader$RemoteResource.class
deleted file mode 100644
index 19b703190ee1b31646e64629a2529090fe437492..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1152
zcma)5O>fgc5Pf4i2}w<wCM0S3EKo|~(gw~&y;LAYvOr29cPCw?M$Wpj9mJi#!vQ2B
zBo6!leiUMM?Sc~$i9@opvv1yfyz$Rp-+usjhNBV;!u~t&z1Nc>>AfAer-2v8Zs?th
zXm22<VIl@14rkF=lwc8d*JD!@!JI__q3Y(5$An^>M8caAn(2!l_WJU2mYiv~0t7-%
zk_!U$`SRSCesV$>bry*JEstwX%RNqkfhQ+DCiUec^JJZ6x23%O?vP-ehUcOJ6Pq?R
zP~(xT&-yoCcUT6YZli#rvToQY;hM5qHp-|FHeFweSF`CzL~p!NAQ<h2V=owbk+1HV
z(@HM<n6N(Qq7ZskS|LLBzo)}pN^h!5(8}cJ#BxnUl9Pkb?qt+U^CDDUd>D(%#1Ca$
z!b3ts(<#{NKQDwb6S|q8W~ZwpWe*RJP`jeO5{5a?^oqUo)r=a8Yj~vi33gvf5o!Ge
zCw{^u<~J<27~IX`!0?ncF?r)n)RkCl)s<BGWTE)9__qO@ao5@U2t%XV&cQcSox?e{
zoE>Y9hSMy}(fq;?18x3qF`fE^3WkA-VWMVOXc+};^V>;EfgRlB8yJ5Jw>g2b?%*yn
zC`*;2N^9$aR2glxJBk<gu*<0XY*`%lK$q5IOK}vOuV{Q`BQ2z;oJLtER$VY4OHA0q
qBlf7i^1;ndOTpEZ!TWf;B6w>#b7MuYfsRhmg~MlsX$S{6#P)AYsr1JH

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$RemoteURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$RemoteURLLoader.class
deleted file mode 100644
index d32ac11656c6789416c63a24f19fa03a89744ba9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1724
zcmah}+inwA6kR*9Jzx)U2!vc9Ei@EjC&A&Clo&#r0F9{$5Fp&d!^AlXgC;Z9c!K&X
zed;d+2@(k;1TTH)<r(_WN>wjXtE%c3R9$DrF`ig}EYHk2`?mJlmv8@j`W(Pf%o}JE
z9DZOuv<j{Y3ODA<GmcfOl|5@o`3L9KiWeweMrQ*F!GX6aH`D~%s=gO^70(fLl|y~U
za+eF&0^fF*i-Oc?+qHu!L4GI_x5h5U1jXEfATi@DsWjS=F=1d^8at3R&>=9JA(`mJ
zPC;f_1y>p<b`RxRacqZRmx&}&f^6A#)!gdJqVlg>i;mL3y^7^5SiY^#^~*$X->wPj
z&RS7#WsJFIDw<FyBvjBBORI@%YPPTXB&;K*p&c-jc~$dP{R&}?*BNUj^j&ZwyQ0qZ
zLlgV4S70n!HC<GF_mPQS^rdkShYWly=xL_137(0=7$RN7LQ57>Su3-ayW}WeP<St<
zm_bojF0X4iESQRSK)vkE*~R#XJIXC+SEDA5pg`uls&Z#M*Hx9k_FO^#X4N+f)sPXw
zQ5-jLOt2@GaYMtz37iykGGV$5lpB<lyByqSnTB#DZ9ZY*6P#jLs+8R7Y7k)~hnrz-
zuh1kY8eld18{uYyph_;^08V2PXG~1#xY?-aRnM&{-S!4P6&z~VYP*&>-E5LH&SF~A
zJ0n<()7xr9PtkC{kNLWMOHQTSf`RjFj1Za@UOxY2MOC8$BwTBSJ)5pHXchFv>iH&n
za+7lE6ibPRTG(WQ?#N(EU@jS7)k1z4;958x7i>MayW->=(a5+XO6&_i%wKVWvs+dh
z#yAY^+=(1~y%G4;#y{5#Z?^O62Blh_%@2=kAe|pshxr6uk3z-We0FHDe8*+-J$KR%
z=;q!2$OL=P!xN45u+gFZ>c`$N#6Ao}Atb|a24(l2VaM(KV|*~o#{vGk)-kw&+$F{w
znHycl*m#1^@yX=qOH6)+p3xVWT*vA0RClU#$w_{Vq^$KNzd_eCoV`uFeaY^`20mMp
zwVSdQ2A#$ooa66i_-=zvV2Yq1uhAo~&?`S;Kz_oY{EVFZf-(6G6Y?wD{dY{uA2=s}
zq9lLemi&!7@(=FHzhT0&Q38#G@8JTuWYIBQPj~=l@Hu8l%pfLE!bK#I<1~GNGI>9R
a3@-65MU->I)P~Er!grcJgiGowdjAI;54`#S

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$Resource.class b/libjava/classpath/lib/java/net/URLClassLoader$Resource.class
deleted file mode 100644
index bb4d13a6ba0a72e9ef51b3a99bc7dd0e3170d131..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1217
zcma)5YfsZq7=GT-(RGyT5D-xqL)-<a;5{>bA(AX<BmrGw{M41>C>bqjJEQ*!6O=>~
zznb`)4Emna%`qaGS-Nw1pZ9s*+xdC^^*ewKJk^mREFC)U9m^N7^?KLdYB^D42hP3-
zS9V1dv_n_u&<GO>)pGo%wbM8hZcG?%DIB3-Uq!);30all&ph9YpA%M#|A8;n3EEb$
zFR~cIhzT7gVW?QD8z79CNMo2VZhO9X**<EB@RieO3Br^exK69?gq}QiF17f;iwMhC
z%62p5C`X$jma=;)b;3fil(<F0ZHHd`(dt>NS&n7K#4P4G7U?L$*n8)>PApijP%OQ@
z<m)oPx`3)0n8$*S8-)D88k)F?TigjhkPN*r2=kX@dbX;LCBmHI{znE<e%V9;D+Ima
zM1mW}<?SmJXSs+~*?~KR&Hmn12PP={n3idCLGlC9JSAL46~sih@SVxz-WY7Nh2M-1
z)F{+AQogDA$L)A84ux|>nC*Ibfpx*a&e<0qTyY$GfgkDEB;-_0By8ueg;7c0w>>#b
zx&8;SE<Ffl&G$v99*SV9$1Hk9>j;_dWNAx0DntD0xPNkXc_%*|8NM-iw~ZA4fNc4U
zzshHfe&SOK<NQCSJbyvMIb(k_12B`IF^MTYv7cfk-sLde;dIzTa^}llaLum#z)1NN
zqo=rj@(qh`l6}5%hTA6$N~EUP1*9WQ85m?>l147b<vVg|ETD)I%Rml)M{bQ*d6S|Z
y->|%)X~khC)`Wv)%BVoft>La(*I_Z@9y4gXZg52RRa_77kXQNE2#@eY%lrZJfF1Av

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$SoResource.class b/libjava/classpath/lib/java/net/URLClassLoader$SoResource.class
deleted file mode 100644
index 4e7417a7d6328318c4fd85785fd9bfef2c8e0e64..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1097
zcmaJ<$!^n76g~H4aN;;EG|+}Jg_1&s(v%IGKv{$$1zD|VAbU4`YK>Amava1*u>c8*
z#DWjtqY(E!C$WuG7IE&o!#U>;zyJLF1>h<63<$#32j`>H@nqO}e{A>0&U9+~&Z!LQ
z1OHe~{aG-Q2C{_ORe6gnLS`0>2`hFovrEW7cRe@UCp>GULTNH)kBGaeq;7La$oBkG
zX(EG?1p^l0(bY&XPIFiU%dwC{p0H}Wo;;jgoXFsvb265MHQOIK<DnC{>OFU6!*h2^
zsHa4vl`a}qt&R1p2;2Y3j}@_+Ga2^1$t)a%fpjhi8;xdE>iV5TfU(VkPa`=AUEiA;
zxJ9Vwv8uGAWyHj7+%<5AU?qoc;U4ZYnLm+U&-XkzQZR(g1=(WV%UIXM13WaaMOaTF
z#nl#WVx3np;u=CV-EWLTC~}Lo^v=R_zKBM%&r@O#4}oy)AAZ&4K%dxaS8b%iS&3Qi
zDka=npF0S&U-Bq+d1xt#@y%+u#d@&E+t2W&Gp{-UwzB*)P+(7yt+x<5UTU>}z-;Y&
zNBJwe1y=dHqC(;Ya$+B*c*zhzElS6Atnmvdp@JI>rYuDu*y17a{{~xGj#M?#0b43o
zZhb@f5}S7W616Yvh^R~z6g?EgD@~&SIC)M}VCXuw8G_FqkNK;#@8~y|iO)-%Jo_Nt
sXbel)j1x&EG|-$^cIK5iB_<XT6(1#vbMs<>mWFCGDPZdIC+ML17qb`bp#T5?

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$SoURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$SoURLLoader.class
deleted file mode 100644
index 403dfafd09cf61f3724c31cee279f35a00db67e4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1625
zcma)6Yfscb6g^WGx-CVJck#g+c9(@BFVO{jkQg;9A6O;PZ>2jfB}-SkT@wElCJIIq
zznb`?jCZEp(v58JLpz<$x%ZrV?#%rD^Zh4)dw8lsVVFL)Pi@QNf%Rs;xLdXB^<vE~
zbAP5(qaWe7iWI|SJ75fB=sM!n58NkkvEntXigRrF4KHv{xK%o`eO@lQhtDOXK;SLc
zbAug*T&CD2ccEpWkUd~X?bga%2Sc|36$ZoR|3?3ttGDQSe6MkG$o<#$VU;uV7i*4P
zJ+OUO%%h*F;K;2r%(f(GV-?la?FbjE(nSWdT@)cZ8h(}GMhl{#qXXSKMqsKKWiXP~
z7#PDX2DQS2XRgpYn8}9GRokmrrNDQ+N<kxc?ijd>afUvxw#)rMm{zJae1~Gj!iYL|
z8onERvM$$%dlJ(srWnSr>7Ria%rfZjU9TK=l%W!JLTX9)6Lm2uvAu+M*=x6ssBhjt
zC%VY&+9~&ax6El5GNj2ENle{JiiwO#dL?19;JkrF<QOzjOBAg+qKA9-iQE&i1xfkD
zOHBK`9$C84p6rT~)r^zus|MDvPJI^a%@u~JYcm#9+$UUedr0x|@ogs4v4IETusmdF
z3cW&A;=EsV>^$j(9&Vy=^9{7#7)wG574pLKxG$yfx{AjPBW*O2iwROJQ(HUeW@7YE
zZ|R+)M@5?cX!P}x=3+gaTgc}xpns-s1wHiEX@oKfRhhyKnooo{^rDYu6oH%QmwD3|
zz@R{jyCcf`k=O*2NqHA9Fhs*ShI3zVJM|3{Uom${G)zz^b3`<c9wmbz8b_6^B+Z3M
zVp20EHDgi}8KM_OWRZ*Lw@Ho=q!HuX!Z{YsXcE@dB{VCGGW~D}iqmUYf+cHOrn@|J
z$cY>>qf{%e^1sl@&VFFyZH_G4yiDCM)G8~`lvS!^4ZX^G!a6giF;S2-8d(`yr(jD8
Q+{O-#;wENzgeMsN3p}fXP5=M^

diff --git a/libjava/classpath/lib/java/net/URLClassLoader$URLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$URLLoader.class
deleted file mode 100644
index 8b272bdb36db93f3e4839605d8c5f2ffc5439748..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1354
zcma)6T~8B16g|_fw3G@JuzXc50@^NxRW!t;#upM3O+^FR#P~E_23S&dlie+e|4JVk
z5>0&57}RI~f-n9B<Gr)nmJJYn*?VX1x#xb)p8Wan3BX<4&mbi*e;|*f<*Lwnwbj^Y
z%OGfYa!2`#bd0nN41t1%wWYgfJ#QT-I}{kP8Qs=sftkhyM0J5oO9qPg1V$4mG8J5J
zL;2x`x1+Ybj&Cc0*$5LTyW>0ITWeq={Ln+kb;3siW+g#&D)V~6P_H%x4Ccr|U@VUj
z6a*gpulHH5v4-QS&CX#<`7dRwO$m=TJX^M#(s%eAUmD@Q69_CM2u@`==x;rTG>V+q
zlt8*tZ4OhSGkILX5NmUJWRT6^n!vPf@i~pjp@bXEP!?EAmR5fgWzhGssofU$+}U+(
z87gWJhq;-@Fmg0i?@0N+vlGoLyQe~(w7^o#t9M{K^c{DvUX8f*m4?xThHYMpO?jw0
zGgzD0g(48=mI~r&uU|}i&QkXLC=Sy+ldiL?0$Rq|N}Nk4blTQ|^sSzap!r@EFJ!nc
zFqyzMX_-BrP`PLUA3HqLiR5co<vNJyiR&s~SE_;x)&!<5*m~+i{{b0g>TjCfTp9(Q
zDrp6tsg~4ql6*IUJmD^r_7sN3XU*kW?HHr)=`MvU^v#h3K9lzsjFVQ5aG1a(oj{z-
zFSN!H7)=Ww^M+(K=%!>I<Epvb#k5)LV%GeK((4s*jO$&@4`LMw4SXe!6IzXL7{zzY
z;fIcEMm+tvrGDI!u8iZBus|7b-HTX?Ggv3dwv>3sUtLp_?@!HJjI4d$6mH=*1SMTT
xl{^3w%Q07tBv*Qt>zC%@ZgPxXZ)#Zir|0i;JX2WJJQnVd<iCiZzvn$8`xhrsBwqjk

diff --git a/libjava/classpath/lib/java/net/URLClassLoader.class b/libjava/classpath/lib/java/net/URLClassLoader.class
index 118acceca43b35652bc8ee78a297d393d40a2a75..ceb736bdc91f43d320a3cb4beec1c882abdf0dcb 100644
GIT binary patch
literal 14476
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

literal 14234
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
L<7&&~L8bo-^YA1W

diff --git a/libjava/gnu/gcj/runtime/BootClassLoader.h b/libjava/gnu/gcj/runtime/BootClassLoader.h
index dbfd1567162b..df9fcdbe43bb 100644
--- a/libjava/gnu/gcj/runtime/BootClassLoader.h
+++ b/libjava/gnu/gcj/runtime/BootClassLoader.h
@@ -37,6 +37,9 @@ public:
   ::java::lang::Class * bootLoadClass(::java::lang::String *);
   ::java::net::URL * bootGetResource(::java::lang::String *);
   ::java::util::Enumeration * bootGetResources(::java::lang::String *);
+public: // actually package-private
+  static ::java::lang::Class * coreHandler;
+public:
   static ::java::lang::Class class$;
 };
 
diff --git a/libjava/gnu/gcj/runtime/BootClassLoader.java b/libjava/gnu/gcj/runtime/BootClassLoader.java
index 84952359aabb..731703ab8f34 100644
--- a/libjava/gnu/gcj/runtime/BootClassLoader.java
+++ b/libjava/gnu/gcj/runtime/BootClassLoader.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005  Free Software Foundation
+/* Copyright (C) 2005, 2007  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -8,6 +8,7 @@ details.  */
 
 package gnu.gcj.runtime;
 
+import gnu.java.net.protocol.core.Handler;
 import java.io.IOException;
 import java.net.URL;
 import java.util.Enumeration;
@@ -21,6 +22,11 @@ import java.util.Enumeration;
  */
 public final class BootClassLoader extends HelperClassLoader
 {
+  // This forces the core URL handler to be included in statically
+  // linked executables.  The line that adds core:/ to the search
+  // path fails otherwise.
+  static Class coreHandler = gnu.java.net.protocol.core.Handler.class;
+
   BootClassLoader(String libdir)
   {
     // The BootClassLoader is the top of the delegation chain. It does not
diff --git a/libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h b/libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h
new file mode 100644
index 000000000000..da8a2aca194a
--- /dev/null
+++ b/libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_net_loader_Load_gcjlib$SoResource__
+#define __gnu_java_net_loader_Load_gcjlib$SoResource__
+
+#pragma interface
+
+#include <gnu/java/net/loader/Resource.h>
+extern "Java"
+{
+  namespace gnu
+  {
+    namespace java
+    {
+      namespace net
+      {
+        namespace loader
+        {
+            class Load_gcjlib;
+            class Load_gcjlib$SoResource;
+        }
+      }
+    }
+  }
+  namespace java
+  {
+    namespace net
+    {
+        class URL;
+    }
+  }
+}
+
+class gnu::java::net::loader::Load_gcjlib$SoResource : public ::gnu::java::net::loader::Resource
+{
+
+public: // actually package-private
+  Load_gcjlib$SoResource(::gnu::java::net::loader::Load_gcjlib *, ::java::net::URL *);
+public:
+  ::java::io::InputStream * getInputStream();
+  jint getLength();
+  ::java::net::URL * getURL();
+private:
+  ::java::net::URL * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::Resource)))) url;
+public:
+  static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_net_loader_Load_gcjlib$SoResource__
diff --git a/libjava/gnu/java/net/loader/Load_gcjlib.h b/libjava/gnu/java/net/loader/Load_gcjlib.h
new file mode 100644
index 000000000000..69d2ef5ac6f5
--- /dev/null
+++ b/libjava/gnu/java/net/loader/Load_gcjlib.h
@@ -0,0 +1,58 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_net_loader_Load_gcjlib__
+#define __gnu_java_net_loader_Load_gcjlib__
+
+#pragma interface
+
+#include <gnu/java/net/loader/URLLoader.h>
+extern "Java"
+{
+  namespace gnu
+  {
+    namespace gcj
+    {
+      namespace runtime
+      {
+          class SharedLibHelper;
+      }
+    }
+    namespace java
+    {
+      namespace net
+      {
+        namespace loader
+        {
+            class Load_gcjlib;
+            class Resource;
+            class URLStreamHandlerCache;
+        }
+      }
+    }
+  }
+  namespace java
+  {
+    namespace net
+    {
+        class URL;
+        class URLClassLoader;
+        class URLStreamHandlerFactory;
+    }
+  }
+}
+
+class gnu::java::net::loader::Load_gcjlib : public ::gnu::java::net::loader::URLLoader
+{
+
+public:
+  Load_gcjlib(::java::net::URLClassLoader *, ::gnu::java::net::loader::URLStreamHandlerCache *, ::java::net::URLStreamHandlerFactory *, ::java::net::URL *, ::java::net::URL *);
+  ::java::lang::Class * getClass(::java::lang::String *);
+  ::gnu::java::net::loader::Resource * getResource(::java::lang::String *);
+private:
+  ::gnu::gcj::runtime::SharedLibHelper * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::URLLoader)))) helper;
+public:
+  static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_net_loader_Load_gcjlib__
diff --git a/libjava/gnu/java/net/loader/Load_gcjlib.java b/libjava/gnu/java/net/loader/Load_gcjlib.java
new file mode 100644
index 000000000000..ea392041f91f
--- /dev/null
+++ b/libjava/gnu/java/net/loader/Load_gcjlib.java
@@ -0,0 +1,77 @@
+/* Copyright (C) 2007  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+package gnu.java.net.loader;
+
+import gnu.gcj.runtime.SharedLibHelper;
+import java.io.InputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLConnection;
+import java.net.URLStreamHandlerFactory;
+
+/**
+ * A <code>Load_gcjlib</code> is a type of <code>URLLoader</code>
+ * that loads classes and resources from a shared library.
+ */
+public final class Load_gcjlib extends URLLoader
+{
+  private SharedLibHelper helper;
+
+  public Load_gcjlib(URLClassLoader classloader,
+		     URLStreamHandlerCache cache,
+		     URLStreamHandlerFactory factory,
+		     URL url, URL absoluteUrl)
+  {
+    super(classloader, cache, factory, url, absoluteUrl);
+    helper = SharedLibHelper.findHelper(classloader, url.getFile(),
+					noCertCodeSource, true);
+  }
+
+  public Class getClass(String className)
+  {
+    return helper.findClass(className);
+  }
+
+  public Resource getResource(String name)
+  {
+    URL url = helper.findResource(name);
+    if (url == null)
+      return null;
+    return new SoResource(this, url);
+  }
+
+  final static class SoResource extends Resource
+  {
+    private final URL url;
+
+    SoResource(Load_gcjlib loader, URL url)
+    {
+      super(loader);
+      this.url = url;
+    }
+
+    public InputStream getInputStream() throws IOException
+    {
+      URLConnection conn = url.openConnection();
+      return conn.getInputStream();
+    }
+
+    public int getLength()
+    {
+      // FIXME we could find this by asking the core object.
+      return -1;
+    }
+
+    public URL getURL ()
+    {
+      return url;
+    }
+  }
+}
diff --git a/libjava/java/net/URLClassLoader.h b/libjava/java/net/URLClassLoader.h
index 25fe59ab7855..2e5f15c9bdad 100644
--- a/libjava/java/net/URLClassLoader.h
+++ b/libjava/java/net/URLClassLoader.h
@@ -11,14 +11,26 @@
 
 extern "Java"
 {
+  namespace gnu
+  {
+    namespace java
+    {
+      namespace net
+      {
+        namespace loader
+        {
+            class Resource;
+            class URLStreamHandlerCache;
+        }
+      }
+    }
+  }
   namespace java
   {
     namespace net
     {
         class URL;
         class URLClassLoader;
-        class URLClassLoader$Resource;
-        class URLStreamHandler;
         class URLStreamHandlerFactory;
     }
     namespace security
@@ -52,12 +64,9 @@ public: // actually protected
 public:
   virtual ::java::lang::String * toString();
 private:
-  ::java::net::URLClassLoader$Resource * findURLResource(::java::lang::String *);
+  ::gnu::java::net::loader::Resource * findURLResource(::java::lang::String *);
 public:
   virtual ::java::net::URL * findResource(::java::lang::String *);
-public: // actually package-private
-  virtual ::java::net::URLStreamHandler * getURLStreamHandler(::java::lang::String *);
-public:
   virtual ::java::util::Enumeration * findResources(::java::lang::String *);
 public: // actually protected
   virtual ::java::security::PermissionCollection * getPermissions(::java::security::CodeSource *);
@@ -68,8 +77,8 @@ public:
 public: // actually package-private
   static ::java::lang::Class * access$0(::java::net::URLClassLoader *, ::java::lang::String *, JArray< jbyte > *, jint, jint, ::java::security::CodeSource *);
 private:
-  static ::java::util::HashMap * urlloaders;
-  static ::java::util::HashMap * factoryCache;
+  static ::gnu::java::net::loader::URLStreamHandlerCache * factoryCache;
+  static ::java::lang::String * URL_LOADER_PREFIX;
   ::java::util::Vector * __attribute__((aligned(__alignof__( ::java::security::SecureClassLoader)))) urls;
   ::java::util::Vector * urlinfos;
   ::java::net::URLStreamHandlerFactory * factory;
diff --git a/libjava/java/net/URLClassLoader.java b/libjava/java/net/URLClassLoader.java
deleted file mode 100644
index fd70fdf2045a..000000000000
--- a/libjava/java/net/URLClassLoader.java
+++ /dev/null
@@ -1,1448 +0,0 @@
-/* URLClassLoader.java --  ClassLoader that loads classes from one or more URLs
-   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so.  If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package java.net;
-
-import java.io.ByteArrayOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilePermission;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.security.CodeSource;
-import java.security.PermissionCollection;
-import java.security.PrivilegedAction;
-import java.security.SecureClassLoader;
-import java.security.cert.Certificate;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.jar.Attributes;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-import gnu.gcj.runtime.SharedLibHelper;
-import gnu.gcj.Core;
-import gnu.java.net.protocol.core.CoreInputStream;
-
-/**
- * A secure class loader that can load classes and resources from
- * multiple locations.  Given an array of <code>URL</code>s this class
- * loader will retrieve classes and resources by fetching them from
- * possible remote locations.  Each <code>URL</code> is searched in
- * order in which it was added.  If the file portion of the
- * <code>URL</code> ends with a '/' character then it is interpreted
- * as a base directory, otherwise it is interpreted as a jar file from
- * which the classes/resources are resolved.
- *
- * <p>New instances can be created by two static
- * <code>newInstance()</code> methods or by three public
- * contructors. Both ways give the option to supply an initial array
- * of <code>URL</code>s and (optionally) a parent classloader (that is
- * different from the standard system class loader).</p>
- *
- * <p>Normally creating a <code>URLClassLoader</code> throws a
- * <code>SecurityException</code> if a <code>SecurityManager</code> is
- * installed and the <code>checkCreateClassLoader()</code> method does
- * not return true.  But the <code>newInstance()</code> methods may be
- * used by any code as long as it has permission to acces the given
- * <code>URL</code>s.  <code>URLClassLoaders</code> created by the
- * <code>newInstance()</code> methods also explicitly call the
- * <code>checkPackageAccess()</code> method of
- * <code>SecurityManager</code> if one is installed before trying to
- * load a class.  Note that only subclasses of
- * <code>URLClassLoader</code> can add new URLs after the
- * URLClassLoader had been created. But it is always possible to get
- * an array of all URLs that the class loader uses to resolve classes
- * and resources by way of the <code>getURLs()</code> method.</p>
- *
- * <p>Open issues:
- * <ul>
- *
- * <li>Should the URLClassLoader actually add the locations found in
- * the manifest or is this the responsibility of some other
- * loader/(sub)class?  (see <a
- * href="http://java.sun.com/products/jdk/1.4/docs/guide/extensions/spec.html">
- * Extension Mechanism Architecture - Bundles Extensions</a>)</li>
- *
- * <li>How does <code>definePackage()</code> and sealing work
- * precisely?</li>
- *
- * <li>We save and use the security context (when a created by
- * <code>newInstance()</code> but do we have to use it in more
- * places?</li>
- *
- * <li>The use of <code>URLStreamHandler</code>s has not been tested.</li>
- *
- * </ul>
- * </p>
- *
- * @since 1.2
- *
- * @author Mark Wielaard (mark@klomp.org)
- * @author Wu Gansha (gansha.wu@intel.com)
- */
-public class URLClassLoader extends SecureClassLoader
-{
-  // Class Variables
-
-  /**
-   * A global cache to store mappings between URLLoader and URL,
-   * so we can avoid do all the homework each time the same URL
-   * comes.
-   * XXX - Keeps these loaders forever which prevents garbage collection.
-   */
-  private static HashMap urlloaders = new HashMap();
-
-  /**
-   * A cache to store mappings between handler factory and its
-   * private protocol handler cache (also a HashMap), so we can avoid
-   * create handlers each time the same protocol comes.
-   */
-  private static HashMap factoryCache = new HashMap(5);
-
-  // Instance variables
-
-  /** Locations to load classes from */
-  private final Vector urls = new Vector();
-
-  /**
-   * Store pre-parsed information for each url into this vector: each
-   * element is a URL loader.  A jar file has its own class-path
-   * attribute which adds to the URLs that will be searched, but this
-   * does not add to the list of urls.
-   */
-  private final Vector urlinfos = new Vector();
-
-  /** Factory used to get the protocol handlers of the URLs */
-  private final URLStreamHandlerFactory factory;
-
-  /**
-   * The security context when created from <code>newInstance()</code>
-   * or null when created through a normal constructor or when no
-   * <code>SecurityManager</code> was installed.
-   */
-  private final AccessControlContext securityContext;
-
-  // Helper classes
-
-  /**
-   * A <code>URLLoader</code> contains all logic to load resources from a
-   * given base <code>URL</code>.
-   */
-  abstract static class URLLoader
-  {
-    /**
-     * Our classloader to get info from if needed.
-     */
-    final URLClassLoader classloader;
-
-    /**
-     * The base URL from which all resources are loaded.
-     */
-    final URL baseURL;
-
-    /**
-     * A <code>CodeSource</code> without any associated certificates.
-     * It is common for classes to not have certificates associated
-     * with them.  If they come from the same <code>URLLoader</code>
-     * then it is safe to share the associated <code>CodeSource</code>
-     * between them since <code>CodeSource</code> is immutable.
-     */
-    final CodeSource noCertCodeSource;
-
-    URLLoader(URLClassLoader classloader, URL baseURL)
-    {
-      this(classloader, baseURL, baseURL);
-    }
-
-    URLLoader(URLClassLoader classloader, URL baseURL, URL overrideURL)
-    {
-      this.classloader = classloader;
-      this.baseURL = baseURL;
-      this.noCertCodeSource = new CodeSource(overrideURL, null);
-    }
-
-    /**
-     * Returns a <code>Class</code> loaded by this
-     * <code>URLLoader</code>, or <code>null</code> when this loader
-     * either can't load the class or doesn't know how to load classes
-     * at all.
-     */
-    Class getClass(String className)
-    {
-      return null;
-    }
-
-    /**
-     * Returns a <code>Resource</code> loaded by this
-     * <code>URLLoader</code>, or <code>null</code> when no
-     * <code>Resource</code> with the given name exists.
-     */
-    abstract Resource getResource(String s);
-
-    /**
-     * Returns the <code>Manifest</code> associated with the
-     * <code>Resource</code>s loaded by this <code>URLLoader</code> or
-     * <code>null</code> there is no such <code>Manifest</code>.
-     */
-    Manifest getManifest()
-    {
-      return null;
-    }
-
-    Vector getClassPath()
-    {
-      return null;
-    }
-  }
-
-  /**
-   * A <code>Resource</code> represents a resource in some
-   * <code>URLLoader</code>. It also contains all information (e.g.,
-   * <code>URL</code>, <code>CodeSource</code>, <code>Manifest</code> and
-   * <code>InputStream</code>) that is necessary for loading resources
-   * and creating classes from a <code>URL</code>.
-   */
-  abstract static class Resource
-  {
-    final URLLoader loader;
-
-    Resource(URLLoader loader)
-    {
-      this.loader = loader;
-    }
-
-    /**
-     * Returns the non-null <code>CodeSource</code> associated with
-     * this resource.
-     */
-    CodeSource getCodeSource()
-    {
-      Certificate[] certs = getCertificates();
-      if (certs == null)
-        return loader.noCertCodeSource;
-      else
-        return new CodeSource(loader.baseURL, certs);
-    }
-
-    /**
-     * Returns <code>Certificates</code> associated with this
-     * resource, or null when there are none.
-     */
-    Certificate[] getCertificates()
-    {
-      return null;
-    }
-
-    /**
-     * Return a <code>URL</code> that can be used to access this resource.
-     */
-    abstract URL getURL();
-
-    /**
-     * Returns the size of this <code>Resource</code> in bytes or
-     * <code>-1</code> when unknown.
-     */
-    abstract int getLength();
-
-    /**
-     * Returns the non-null <code>InputStream</code> through which
-     * this resource can be loaded.
-     */
-    abstract InputStream getInputStream() throws IOException;
-  }
-
-  /**
-   * A <code>JarURLLoader</code> is a type of <code>URLLoader</code>
-   * only loading from jar url.
-   */
-  static final class JarURLLoader extends URLLoader
-  {
-    final JarFile jarfile; // The jar file for this url
-    final URL baseJarURL; // Base jar: url for all resources loaded from jar
-
-    Vector classPath;	// The "Class-Path" attribute of this Jar's manifest
-
-    public JarURLLoader(URLClassLoader classloader, URL baseURL,
-			URL absoluteUrl)
-    {
-      super(classloader, baseURL, absoluteUrl);
-
-      // Cache url prefix for all resources in this jar url.
-      String external = baseURL.toExternalForm();
-      StringBuffer sb = new StringBuffer(external.length() + 6);
-      sb.append("jar:");
-      sb.append(external);
-      sb.append("!/");
-      String jarURL = sb.toString();
-
-      this.classPath = null;
-      URL baseJarURL = null;
-      JarFile jarfile = null;
-      try
-	{
-	  baseJarURL =
-	    new URL(null, jarURL, classloader.getURLStreamHandler("jar"));
-	  
-	  jarfile =
-	    ((JarURLConnection) baseJarURL.openConnection()).getJarFile();
-	  
-	  Manifest manifest;
-	  Attributes attributes;
-	  String classPathString;
-
-	  if ((manifest = jarfile.getManifest()) != null
-	      && (attributes = manifest.getMainAttributes()) != null
-	      && ((classPathString 
-		   = attributes.getValue(Attributes.Name.CLASS_PATH)) 
-		  != null))
-	    {
-	      this.classPath = new Vector();
-	      
-	      StringTokenizer st = new StringTokenizer(classPathString, " ");
-	      while (st.hasMoreElements ()) 
-		{  
-		  String e = st.nextToken ();
-		  try
-		    {
-		      URL url = new URL(baseURL, e);
-		      this.classPath.add(url);
-		    } 
-		  catch (java.net.MalformedURLException xx)
-		    {
-		      // Give up
-		    }
-		}
-	    }
-	}
-      catch (IOException ioe)
-        {
-	  /* ignored */
-        }
-
-      this.baseJarURL = baseJarURL;
-      this.jarfile = jarfile;
-    }
-
-    /** get resource with the name "name" in the jar url */
-    Resource getResource(String name)
-    {
-      if (jarfile == null)
-        return null;
-
-      if (name.startsWith("/"))
-        name = name.substring(1);
-
-      JarEntry je = jarfile.getJarEntry(name);
-      if (je != null)
-        return new JarURLResource(this, name, je);
-      else
-        return null;
-    }
-
-    Manifest getManifest()
-    {
-      try
-        {
-          return (jarfile == null) ? null : jarfile.getManifest();
-        }
-      catch (IOException ioe)
-        {
-          return null;
-        }
-    }
-
-    Vector getClassPath()
-    {
-      return classPath;
-    }
-  }
-
-  static final class JarURLResource extends Resource
-  {
-    private final JarEntry entry;
-    private final String name;
-
-    JarURLResource(JarURLLoader loader, String name, JarEntry entry)
-    {
-      super(loader);
-      this.entry = entry;
-      this.name = name;
-    }
-
-    InputStream getInputStream() throws IOException
-    {
-      return ((JarURLLoader) loader).jarfile.getInputStream(entry);
-    }
-
-    int getLength()
-    {
-      return (int) entry.getSize();
-    }
-
-    Certificate[] getCertificates()
-    {
-      // We have to get the entry from the jar file again, because the
-      // certificates will not be available until the entire entry has
-      // been read.
-      return ((JarEntry) ((JarURLLoader) loader).jarfile.getEntry(name))
-        .getCertificates();
-    }
-
-    URL getURL()
-    {
-      try
-        {
-          return new URL(((JarURLLoader) loader).baseJarURL, name,
-                         loader.classloader.getURLStreamHandler("jar"));
-        }
-      catch (MalformedURLException e)
-        {
-          InternalError ie = new InternalError();
-          ie.initCause(e);
-          throw ie;
-        }
-    }
-  }
-
-  /**
-   * Loader for remote directories.
-   */
-  static final class RemoteURLLoader extends URLLoader
-  {
-    private final String protocol;
-
-    RemoteURLLoader(URLClassLoader classloader, URL url)
-    {
-      super(classloader, url);
-      protocol = url.getProtocol();
-    }
-
-    /**
-     * Get a remote resource.
-     * Returns null if no such resource exists.
-     */
-    Resource getResource(String name)
-    {
-      try
-        {
-          URL url =
-            new URL(baseURL, name, classloader.getURLStreamHandler(protocol));
-          URLConnection connection = url.openConnection();
-
-          // Open the connection and check the stream
-          // just to be sure it exists.
-          int length = connection.getContentLength();
-          InputStream stream = connection.getInputStream();
-
-          // We can do some extra checking if it is a http request
-          if (connection instanceof HttpURLConnection)
-            {
-              int response =
-                ((HttpURLConnection) connection).getResponseCode();
-              if (response / 100 != 2)
-                return null;
-            }
-
-          if (stream != null)
-            return new RemoteResource(this, name, url, stream, length);
-          else
-            return null;
-        }
-      catch (IOException ioe)
-        {
-          return null;
-        }
-    }
-  }
-
-  /**
-   * A resource from some remote location.
-   */
-  static final class RemoteResource extends Resource
-  {
-    private final URL url;
-    private final InputStream stream;
-    private final int length;
-
-    RemoteResource(RemoteURLLoader loader, String name, URL url,
-                   InputStream stream, int length)
-    {
-      super(loader);
-      this.url = url;
-      this.stream = stream;
-      this.length = length;
-    }
-
-    InputStream getInputStream() throws IOException
-    {
-      return stream;
-    }
-
-    public int getLength()
-    {
-      return length;
-    }
-
-    public URL getURL()
-    {
-      return url;
-    }
-  }
-
-  /**
-   * A <code>SoURLLoader</code> is a type of <code>URLLoader</code>
-   * that loads classes and resources from a shared library.
-   */
-  final static class SoURLLoader extends URLLoader
-  {
-    SharedLibHelper helper;
-
-    SoURLLoader(URLClassLoader classloader, URL url)
-    {
-      this(classloader, url, url);
-    }
-
-    SoURLLoader(URLClassLoader classloader, URL url, URL overrideURL)
-    {
-      super(classloader, url, overrideURL);
-      helper = SharedLibHelper.findHelper(classloader, url.getFile(),
-					  noCertCodeSource, true);
-    }
-
-    Class getClass(String className)
-    {
-      return helper.findClass(className);
-    }
-
-    Resource getResource(String name)
-    {
-      URL url = helper.findResource(name);
-      if (url == null)
-	return null;
-      return new SoResource(this, url);
-    }
-  }
-
-  final static class SoResource extends Resource
-  {
-    SoResource(SoURLLoader loader, URL url)
-    {
-      super(loader);
-      this.url = url;
-    }
-
-    InputStream getInputStream() throws IOException
-    {
-      URLConnection conn = url.openConnection();
-      return conn.getInputStream();
-    }
-
-    public int getLength()
-    {
-      // FIXME we could find this by asking the core object.
-      return -1;
-    }
-
-    public URL getURL ()
-    {
-      return url;
-    }
-
-    final URL url;
-  }
-
-  /**
-   * A <code>FileURLLoader</code> is a type of <code>URLLoader</code>
-   * only loading from file url.
-   */
-  static final class FileURLLoader extends URLLoader
-  {
-    File dir; //the file for this file url
-
-    FileURLLoader(URLClassLoader classloader, URL url, URL absoluteUrl)
-    {
-      super(classloader, url, absoluteUrl);
-      dir = new File(absoluteUrl.getFile());
-    }
-
-    /** get resource with the name "name" in the file url */
-    Resource getResource(String name)
-    {
-      try 
- 	{
- 	  File file = new File(dir, name).getCanonicalFile();
- 	  if (file.exists() && !file.isDirectory())
- 	    return new FileResource(this, file);
- 	}
-      catch (IOException e)
- 	{
- 	  // Fall through...
- 	}
-      return null;
-    }
-  }
-
-  static final class FileResource extends Resource
-  {
-    final File file;
-
-    FileResource(FileURLLoader loader, File file)
-    {
-      super(loader);
-      this.file = file;
-    }
-
-    InputStream getInputStream() throws IOException
-    {
-      // Delegate to the URL content handler mechanism to retrieve an
-      // HTML representation of the directory listing if a directory
-      if (file.isDirectory())
-        {
-          URL url = getURL();
-          return url.openStream();
-        }
-      // Otherwise simply return a FileInputStream
-      return new FileInputStream(file);
-    }
-
-    public int getLength()
-    {
-      // Delegate to the URL content handler mechanism to retrieve the
-      // length of the HTML representation of the directory listing if
-      // a directory, or -1 if an exception occurs opening the directory.
-      if (file.isDirectory())
-        {
-          URL url = getURL();
-          try
-            {
-              URLConnection connection = url.openConnection();
-              return connection.getContentLength();
-            }
-          catch (IOException e)
-            {
-              return -1;
-            }
-        }
-      // Otherwise simply return the file length
-      return (int) file.length();
-    }
-
-    public URL getURL()
-    {
-      try
-        {
-          return file.toURL();
-        }
-      catch (MalformedURLException e)
-        {
-          InternalError ie = new InternalError();
-          ie.initCause(e);
-          throw ie;
-        }
-    }
-  }
-
-  /**
-   * A <code>CoreURLLoader</code> is a type of <code>URLLoader</code>
-   * only loading from core url.
-   */
-  static final class CoreURLLoader extends URLLoader
-  {
-    private String dir;
-
-    CoreURLLoader(URLClassLoader classloader, URL url)
-    {
-      super(classloader, url);
-      dir = baseURL.getFile();
-    }
-
-    /** get resource with the name "name" in the core url */
-    Resource getResource(String name)
-    {
-      Core core = Core.find (dir + name);
-      if (core != null)
-        return new CoreResource(this, name, core);
-      return null;
-    }
-  }
-
-  static final class CoreResource extends Resource
-  {
-    private final Core core;
-    private final String name;
-
-    CoreResource(CoreURLLoader loader, String name, Core core)
-    {
-      super(loader);
-      this.core = core;
-      this.name = name;
-    }
-
-    InputStream getInputStream() throws IOException
-    {
-      return new CoreInputStream(core);
-    }
-
-    public int getLength()
-    {
-      return core.length;
-    }
-
-    public URL getURL()
-    {
-      try
-        {
-          return new URL(loader.baseURL, name,
-                         loader.classloader.getURLStreamHandler("core"));
-        }
-      catch (MalformedURLException e)
-        {
-          InternalError ie = new InternalError();
-          ie.initCause(e);
-          throw ie;
-        }
-    }
-  }
-
-  // Constructors
-
-  /**
-   * Creates a URLClassLoader that gets classes from the supplied URLs.
-   * To determine if this classloader may be created the constructor of
-   * the super class (<code>SecureClassLoader</code>) is called first, which
-   * can throw a SecurityException. Then the supplied URLs are added
-   * in the order given to the URLClassLoader which uses these URLs to
-   * load classes and resources (after using the default parent ClassLoader).
-   *
-   * @param urls Locations that should be searched by this ClassLoader when
-   * resolving Classes or Resources.
-   * @exception SecurityException if the SecurityManager disallows the
-   * creation of a ClassLoader.
-   * @see SecureClassLoader
-   */
-  public URLClassLoader(URL[] urls) throws SecurityException
-  {
-    super();
-    this.factory = null;
-    this.securityContext = null;
-    addURLs(urls);
-  }
-
-  /**
-   * Creates a <code>URLClassLoader</code> that gets classes from the supplied
-   * <code>URL</code>s.
-   * To determine if this classloader may be created the constructor of
-   * the super class (<code>SecureClassLoader</code>) is called first, which
-   * can throw a SecurityException. Then the supplied URLs are added
-   * in the order given to the URLClassLoader which uses these URLs to
-   * load classes and resources (after using the supplied parent ClassLoader).
-   * @param urls Locations that should be searched by this ClassLoader when
-   * resolving Classes or Resources.
-   * @param parent The parent class loader used before trying this class
-   * loader.
-   * @exception SecurityException if the SecurityManager disallows the
-   * creation of a ClassLoader.
-   * @exception SecurityException
-   * @see SecureClassLoader
-   */
-  public URLClassLoader(URL[] urls, ClassLoader parent)
-    throws SecurityException
-  {
-    super(parent);
-    this.factory = null;
-    this.securityContext = null;
-    addURLs(urls);
-  }
-
-  // Package-private to avoid a trampoline constructor.
-  /**
-   * Package-private constructor used by the static
-   * <code>newInstance(URL[])</code> method.  Creates an
-   * <code>URLClassLoader</code> with the given parent but without any
-   * <code>URL</code>s yet. This is used to bypass the normal security
-   * check for creating classloaders, but remembers the security
-   * context which will be used when defining classes.  The
-   * <code>URL</code>s to load from must be added by the
-   * <code>newInstance()</code> method in the security context of the
-   * caller.
-   *
-   * @param securityContext the security context of the unprivileged code.
-   */
-  URLClassLoader(ClassLoader parent, AccessControlContext securityContext)
-  {
-    super(parent);
-    this.factory = null;
-    this.securityContext = securityContext;
-  }
-
-  /**
-   * Creates a URLClassLoader that gets classes from the supplied URLs.
-   * To determine if this classloader may be created the constructor of
-   * the super class (<CODE>SecureClassLoader</CODE>) is called first, which
-   * can throw a SecurityException. Then the supplied URLs are added
-   * in the order given to the URLClassLoader which uses these URLs to
-   * load classes and resources (after using the supplied parent ClassLoader).
-   * It will use the supplied <CODE>URLStreamHandlerFactory</CODE> to get the
-   * protocol handlers of the supplied URLs.
-   * @param urls Locations that should be searched by this ClassLoader when
-   * resolving Classes or Resources.
-   * @param parent The parent class loader used before trying this class
-   * loader.
-   * @param factory Used to get the protocol handler for the URLs.
-   * @exception SecurityException if the SecurityManager disallows the
-   * creation of a ClassLoader.
-   * @exception SecurityException
-   * @see SecureClassLoader
-   */
-  public URLClassLoader(URL[] urls, ClassLoader parent,
-                        URLStreamHandlerFactory factory)
-    throws SecurityException
-  {
-    super(parent);
-    this.securityContext = null;
-    this.factory = factory;
-    addURLs(urls);
-
-    // If this factory is still not in factoryCache, add it,
-    //   since we only support three protocols so far, 5 is enough
-    //   for cache initial size
-    synchronized (factoryCache)
-      {
-        if (factory != null && factoryCache.get(factory) == null)
-          factoryCache.put(factory, new HashMap(5));
-      }
-  }
-
-  // Methods
-
-  /**
-   * Adds a new location to the end of the internal URL store.
-   * @param newUrl the location to add
-   */
-  protected void addURL(URL newUrl)
-  {
-    urls.add(newUrl);
-    addURLImpl(newUrl);
-  }
-
-  private void addURLImpl(URL newUrl)
-  {
-    synchronized (this)
-      {
-        if (newUrl == null)
-          return; // Silently ignore...
-
-	// Reset the toString() value.
-	thisString = null;
-
-        // Check global cache to see if there're already url loader
-        // for this url.
-        URLLoader loader = (URLLoader) urlloaders.get(newUrl);
-        if (loader == null)
-          {
-            String file = newUrl.getFile();
-            String protocol = newUrl.getProtocol();
-
-	    // If we have a file: URL, we want to make it absolute
-	    // here, before we decide whether it is really a jar.
-	    URL absoluteURL;
-	    if ("file".equals (protocol))
-	      {
-		File dir = new File(file);
-		URL absUrl;
-		try
-		  {
-		    absoluteURL = dir.getCanonicalFile().toURL();
-		  }
-		catch (IOException ignore)
-		  {
-		    try
-		      {
-			absoluteURL = dir.getAbsoluteFile().toURL();
-		      }
-		    catch (MalformedURLException _)
-		      {
-			// This really should not happen.
-			absoluteURL = newUrl;
-		      }
-		  }
-	      }
-	    else
-	      {
-		// This doesn't hurt, and it simplifies the logic a
-		// little.
-		absoluteURL = newUrl;
-	      }
-
-            // Check that it is not a directory
-	    if ("gcjlib".equals(protocol))
-	      loader = new SoURLLoader(this, newUrl);
-	    else if (! (file.endsWith("/") || file.endsWith(File.separator)))
-              loader = new JarURLLoader(this, newUrl, absoluteURL);
-            else if ("file".equals(protocol))
-	      loader = new FileURLLoader(this, newUrl, absoluteURL);
-	    else if ("core".equals(protocol))
-	      loader = new CoreURLLoader(this, newUrl);
-            else
-              loader = new RemoteURLLoader(this, newUrl);
-
-            // Cache it.
-            urlloaders.put(newUrl, loader);
-          }
-
-	urlinfos.add(loader);
-
-	Vector extraUrls = loader.getClassPath();
-	if (extraUrls != null)
-	  {
-	    Iterator it = extraUrls.iterator();
-	    while (it.hasNext())
-	      {
-		URL url = (URL)it.next();
-		URLLoader extraLoader = (URLLoader) urlloaders.get(url);
-		if (! urlinfos.contains (extraLoader))
-		  addURLImpl(url);
-	      }
-	  }
-
-      }
-  }
-
-  /**
-   * Adds an array of new locations to the end of the internal URL
-   * store.  Called from the the constructors. Should not call to the
-   * protected addURL() method since that can be overridden and
-   * subclasses are not yet in a good state at this point.
-   * jboss 4.0.3 for example depends on this.
-   *
-   * @param newUrls the locations to add
-   */
-  private void addURLs(URL[] newUrls)
-  {
-    for (int i = 0; i < newUrls.length; i++)
-      {
-	urls.add(newUrls[i]);
-	addURLImpl(newUrls[i]);
-      }
-  }
-
-  /**
-   * Look in both Attributes for a given value.  The first Attributes
-   * object, if not null, has precedence.
-   */
-  private String getAttributeValue(Attributes.Name name, Attributes first,
-				   Attributes second)
-  {
-    String result = null;
-    if (first != null)
-      result = first.getValue(name);
-    if (result == null)
-      result = second.getValue(name);
-    return result;
-  }
-
-  /**
-   * Defines a Package based on the given name and the supplied manifest
-   * information. The manifest indicates the title, version and
-   * vendor information of the specification and implementation and whether the
-   * package is sealed. If the Manifest indicates that the package is sealed
-   * then the Package will be sealed with respect to the supplied URL.
-   *
-   * @param name The name of the package
-   * @param manifest The manifest describing the specification,
-   * implementation and sealing details of the package
-   * @param url the code source url to seal the package
-   * @return the defined Package
-   * @throws IllegalArgumentException If this package name already exists
-   * in this class loader
-   */
-  protected Package definePackage(String name, Manifest manifest, URL url)
-    throws IllegalArgumentException
-  {
-    // Compute the name of the package as it may appear in the
-    // Manifest.
-    StringBuffer xform = new StringBuffer(name);
-    for (int i = xform.length () - 1; i >= 0; --i)
-      if (xform.charAt(i) == '.')
-	xform.setCharAt(i, '/');
-    xform.append('/');
-    String xformName = xform.toString();
-
-    Attributes entryAttr = manifest.getAttributes(xformName);
-    Attributes attr = manifest.getMainAttributes();
-
-    String specTitle
-      = getAttributeValue(Attributes.Name.SPECIFICATION_TITLE,
-			  entryAttr, attr);
-    String specVersion
-      = getAttributeValue(Attributes.Name.SPECIFICATION_VERSION,
-			  entryAttr, attr);
-    String specVendor
-      = getAttributeValue(Attributes.Name.SPECIFICATION_VENDOR,
-			  entryAttr, attr);
-    String implTitle
-      = getAttributeValue(Attributes.Name.IMPLEMENTATION_TITLE,
-			  entryAttr, attr);
-    String implVersion
-      = getAttributeValue(Attributes.Name.IMPLEMENTATION_VERSION,
-			  entryAttr, attr);
-    String implVendor
-      = getAttributeValue(Attributes.Name.IMPLEMENTATION_VENDOR,
-			  entryAttr, attr);
-
-    // Look if the Manifest indicates that this package is sealed
-    // XXX - most likely not completely correct!
-    // Shouldn't we also check the sealed attribute of the complete jar?
-    // http://java.sun.com/products/jdk/1.4/docs/guide/extensions/spec.html#bundled
-    // But how do we get that jar manifest here?
-    String sealed = attr.getValue(Attributes.Name.SEALED);
-    if ("false".equals(sealed))
-      // make sure that the URL is null so the package is not sealed
-      url = null;
-
-    return definePackage(name,
-			 specTitle, specVendor, specVersion,
-			 implTitle, implVendor, implVersion,
-			 url);
-  }
-
-  /**
-   * Finds (the first) class by name from one of the locations. The locations
-   * are searched in the order they were added to the URLClassLoader.
-   *
-   * @param className the classname to find
-   * @exception ClassNotFoundException when the class could not be found or
-   * loaded
-   * @return a Class object representing the found class
-   */
-  protected Class findClass(final String className)
-    throws ClassNotFoundException
-  {
-    // Just try to find the resource by the (almost) same name
-    String resourceName = className.replace('.', '/') + ".class";
-    int max = urlinfos.size();
-    Resource resource = null;
-    for (int i = 0; i < max && resource == null; i++)
-      {
-	URLLoader loader = (URLLoader)urlinfos.elementAt(i);
-	if (loader == null)
-	  continue;
-
-	Class k = loader.getClass(className);
-	if (k != null)
-	  return k;
-
-	resource = loader.getResource(resourceName);
-      }
-    if (resource == null)
-      {
-	String message = className + " not found";
-	// Calling this.toString() during VM startup when a
-	// security manager is in force causes the stack to
-	// be unwound before it can properly be decoded.
-	if (Thread.currentThread() != null)
-	  message += " in " + this;
-	throw new ClassNotFoundException(message);
-      }
-
-    // Try to read the class data, create the CodeSource, Package and
-    // construct the class (and watch out for those nasty IOExceptions)
-    try
-      {
-	byte[] data;
-	InputStream in = resource.getInputStream();
-	try
-	  {
-	    int length = resource.getLength();
-	    if (length != -1)
-	      {
-		// We know the length of the data.
-		// Just try to read it in all at once
-		data = new byte[length];
-		int pos = 0;
-		while (length - pos > 0)
-		  {
-		    int len = in.read(data, pos, length - pos);
-		    if (len == -1)
-		      throw new EOFException("Not enough data reading from: "
-					     + in);
-		    pos += len;
-		  }
-	      }
-	    else
-	      {
-		// We don't know the data length.
-		// Have to read it in chunks.
-		ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
-		byte[] b = new byte[4096];
-		int l = 0;
-		while (l != -1)
-		  {
-		    l = in.read(b);
-		    if (l != -1)
-		      out.write(b, 0, l);
-		  }
-		data = out.toByteArray();
-	      }
-	  }
-	finally
-	  {
-	    in.close();
-	  }
-	final byte[] classData = data;
-
-        // Now get the CodeSource
-        final CodeSource source = resource.getCodeSource();
-
-        // Find out package name
-        String packageName = null;
-        int lastDot = className.lastIndexOf('.');
-        if (lastDot != -1)
-          packageName = className.substring(0, lastDot);
-
-        if (packageName != null && getPackage(packageName) == null)
-          {
-            // define the package
-            Manifest manifest = resource.loader.getManifest();
-            if (manifest == null)
-              definePackage(packageName, null, null, null, null, null, null,
-                            null);
-            else
-              definePackage(packageName, manifest, resource.loader.baseURL);
-          }
-
-        // And finally construct the class!
-        SecurityManager sm = System.getSecurityManager();
-        Class result = null;
-        if (sm != null && securityContext != null)
-          {
-            result = (Class)AccessController.doPrivileged
-              (new PrivilegedAction()
-                {
-                  public Object run()
-                  {
-                    return defineClass(className, classData,
-                                       0, classData.length,
-                                       source);
-                  }
-                }, securityContext);
-          }
-        else
-          result = defineClass(className, classData, 0, classData.length, source);
-
-        // Avoid NullPointerExceptions.
-        Certificate[] resourceCertificates = resource.getCertificates();
-        if(resourceCertificates != null)
-          super.setSigners(result, resourceCertificates);
-        
-        return result;
-      }
-    catch (IOException ioe)
-      {
-	ClassNotFoundException cnfe;
-	cnfe = new ClassNotFoundException(className + " not found in " + this);
-	cnfe.initCause(ioe);
-	throw cnfe;
-      }
-  }
-  
-  // Cached String representation of this URLClassLoader
-  private String thisString;
-  
-  /**
-   * Returns a String representation of this URLClassLoader giving the
-   * actual Class name, the URLs that are searched and the parent
-   * ClassLoader.
-   */
-  public String toString()
-  {
-    synchronized (this)
-      {
-	if (thisString == null)
-	  {
-	    StringBuffer sb = new StringBuffer();
-	    sb.append(this.getClass().getName());
-	    sb.append("{urls=[" );
-	    URL[] thisURLs = getURLs();
-	    for (int i = 0; i < thisURLs.length; i++)
-	      {
-		sb.append(thisURLs[i]);
-		if (i < thisURLs.length - 1)
-		  sb.append(',');
-	      }
-	    sb.append(']');
-	    sb.append(", parent=");
-	    sb.append(getParent());
-	    sb.append('}');
-	    thisString = sb.toString();
-	  }
-	return thisString;
-      }
-  }
-
-  /**
-   * Finds the first occurrence of a resource that can be found. The locations
-   * are searched in the order they were added to the URLClassLoader.
-   *
-   * @param resourceName the resource name to look for
-   * @return the URLResource for the resource if found, null otherwise
-   */
-  private Resource findURLResource(String resourceName)
-  {
-    int max = urlinfos.size();
-    for (int i = 0; i < max; i++)
-      {
-        URLLoader loader = (URLLoader) urlinfos.elementAt(i);
-        if (loader == null)
-          continue;
-
-        Resource resource = loader.getResource(resourceName);
-        if (resource != null)
-          return resource;
-      }
-    return null;
-  }
-
-  /**
-   * Finds the first occurrence of a resource that can be found.
-   *
-   * @param resourceName the resource name to look for
-   * @return the URL if found, null otherwise
-   */
-  public URL findResource(String resourceName)
-  {
-    Resource resource = findURLResource(resourceName);
-    if (resource != null)
-      return resource.getURL();
-
-    // Resource not found
-    return null;
-  }
-
-  /**
-   * If the URLStreamHandlerFactory has been set this return the appropriate
-   * URLStreamHandler for the given protocol, if not set returns null.
-   *
-   * @param protocol the protocol for which we need a URLStreamHandler
-   * @return the appropriate URLStreamHandler or null
-   */
-  URLStreamHandler getURLStreamHandler(String protocol)
-  {
-    if (factory == null)
-      return null;
-
-    URLStreamHandler handler;
-    synchronized (factoryCache)
-      {
-        // Check if there're handler for the same protocol in cache.
-        HashMap cache = (HashMap) factoryCache.get(factory);
-        handler = (URLStreamHandler) cache.get(protocol);
-        if (handler == null)
-          {
-            // Add it to cache.
-            handler = factory.createURLStreamHandler(protocol);
-            cache.put(protocol, handler);
-          }
-      }
-    return handler;
-  }
-
-  /**
-   * Finds all the resources with a particular name from all the locations.
-   *
-   * @param resourceName the name of the resource to lookup
-   * @return a (possible empty) enumeration of URLs where the resource can be
-   * found
-   * @exception IOException when an error occurs accessing one of the
-   * locations
-   */
-  public Enumeration findResources(String resourceName)
-    throws IOException
-  {
-    Vector resources = new Vector();
-    int max = urlinfos.size();
-    for (int i = 0; i < max; i++)
-      {
-        URLLoader loader = (URLLoader) urlinfos.elementAt(i);
-        Resource resource = loader.getResource(resourceName);
-        if (resource != null)
-          resources.add(resource.getURL());
-      }
-    return resources.elements();
-  }
-
-  /**
-   * Returns the permissions needed to access a particular code
-   * source.  These permissions includes those returned by
-   * <code>SecureClassLoader.getPermissions()</code> and the actual
-   * permissions to access the objects referenced by the URL of the
-   * code source.  The extra permissions added depend on the protocol
-   * and file portion of the URL in the code source. If the URL has
-   * the "file" protocol ends with a '/' character then it must be a
-   * directory and a file Permission to read everything in that
-   * directory and all subdirectories is added. If the URL had the
-   * "file" protocol and doesn't end with a '/' character then it must
-   * be a normal file and a file permission to read that file is
-   * added. If the <code>URL</code> has any other protocol then a
-   * socket permission to connect and accept connections from the host
-   * portion of the URL is added.
-   *
-   * @param source The codesource that needs the permissions to be accessed
-   * @return the collection of permissions needed to access the code resource
-   * @see java.security.SecureClassLoader#getPermissions(CodeSource)
-   */
-  protected PermissionCollection getPermissions(CodeSource source)
-  {
-    // XXX - This implementation does exactly as the Javadoc describes.
-    // But maybe we should/could use URLConnection.getPermissions()?
-    // First get the permissions that would normally be granted
-    PermissionCollection permissions = super.getPermissions(source);
-
-    // Now add any extra permissions depending on the URL location.
-    URL url = source.getLocation();
-    String protocol = url.getProtocol();
-    if (protocol.equals("file"))
-      {
-        String file = url.getFile();
-
-        // If the file end in / it must be an directory.
-        if (file.endsWith("/") || file.endsWith(File.separator))
-          {
-            // Grant permission to read everything in that directory and
-            // all subdirectories.
-            permissions.add(new FilePermission(file + "-", "read"));
-          }
-        else
-          {
-            // It is a 'normal' file.
-            // Grant permission to access that file.
-            permissions.add(new FilePermission(file, "read"));
-          }
-      }
-    else
-      {
-        // Grant permission to connect to and accept connections from host
-        String host = url.getHost();
-        if (host != null)
-          permissions.add(new SocketPermission(host, "connect,accept"));
-      }
-
-    return permissions;
-  }
-
-  /**
-   * Returns all the locations that this class loader currently uses the
-   * resolve classes and resource. This includes both the initially supplied
-   * URLs as any URLs added later by the loader.
-   * @return All the currently used URLs
-   */
-  public URL[] getURLs()
-  {
-    return (URL[]) urls.toArray(new URL[urls.size()]);
-  }
-
-  /**
-   * Creates a new instance of a <code>URLClassLoader</code> that gets
-   * classes from the supplied <code>URL</code>s. This class loader
-   * will have as parent the standard system class loader.
-   *
-   * @param urls the initial URLs used to resolve classes and
-   * resources
-   *
-   * @return the class loader
-   *
-   * @exception SecurityException when the calling code does not have
-   * permission to access the given <code>URL</code>s
-   */
-  public static URLClassLoader newInstance(URL[] urls)
-    throws SecurityException
-  {
-    return newInstance(urls, null);
-  }
-
-  /**
-   * Creates a new instance of a <code>URLClassLoader</code> that gets
-   * classes from the supplied <code>URL</code>s and with the supplied
-   * loader as parent class loader.
-   *
-   * @param urls the initial URLs used to resolve classes and
-   * resources
-   * @param parent the parent class loader
-   *
-   * @return the class loader
-   *
-   * @exception SecurityException when the calling code does not have
-   * permission to access the given <code>URL</code>s
-   */
-  public static URLClassLoader newInstance(URL[] urls, final ClassLoader parent)
-    throws SecurityException
-  {
-    SecurityManager sm = System.getSecurityManager();
-    if (sm == null)
-      return new URLClassLoader(urls, parent);
-    else
-      {
-        final Object securityContext = sm.getSecurityContext();
-
-        // XXX - What to do with anything else then an AccessControlContext?
-        if (! (securityContext instanceof AccessControlContext))
-          throw new SecurityException("securityContext must be AccessControlContext: "
-                                      + securityContext);
-
-        URLClassLoader loader =
-          (URLClassLoader) AccessController.doPrivileged(new PrivilegedAction()
-              {
-                public Object run()
-                {
-                  return new URLClassLoader(parent,
-                                            (AccessControlContext) securityContext);
-                }
-              });
-        loader.addURLs(urls);
-        return loader;
-      }
-  }
-}
diff --git a/libjava/sources.am b/libjava/sources.am
index fea09f26961c..418bd8d7c52a 100644
--- a/libjava/sources.am
+++ b/libjava/sources.am
@@ -1338,6 +1338,7 @@ classpath/gnu/java/net/loader/FileResource.java \
 classpath/gnu/java/net/loader/FileURLLoader.java \
 classpath/gnu/java/net/loader/JarURLLoader.java \
 classpath/gnu/java/net/loader/JarURLResource.java \
+gnu/java/net/loader/Load_gcjlib.java \
 classpath/gnu/java/net/loader/RemoteResource.java \
 classpath/gnu/java/net/loader/RemoteURLLoader.java \
 classpath/gnu/java/net/loader/Resource.java \
@@ -4846,7 +4847,7 @@ classpath/java/net/SocketTimeoutException.java \
 classpath/java/net/URI.java \
 classpath/java/net/URISyntaxException.java \
 classpath/java/net/URL.java \
-java/net/URLClassLoader.java \
+classpath/java/net/URLClassLoader.java \
 classpath/java/net/URLConnection.java \
 classpath/java/net/URLDecoder.java \
 classpath/java/net/URLEncoder.java \
-- 
GitLab