From 28de4656af47774d80ea1a8c828034c75047bb2d Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 25 Feb 2004 09:43:36 +0000 Subject: [PATCH] synced back up; 126k darcs-hash:20040225094336-5007d-e4c4c59d1dbf7a1705435aea9ad29fcc0bd78382.gz --- Makefile | 12 +++++++--- src/org/ibex/plat/GCJ.java | 20 ----------------- src/org/ibex/util/BytecodePruner.java | 40 ++++++++++++++++++++++++++++----- 3 files changed, 44 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 7f3c4dc..5fb91ff 100644 --- a/Makefile +++ b/Makefile @@ -286,7 +286,12 @@ build/$(platform)/$(target_bin): upstream/jpeg-6b/build-$(target)/libjpeg.a cd upstream/gcc-3.3/build-$(target)/$(target)/libjava; \ $(shell pwd)/upstream/install/$(target)/bin/ar cq \ $(shell pwd)/build/$(platform)/ibex.a \ - `find $(shell pwd)/build/$(platform) -name \*.o` \ + `find $(shell pwd)/build/$(platform) -name \*.o` + + rm -f build/$(platform)/natibex.a + cd upstream/gcc-3.3/build-$(target)/$(target)/libjava; \ + $(shell pwd)/upstream/install/$(target)/bin/ar cq \ + $(shell pwd)/build/$(platform)/natibex.a \ `cat $(shell pwd)/.natbins` # --relax,-O2,--no-whole-archive, PATH=upstream/install/bin:$$PATH upstream/install/bin/$(target)-gcj \ @@ -296,9 +301,10 @@ build/$(platform)/$(target_bin): upstream/jpeg-6b/build-$(target)/libjpeg.a -Lupstream/install/$(target)/lib \ -Lupstream/install/lib \ -Os -w \ - -Wl,--whole-archive \ + -Wl,--whole-archive \ build/$(platform)/ibex.a \ - -Wl,--no-whole-archive \ + -Wl,--no-whole-archive \ + build/$(platform)/natibex.a \ upstream/jpeg-6b/build-$(target)/libjpeg.a \ $(link_flags) \ upstream/gcc-3.3/build-$(target)/$(target)/boehm-gc/.libs/libgcjgc.a \ diff --git a/src/org/ibex/plat/GCJ.java b/src/org/ibex/plat/GCJ.java index e68dc29..8954660 100644 --- a/src/org/ibex/plat/GCJ.java +++ b/src/org/ibex/plat/GCJ.java @@ -10,26 +10,6 @@ import java.security.cert.*; /** common superclass for all platforms that use GCJ to compile a native binary */ public abstract class GCJ extends Platform { - // static references to these classes ensure that the linker will include them - /* - public static Object c1 = new gnu.java.locale.Calendar(); - public static Object c2 = new java.util.GregorianCalendar(); - public static Object c3n = new gnu.gcj.convert.Input_ASCII(); - public static Object c4 = new gnu.gcj.convert.Input_UTF8(); - public static Object c5 = new gnu.gcj.convert.Input_8859_1(); - public static Object c7 = new gnu.gcj.convert.Output_ASCII(); - public static Object c6 = new gnu.java.locale.LocaleInformation(); - public static Object c10 = new gnu.gcj.protocol.http.Handler(); - public static Object c11 = new gnu.gcj.protocol.jar.Handler(); - public static Object c12 = new java.security.cert.Certificate("foo") { - public byte[] getEncoded() throws CertificateEncodingException { return null; } - public void verify(PublicKey key) { } - public void verify(PublicKey key, String sigProvider) { } - public String toString() { return "foocert"; } - public PublicKey getPublicKey() { return null; } - }; - */ - protected native InputStream _getBuiltinInputStream(); protected native void _decodeJPEG(InputStream is, Picture p); diff --git a/src/org/ibex/util/BytecodePruner.java b/src/org/ibex/util/BytecodePruner.java index 519fa13..eb3040c 100644 --- a/src/org/ibex/util/BytecodePruner.java +++ b/src/org/ibex/util/BytecodePruner.java @@ -22,7 +22,8 @@ public class BytecodePruner { public void loadAllMethods(String classname) throws Exception { visitJavaClass(repo.loadClass(classname)); Method[] meths = getMethods(repo.loadClass(classname)); - for(int i=0; i"); + } + if (instr instanceof org.apache.bcel.generic.FieldOrMethod) + load(((org.apache.bcel.generic.FieldOrMethod)instr).getClassType(cpg)); + if (instr instanceof org.apache.bcel.generic.FieldInstruction) { + load(((org.apache.bcel.generic.FieldInstruction)instr).getFieldType(cpg)); + load(((org.apache.bcel.generic.FieldInstruction)instr).getType(cpg)); + String fieldName = ((org.apache.bcel.generic.FieldInstruction)instr).getFieldName(cpg); + JavaClass jc2 = repo.loadClass(((ObjectType)((org.apache.bcel.generic.FieldInstruction)instr). + getLoadClassType(cpg)).getClassName()); + Field[] fields = jc2.getFields(); + for(int j=0; j")) visitJavaMethod(clazz, methods[i]); - // only if ctor reachable (?) if (methods[i].getName().equals("equals")) visitJavaMethod(clazz, methods[i]); if (methods[i].getName().equals("hashCode")) visitJavaMethod(clazz, methods[i]); -- 1.7.10.4