From 3d861af0c2d0672d2dd8064d6769d989b35c6f7b Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Wed, 27 Nov 2002 04:47:19 +0000 Subject: [PATCH] New file. --- .../org/eclipse/cdt/core/IBinaryParser.java | 90 +++++++++++++++++++ .../cdt/core/IBinaryParserConfiguration.java | 12 +++ .../core/BinaryParserConfiguration.java | 40 +++++++++ 3 files changed, 142 insertions(+) create mode 100644 core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParser.java create mode 100644 core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParserConfiguration.java create mode 100644 core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/BinaryParserConfiguration.java diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParser.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParser.java new file mode 100644 index 00000000000..10a1c8e9ac3 --- /dev/null +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParser.java @@ -0,0 +1,90 @@ +package org.eclipse.cdt.core; + +/* + * (c) Copyright IBM Corp. 2000, 2001. + * All Rights Reserved. + */ + +import java.io.IOException; +import java.io.InputStream; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.IAdaptable; + +/** + */ +public interface IBinaryParser { + + /** + * Represents a binary file for example an ELF executable. + */ + public interface IBinaryFile extends IAdaptable { + public int OBJECT = 0x1; + public int EXECUTABLE = 0x02; + public int SHARED = 0x04; + public int ARCHIVE = 0x08; + public int CORE = 0x10; + + public IFile getFile(); + public int getType(); + public InputStream getContents(); + } + + /** + * Represents an archive. + */ + public interface IBinaryArchive extends IBinaryFile { + public IBinaryObject[] getObjects(); + } + + /** + * Represents a binary, for example an ELF excutable. + */ + public interface IBinaryObject extends IBinaryFile { + + public boolean hasDebug(); + + public String getCPU(); + + public long getText(); + + public long getData(); + + public long getBSS(); + + public boolean isLittleEndian(); + + public ISymbol[] getSymbols(); + + public String getName(); + + } + + /** + * An executable. + */ + public interface IBinaryExecutable extends IBinaryObject { + public String[] getNeededSharedLibs(); + } + + /** + * A DLL. + */ + public interface IBinaryShared extends IBinaryExecutable { + public String getSoName(); + } + + public interface ISymbol { + public int FUNCTION = 0x01; + public int VARIABLE = 0x02; + + public String getName(); + public int getLineNumber(); + public String getFilename(); + public int getType(); + } + + public IBinaryFile getBinary(IFile file) throws IOException; + + public String getFormat(); +} diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParserConfiguration.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParserConfiguration.java new file mode 100644 index 00000000000..638887e0236 --- /dev/null +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IBinaryParserConfiguration.java @@ -0,0 +1,12 @@ +package org.eclipse.cdt.core; + + + +/** + */ +public interface IBinaryParserConfiguration { + + String getFormat(); + String getName(); + IBinaryParser getParser(); +} diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/BinaryParserConfiguration.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/BinaryParserConfiguration.java new file mode 100644 index 00000000000..b8eedc3a505 --- /dev/null +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/BinaryParserConfiguration.java @@ -0,0 +1,40 @@ +package org.eclipse.cdt.internal.core; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.IBinaryParser; +import org.eclipse.cdt.core.IBinaryParserConfiguration; + +/** + */ +public class BinaryParserConfiguration implements IBinaryParserConfiguration { + + String format; + String name; + + public BinaryParserConfiguration(String format, String name) { + this.format = format; + this.name = name; + } + + /** + * @see org.eclipse.cdt.core.IBinaryParserConfiguration#getFormat() + */ + public String getFormat() { + return format; + } + + /** + * @see org.eclipse.cdt.core.IBinaryParserConfiguration#getName() + */ + public String getName() { + return name; + } + + /** + * @see org.eclipse.cdt.core.IBinaryParserConfiguration#getParser() + */ + public IBinaryParser getParser() { + return CCorePlugin.getDefault().getBinaryParser(format); + } + +}