mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
fixed bug # 80713
This commit is contained in:
parent
817d04d43f
commit
1cd952bf2b
8 changed files with 84 additions and 17 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2004-12-10 David Inglis
|
||||||
|
Fixed bug #80713
|
||||||
|
|
||||||
|
* utils/org/eclipse/cdt/utils/BinaryObjectAdapter.java
|
||||||
|
* utils/org/eclipse/cdt/utils/coff/PE.java
|
||||||
|
* utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject.java
|
||||||
|
* utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java
|
||||||
|
* utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject.java
|
||||||
|
* utils/org/eclipse/cdt/utils/som/parser/SOMBinaryObject.java
|
||||||
|
* utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryParser.java
|
||||||
|
|
||||||
2004-12-09 Alain Magloire
|
2004-12-09 Alain Magloire
|
||||||
Fix for 80620
|
Fix for 80620
|
||||||
* utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java
|
* utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java
|
||||||
|
|
|
@ -34,7 +34,6 @@ public abstract class BinaryObjectAdapter extends BinaryFile implements IBinaryO
|
||||||
public String soname;
|
public String soname;
|
||||||
public String[] needed;
|
public String[] needed;
|
||||||
public String cpu;
|
public String cpu;
|
||||||
public IAddressFactory addressFactory;
|
|
||||||
|
|
||||||
public BinaryObjectInfo() {
|
public BinaryObjectInfo() {
|
||||||
cpu = soname = ""; //$NON-NLS-1$
|
cpu = soname = ""; //$NON-NLS-1$
|
||||||
|
@ -153,14 +152,7 @@ public abstract class BinaryObjectAdapter extends BinaryFile implements IBinaryO
|
||||||
}
|
}
|
||||||
return ""; //$NON-NLS-1$
|
return ""; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
public IAddressFactory getAddressFactory()
|
|
||||||
{
|
|
||||||
BinaryObjectInfo info = getBinaryObjectInfo();
|
|
||||||
if (info != null) {
|
|
||||||
return info.addressFactory;
|
|
||||||
}
|
|
||||||
return null; //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.core.model.IBinaryParser.IBinaryObject#getName()
|
* @see org.eclipse.cdt.core.model.IBinaryParser.IBinaryObject#getName()
|
||||||
*/
|
*/
|
||||||
|
@ -176,6 +168,7 @@ public abstract class BinaryObjectAdapter extends BinaryFile implements IBinaryO
|
||||||
* @see org.eclipse.cdt.core.model.IBinaryParser.IBinaryObject#getSymbols()
|
* @see org.eclipse.cdt.core.model.IBinaryParser.IBinaryObject#getSymbols()
|
||||||
*/
|
*/
|
||||||
public abstract ISymbol[] getSymbols();
|
public abstract ISymbol[] getSymbols();
|
||||||
|
public abstract IAddressFactory getAddressFactory();
|
||||||
|
|
||||||
protected abstract BinaryObjectInfo getBinaryObjectInfo();
|
protected abstract BinaryObjectInfo getBinaryObjectInfo();
|
||||||
|
|
||||||
|
|
|
@ -107,11 +107,6 @@ public class PE {
|
||||||
public int getWord() {
|
public int getWord() {
|
||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IAddressFactory getAddressFactory(){
|
|
||||||
return addrFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -17,11 +17,13 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.IAddressFactory;
|
||||||
import org.eclipse.cdt.core.IBinaryParser;
|
import org.eclipse.cdt.core.IBinaryParser;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
||||||
import org.eclipse.cdt.utils.AR;
|
import org.eclipse.cdt.utils.AR;
|
||||||
import org.eclipse.cdt.utils.Addr32;
|
import org.eclipse.cdt.utils.Addr32;
|
||||||
|
import org.eclipse.cdt.utils.Addr32Factory;
|
||||||
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
||||||
import org.eclipse.cdt.utils.Symbol;
|
import org.eclipse.cdt.utils.Symbol;
|
||||||
import org.eclipse.cdt.utils.coff.Coff;
|
import org.eclipse.cdt.utils.coff.Coff;
|
||||||
|
@ -33,6 +35,7 @@ import org.eclipse.core.runtime.IPath;
|
||||||
public class PEBinaryObject extends BinaryObjectAdapter {
|
public class PEBinaryObject extends BinaryObjectAdapter {
|
||||||
|
|
||||||
BinaryObjectInfo info;
|
BinaryObjectInfo info;
|
||||||
|
IAddressFactory addressFactory;
|
||||||
ISymbol[] symbols;
|
ISymbol[] symbols;
|
||||||
AR.ARHeader header;
|
AR.ARHeader header;
|
||||||
|
|
||||||
|
@ -132,7 +135,6 @@ public class PEBinaryObject extends BinaryObjectAdapter {
|
||||||
info.isLittleEndian = attribute.isLittleEndian();
|
info.isLittleEndian = attribute.isLittleEndian();
|
||||||
info.hasDebug = attribute.hasDebug();
|
info.hasDebug = attribute.hasDebug();
|
||||||
info.cpu = attribute.getCPU();
|
info.cpu = attribute.getCPU();
|
||||||
info.addressFactory = attribute.getAddressFactory();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void loadSymbols(PE pe) throws IOException {
|
protected void loadSymbols(PE pe) throws IOException {
|
||||||
|
@ -160,4 +162,15 @@ public class PEBinaryObject extends BinaryObjectAdapter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
|
||||||
|
*/
|
||||||
|
public IAddressFactory getAddressFactory() {
|
||||||
|
if (addressFactory == null) {
|
||||||
|
addressFactory = new Addr32Factory();
|
||||||
|
}
|
||||||
|
return addressFactory;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -17,10 +17,12 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.IAddressFactory;
|
||||||
import org.eclipse.cdt.core.IBinaryParser;
|
import org.eclipse.cdt.core.IBinaryParser;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
||||||
import org.eclipse.cdt.utils.AR;
|
import org.eclipse.cdt.utils.AR;
|
||||||
|
import org.eclipse.cdt.utils.Addr32Factory;
|
||||||
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
||||||
import org.eclipse.cdt.utils.Symbol;
|
import org.eclipse.cdt.utils.Symbol;
|
||||||
import org.eclipse.cdt.utils.elf.Elf;
|
import org.eclipse.cdt.utils.elf.Elf;
|
||||||
|
@ -35,6 +37,7 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
|
||||||
private BinaryObjectInfo info;
|
private BinaryObjectInfo info;
|
||||||
private ISymbol[] symbols;
|
private ISymbol[] symbols;
|
||||||
private final AR.ARHeader header;
|
private final AR.ARHeader header;
|
||||||
|
private IAddressFactory addressFactory;
|
||||||
|
|
||||||
public ElfBinaryObject(IBinaryParser parser, IPath p, AR.ARHeader h){
|
public ElfBinaryObject(IBinaryParser parser, IPath p, AR.ARHeader h){
|
||||||
super(parser, p, IBinaryFile.OBJECT);
|
super(parser, p, IBinaryFile.OBJECT);
|
||||||
|
@ -146,7 +149,7 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
|
||||||
info.isLittleEndian = attribute.isLittleEndian();
|
info.isLittleEndian = attribute.isLittleEndian();
|
||||||
info.hasDebug = attribute.hasDebug();
|
info.hasDebug = attribute.hasDebug();
|
||||||
info.cpu = attribute.getCPU();
|
info.cpu = attribute.getCPU();
|
||||||
info.addressFactory = attribute.getAddressFactory();
|
addressFactory = attribute.getAddressFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void loadSymbols(ElfHelper helper) throws IOException {
|
protected void loadSymbols(ElfHelper helper) throws IOException {
|
||||||
|
@ -183,4 +186,18 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
|
||||||
return super.getAdapter(adapter);
|
return super.getAdapter(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
|
||||||
|
*/
|
||||||
|
public IAddressFactory getAddressFactory() {
|
||||||
|
if (addressFactory == null) {
|
||||||
|
try {
|
||||||
|
loadInfo();
|
||||||
|
} catch (IOException e) {
|
||||||
|
return new Addr32Factory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return addressFactory;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,10 +17,12 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.IAddressFactory;
|
||||||
import org.eclipse.cdt.core.IBinaryParser;
|
import org.eclipse.cdt.core.IBinaryParser;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
||||||
import org.eclipse.cdt.utils.Addr32;
|
import org.eclipse.cdt.utils.Addr32;
|
||||||
|
import org.eclipse.cdt.utils.Addr32Factory;
|
||||||
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
||||||
import org.eclipse.cdt.utils.CPPFilt;
|
import org.eclipse.cdt.utils.CPPFilt;
|
||||||
import org.eclipse.cdt.utils.Symbol;
|
import org.eclipse.cdt.utils.Symbol;
|
||||||
|
@ -38,6 +40,7 @@ public class MachOBinaryObject extends BinaryObjectAdapter {
|
||||||
private BinaryObjectInfo info;
|
private BinaryObjectInfo info;
|
||||||
private ISymbol[] symbols;
|
private ISymbol[] symbols;
|
||||||
private AR.ARHeader header;
|
private AR.ARHeader header;
|
||||||
|
private IAddressFactory addressFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param parser
|
* @param parser
|
||||||
|
@ -200,5 +203,14 @@ public class MachOBinaryObject extends BinaryObjectAdapter {
|
||||||
list.add(new Symbol(this, name, type, new Addr32(array[i].n_value), size, filePath, array[i].getLineNumber(addr), array[i].getLineNumber(addr + size - 1)));
|
list.add(new Symbol(this, name, type, new Addr32(array[i].n_value), size, filePath, array[i].getLineNumber(addr), array[i].getLineNumber(addr + size - 1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
|
||||||
|
*/
|
||||||
|
public IAddressFactory getAddressFactory() {
|
||||||
|
if (addressFactory == null) {
|
||||||
|
addressFactory = new Addr32Factory();
|
||||||
|
}
|
||||||
|
return addressFactory;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,11 +18,13 @@ import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.IAddress;
|
import org.eclipse.cdt.core.IAddress;
|
||||||
|
import org.eclipse.cdt.core.IAddressFactory;
|
||||||
import org.eclipse.cdt.core.IBinaryParser;
|
import org.eclipse.cdt.core.IBinaryParser;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
||||||
import org.eclipse.cdt.utils.Addr2line;
|
import org.eclipse.cdt.utils.Addr2line;
|
||||||
import org.eclipse.cdt.utils.Addr32;
|
import org.eclipse.cdt.utils.Addr32;
|
||||||
|
import org.eclipse.cdt.utils.Addr32Factory;
|
||||||
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
||||||
import org.eclipse.cdt.utils.CPPFilt;
|
import org.eclipse.cdt.utils.CPPFilt;
|
||||||
import org.eclipse.cdt.utils.IGnuToolFactory;
|
import org.eclipse.cdt.utils.IGnuToolFactory;
|
||||||
|
@ -45,6 +47,7 @@ public class SOMBinaryObject extends BinaryObjectAdapter {
|
||||||
ISymbol[] symbols;
|
ISymbol[] symbols;
|
||||||
long starttime;
|
long starttime;
|
||||||
private ARHeader header;
|
private ARHeader header;
|
||||||
|
private IAddressFactory addressFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param parser
|
* @param parser
|
||||||
|
@ -314,4 +317,15 @@ public class SOMBinaryObject extends BinaryObjectAdapter {
|
||||||
}
|
}
|
||||||
return super.getAdapter(adapter);
|
return super.getAdapter(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
|
||||||
|
*/
|
||||||
|
public IAddressFactory getAddressFactory() {
|
||||||
|
if (addressFactory == null) {
|
||||||
|
addressFactory = new Addr32Factory();
|
||||||
|
}
|
||||||
|
return addressFactory;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -16,11 +16,13 @@ import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.IAddress;
|
import org.eclipse.cdt.core.IAddress;
|
||||||
|
import org.eclipse.cdt.core.IAddressFactory;
|
||||||
import org.eclipse.cdt.core.IBinaryParser;
|
import org.eclipse.cdt.core.IBinaryParser;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
|
||||||
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
import org.eclipse.cdt.core.IBinaryParser.ISymbol;
|
||||||
import org.eclipse.cdt.utils.Addr2line;
|
import org.eclipse.cdt.utils.Addr2line;
|
||||||
import org.eclipse.cdt.utils.Addr32;
|
import org.eclipse.cdt.utils.Addr32;
|
||||||
|
import org.eclipse.cdt.utils.Addr32Factory;
|
||||||
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
import org.eclipse.cdt.utils.BinaryObjectAdapter;
|
||||||
import org.eclipse.cdt.utils.CPPFilt;
|
import org.eclipse.cdt.utils.CPPFilt;
|
||||||
import org.eclipse.cdt.utils.IGnuToolFactory;
|
import org.eclipse.cdt.utils.IGnuToolFactory;
|
||||||
|
@ -41,6 +43,7 @@ public class XCOFFBinaryObject extends BinaryObjectAdapter {
|
||||||
ISymbol[] symbols;
|
ISymbol[] symbols;
|
||||||
long starttime;
|
long starttime;
|
||||||
private AR.MemberHeader header;
|
private AR.MemberHeader header;
|
||||||
|
private IAddressFactory addressFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param parser
|
* @param parser
|
||||||
|
@ -306,4 +309,13 @@ public class XCOFFBinaryObject extends BinaryObjectAdapter {
|
||||||
return super.getAdapter(adapter);
|
return super.getAdapter(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
|
||||||
|
*/
|
||||||
|
public IAddressFactory getAddressFactory() {
|
||||||
|
if (addressFactory == null) {
|
||||||
|
addressFactory = new Addr32Factory();
|
||||||
|
}
|
||||||
|
return addressFactory;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue