Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java')
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java23
1 files changed, 19 insertions, 4 deletions
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java
index 2a2aea38803..47260a32612 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java
@@ -77,8 +77,19 @@ public class DefaultGDBJtagDeviceImpl implements IGDBJtagDevice {
*/
public void doLoadImage(String imageFileName, String imageOffset, Collection<String> commands) {
String file = escapeScpaces(imageFileName);
- String cmd = "restore " + file + " " + imageOffset; //$NON-NLS-1$ //$NON-NLS-2$
- addCmd(commands, cmd);
+ if (imageOffset.length() > 0) {
+ // 'restore' simply puts the program into memory.
+ addCmd(commands, "restore " + file + " " + imageOffset);
+ }
+ else {
+ // 'load' puts the program into memory and sets the PC. To see why
+ // we do this when no offset is specified, see
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=310304#c20
+ addCmd(commands, "load " + file);
+ }
+ // 'exec-file' specifies the program as the context for getting memory.
+ // Basically, it tells gdb "this is the program we'll be debugging"
+ addCmd(commands, "exec-file " + file);
}
/* (non-Javadoc)
@@ -86,8 +97,12 @@ public class DefaultGDBJtagDeviceImpl implements IGDBJtagDevice {
*/
public void doLoadSymbol(String symbolFileName, String symbolOffset, Collection<String> commands) {
String file = escapeScpaces(symbolFileName);
- String cmd = "add-sym " + file + " " + symbolOffset; //$NON-NLS-1$ //$NON-NLS-2$
- addCmd(commands, cmd);
+ if (symbolOffset == null || (symbolOffset.length() == 0)) {
+ addCmd(commands, "symbol-file " + file);
+ }
+ else {
+ addCmd(commands, "add-sym " + file + " " + symbolOffset);
+ }
}
protected String escapeScpaces(String file) {

Back to the top