parse load_offset (bias) of restore command as long
authorPitchumani Sivanupandi <pitchumani.s@atmel.com>
Tue, 6 Oct 2015 16:29:03 +0000 (18:29 +0200)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Tue, 6 Oct 2015 16:29:03 +0000 (18:29 +0200)
Following failures are noticed for avr-gdb. This may be the case
for targets like AVR which has integer_to_address hook defined.

FAIL: gdb.base/dump.exp: struct copy, srec; value restored ok
FAIL: gdb.base/dump.exp: struct copy, ihex; value restored ok
FAIL: gdb.base/dump.exp: struct copy, tekhex; value restored ok

These tests are failed because load_offset(bias) of restore command
parsed as address.

command: restore filename [binary] bias start end

Except binary, other BFDs have a built-in location; gdb restores content
at offset 'bias' from that location. So, 'bias' of 'restore' command should
be parsed as address only when the file is binary.

Below patch changes gdb to parse 'bias' as long if the file is not binary.

gdb/ChangeLog

2015-10-06  Pitchumani Sivanupandi  <pitchumani.s@atmel.com>

* cli/cli-dump.c (restore_command): Parse load_offset (bias) as address
only when the file is binary.

gdb/ChangeLog
gdb/cli/cli-dump.c

index 20d4a4b425f4ca341bc4ba9a1f71d21d40576bee..1cb28c69e6db83e0d0da5fb1d3dddb51b8bc9f4d 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-06  Pitchumani Sivanupandi  <pitchumani.s@atmel.com>
+
+       * cli/cli-dump.c (restore_command): Parse load_offset (bias) as address
+       only when the file is binary.
+
 2015-10-02  James Bowman  <james.bowman@ftdichip.com>
 
        * ft32-tdep.c (ft32_analyze_prologue): Add function prolog
index 931bb4a64c6f694edc0fca79245054eff6a7b19a..a434ac18ea3197d7834e769302c556da6fd9d34f 100644 (file)
@@ -596,8 +596,9 @@ restore_command (char *args_in, int from_tty)
        }
       /* Parse offset (optional).  */
       if (args != NULL && *args != '\0')
-      data.load_offset = 
-       parse_and_eval_address (scan_expression_with_cleanup (&args, NULL));
+       data.load_offset = binary_flag ?
+         parse_and_eval_address (scan_expression_with_cleanup (&args, NULL)) :
+         parse_and_eval_long (scan_expression_with_cleanup (&args, NULL));
       if (args != NULL && *args != '\0')
        {
          /* Parse start address (optional).  */