From c01e3ff69bd8a07fc378ca58a18ffdc20f53cedb Mon Sep 17 00:00:00 2001 From: leungwensen Date: Sun, 15 May 2016 18:43:39 +0800 Subject: [PATCH] for ubuntu 64bit --- lib/Makefile | 4 ++-- net/loveruby/cflat/compiler/TypeChecker.java | 2 +- net/loveruby/cflat/compiler/TypeResolver.java | 2 +- .../cflat/entity/{Parameter.java => CBCParameter.java} | 4 ++-- net/loveruby/cflat/entity/DefinedFunction.java | 2 +- net/loveruby/cflat/entity/Function.java | 2 +- net/loveruby/cflat/entity/Params.java | 8 ++++---- net/loveruby/cflat/entity/UndefinedFunction.java | 2 +- net/loveruby/cflat/parser/Parser.jj | 10 +++++----- net/loveruby/cflat/sysdep/GNULinker.java | 8 ++++---- net/loveruby/cflat/sysdep/x86/CodeGenerator.java | 4 ++-- 11 files changed, 24 insertions(+), 24 deletions(-) rename net/loveruby/cflat/entity/{Parameter.java => CBCParameter.java} (76%) diff --git a/lib/Makefile b/lib/Makefile index cf01739..9e18312 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -11,9 +11,9 @@ AR_CREATE = ar crs .SUFFIXES: .cb .s .o .cb.o: - $(CBC) $(CBFLAGS) -c $< -o $@ + $(CBC) $(CBFLAGS) -Wa,"--32" -c $< -o $@ .s.o: - $(CBC) -c $< + $(CBC) -Wa,"--32" -c $< $(TARGET): $(OBJS) $(AR_CREATE) $(TARGET) $(OBJS) diff --git a/net/loveruby/cflat/compiler/TypeChecker.java b/net/loveruby/cflat/compiler/TypeChecker.java index 52f9c88..bdf77a6 100644 --- a/net/loveruby/cflat/compiler/TypeChecker.java +++ b/net/loveruby/cflat/compiler/TypeChecker.java @@ -51,7 +51,7 @@ class TypeChecker extends Visitor { } private void checkParamTypes(DefinedFunction f) { - for (Parameter param : f.parameters()) { + for (CBCParameter param : f.parameters()) { if (isInvalidParameterType(param.type())) { error(param.location(), "invalid parameter type: " + param.type()); diff --git a/net/loveruby/cflat/compiler/TypeResolver.java b/net/loveruby/cflat/compiler/TypeResolver.java index 3f015a7..485a0ea 100644 --- a/net/loveruby/cflat/compiler/TypeResolver.java +++ b/net/loveruby/cflat/compiler/TypeResolver.java @@ -131,7 +131,7 @@ public class TypeResolver extends Visitor // #@@range/resolveFunctionHeader{ private void resolveFunctionHeader(Function func) { bindType(func.typeNode()); - for (Parameter param : func.parameters()) { + for (CBCParameter param : func.parameters()) { // arrays must be converted to pointers in a function parameter. Type t = typeTable.getParamType(param.typeNode().typeRef()); param.typeNode().setType(t); diff --git a/net/loveruby/cflat/entity/Parameter.java b/net/loveruby/cflat/entity/CBCParameter.java similarity index 76% rename from net/loveruby/cflat/entity/Parameter.java rename to net/loveruby/cflat/entity/CBCParameter.java index 012111e..44ea93a 100644 --- a/net/loveruby/cflat/entity/Parameter.java +++ b/net/loveruby/cflat/entity/CBCParameter.java @@ -1,8 +1,8 @@ package net.loveruby.cflat.entity; import net.loveruby.cflat.ast.TypeNode; -public class Parameter extends DefinedVariable { - public Parameter(TypeNode type, String name) { +public class CBCParameter extends DefinedVariable { + public CBCParameter(TypeNode type, String name) { super(false, type, name, null); } diff --git a/net/loveruby/cflat/entity/DefinedFunction.java b/net/loveruby/cflat/entity/DefinedFunction.java index 75094fd..a9b6ef6 100644 --- a/net/loveruby/cflat/entity/DefinedFunction.java +++ b/net/loveruby/cflat/entity/DefinedFunction.java @@ -24,7 +24,7 @@ public class DefinedFunction extends Function { return true; } - public List parameters() { + public List parameters() { return params.parameters(); } diff --git a/net/loveruby/cflat/entity/Function.java b/net/loveruby/cflat/entity/Function.java index c84463a..f1d5c5e 100644 --- a/net/loveruby/cflat/entity/Function.java +++ b/net/loveruby/cflat/entity/Function.java @@ -17,7 +17,7 @@ abstract public class Function extends Entity { public boolean isInitialized() { return true; } abstract public boolean isDefined(); - abstract public List parameters(); + abstract public List parameters(); public Type returnType() { return type().getFunctionType().returnType(); diff --git a/net/loveruby/cflat/entity/Params.java b/net/loveruby/cflat/entity/Params.java index 4ca9279..6fd38f5 100644 --- a/net/loveruby/cflat/entity/Params.java +++ b/net/loveruby/cflat/entity/Params.java @@ -5,19 +5,19 @@ import net.loveruby.cflat.ast.Location; import java.util.List; import java.util.ArrayList; -public class Params extends ParamSlots +public class Params extends ParamSlots implements net.loveruby.cflat.ast.Dumpable { - public Params(Location loc, List paramDescs) { + public Params(Location loc, List paramDescs) { super(loc, paramDescs, false); } - public List parameters() { + public List parameters() { return paramDescriptors; } public ParamTypeRefs parametersTypeRef() { List typerefs = new ArrayList(); - for (Parameter param : paramDescriptors) { + for (CBCParameter param : paramDescriptors) { typerefs.add(param.typeNode().typeRef()); } return new ParamTypeRefs(location, typerefs, vararg); diff --git a/net/loveruby/cflat/entity/UndefinedFunction.java b/net/loveruby/cflat/entity/UndefinedFunction.java index 51c3287..6d55198 100644 --- a/net/loveruby/cflat/entity/UndefinedFunction.java +++ b/net/loveruby/cflat/entity/UndefinedFunction.java @@ -10,7 +10,7 @@ public class UndefinedFunction extends Function { this.params = params; } - public List parameters() { + public List parameters() { return params.parameters(); } diff --git a/net/loveruby/cflat/parser/Parser.jj b/net/loveruby/cflat/parser/Parser.jj index f6811b3..04531f3 100644 --- a/net/loveruby/cflat/parser/Parser.jj +++ b/net/loveruby/cflat/parser/Parser.jj @@ -567,7 +567,7 @@ Params params(): LOOKAHEAD( ")") t= { - return new Params(location(t), new ArrayList()); + return new Params(location(t), new ArrayList()); } | params=fixedparams() ["," "..." { params.acceptVarargs(); }] @@ -580,8 +580,8 @@ Params params(): // #@@range/fixedparams{ Params fixedparams(): { - List params = new ArrayList(); - Parameter param, param1; + List params = new ArrayList(); + CBCParameter param, param1; } { param1=param() { params.add(param1); } @@ -593,13 +593,13 @@ Params fixedparams(): // #@@} // #@@range/param{ -Parameter param(): +CBCParameter param(): { TypeNode t; String n; } { - t=type() n=name() { return new Parameter(t, n); } + t=type() n=name() { return new CBCParameter(t, n); } } // #@@} diff --git a/net/loveruby/cflat/sysdep/GNULinker.java b/net/loveruby/cflat/sysdep/GNULinker.java index 0487d6b..c343708 100644 --- a/net/loveruby/cflat/sysdep/GNULinker.java +++ b/net/loveruby/cflat/sysdep/GNULinker.java @@ -10,10 +10,10 @@ class GNULinker implements Linker { // #@@range/vars{ static final private String LINKER = "/usr/bin/ld"; static final private String DYNAMIC_LINKER = "/lib/ld-linux.so.2"; - static final private String C_RUNTIME_INIT = "/usr/lib/crti.o"; - static final private String C_RUNTIME_START = "/usr/lib/crt1.o"; - static final private String C_RUNTIME_START_PIE = "/usr/lib/Scrt1.o"; - static final private String C_RUNTIME_FINI = "/usr/lib/crtn.o"; + static final private String C_RUNTIME_INIT = "/usr/lib32/crti.o"; + static final private String C_RUNTIME_START = "/usr/lib32/crt1.o"; + static final private String C_RUNTIME_START_PIE = "/usr/lib32/Scrt1.o"; + static final private String C_RUNTIME_FINI = "/usr/lib32/crtn.o"; // #@@} ErrorHandler errorHandler; diff --git a/net/loveruby/cflat/sysdep/x86/CodeGenerator.java b/net/loveruby/cflat/sysdep/x86/CodeGenerator.java index cfcdca3..dd059c5 100644 --- a/net/loveruby/cflat/sysdep/x86/CodeGenerator.java +++ b/net/loveruby/cflat/sysdep/x86/CodeGenerator.java @@ -567,9 +567,9 @@ public class CodeGenerator implements net.loveruby.cflat.sysdep.CodeGenerator, static final private long PARAM_START_WORD = 2; // return addr and saved bp - private void locateParameters(List params) { + private void locateParameters(List params) { long numWords = PARAM_START_WORD; - for (Parameter var : params) { + for (CBCParameter var : params) { var.setMemref(mem(stackSizeFromWordNum(numWords), bp())); numWords++; }