diff options
author | Nick Clifton <nickc@redhat.com> | 2005-02-07 16:00:10 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2005-02-07 16:00:10 +0000 |
commit | 9f5083a4b6161bb345cc54f7bd484725316fb1e2 (patch) | |
tree | 48a8c12f5a68a01a15b7e9fc4bf97fc6b09ba124 /gas | |
parent | 992771964fc2b57468be0b4e4aa13a282d0a8c4a (diff) | |
download | gdb-9f5083a4b6161bb345cc54f7bd484725316fb1e2.zip gdb-9f5083a4b6161bb345cc54f7bd484725316fb1e2.tar.gz gdb-9f5083a4b6161bb345cc54f7bd484725316fb1e2.tar.bz2 |
Correct the relative jump calculation.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-maxq.c | 10 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/maxq10/call.d | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/maxq10/jump.d | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/maxq20/call.d | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/maxq20/jump.d | 34 |
7 files changed, 63 insertions, 45 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 48efc32..ceb6e6b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2005-02-07 Inderpreet Singh <inderpreetb@noida.hcltech.com> + + * config/tc-maxq.c (md_estimate_size_before_relax): Correct the + relative jump calculation. + <md_convert_frag) : Likewise. + <output_disp): Likewise. + 2005-02-07 Hans-Peter Nilsson <hp@axis.com> * write.c (write_object_file): Recognize warning-symbol construct diff --git a/gas/config/tc-maxq.c b/gas/config/tc-maxq.c index 43784c9..dda7ca4 100644 --- a/gas/config/tc-maxq.c +++ b/gas/config/tc-maxq.c @@ -376,7 +376,9 @@ md_estimate_size_before_relax (fragS *fragP, segT segment) /* This is the offset if it is a PC relative jump. */ call_addr = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset; - diff = (call_addr - instr); + + /* PC stores the value of the next instruction. */ + diff = (call_addr - instr) - 1; if (diff >= (-128 * 2) && diff <= (2 * 127)) { @@ -510,7 +512,8 @@ md_convert_frag (object_headers * headers ATTRIBUTE_UNUSED, (fragP->fr_address / MAXQ_OCTETS_PER_BYTE) + ((fragP->fr_fix - 2) / MAXQ_OCTETS_PER_BYTE); - displacement_from_opcode_start = (target_address - opcode_address); + /* PC points to the next Instruction. */ + displacement_from_opcode_start = ((target_address - opcode_address) - 1); if ((displacement_from_opcode_start >= -128 && displacement_from_opcode_start <= 127) @@ -2766,7 +2769,8 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off) ((((expressionS *) symbol_get_value_expression (sym))-> X_add_number) - insn_start_off); - diff = diff / MAXQ_OCTETS_PER_BYTE; + /* PC points to the next instruction. */ + diff = (diff / MAXQ_OCTETS_PER_BYTE) - 1; if (diff >= -128 && diff <= 127) { diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 57ba3c3..37e74ec 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2005-02-07 Inderpreet Singh <inderpreetb@noida.hcltech.com> + + * gas/maxq10/jump.d: Fixed relative jump offset. + * gas/maxq10/call.d: Likewise. + * gas/maxq20/jump.d: Likewise. + * gas/maxq20/call.d: Likewise. + 2005-02-07 Hans-Peter Nilsson <hp@axis.com> * lib/gas-defs.exp: Support new directive "warning". diff --git a/gas/testsuite/gas/maxq10/call.d b/gas/testsuite/gas/maxq10/call.d index 209a8eb..2c32994 100644 --- a/gas/testsuite/gas/maxq10/call.d +++ b/gas/testsuite/gas/maxq10/call.d @@ -5,7 +5,7 @@ Disassembly of section .text:
0+000 <foo>:
- 0: 03 3d [ ]*CALL #03h
+ 0: 02 3d [ ]*CALL #02h
2: 04 0b [ ]*MOVE PFX\[0\], #04h
4: 28 3d [ ]*CALL #28h
0+6 <SmallCall>:
@@ -21,11 +21,11 @@ Disassembly of section .text: 18: 8d cc [ ]*RETI S
1a: 10 7d [ ]*MOVE LC\[1\], #10h
0+1c <LoopTop>:
- 1c: 00 3d [ ]*CALL #00h
- 1e: ff 5d [ ]*DJNZ LC\[1\], #ffh
+ 1c: ff 3d [ ]*CALL #ffh
+ 1e: fe 5d [ ]*DJNZ LC\[1\], #feh
20: 10 7d [ ]*MOVE LC\[1\], #10h
0+22 <LoopTop1>:
- 22: 00 3d [ ]*CALL #00h
+ 22: ff 3d [ ]*CALL #ffh
...
424: 00 0b [ ]*MOVE PFX\[0\], #00h
426: 1c 5d [ ]*DJNZ LC\[1\], #1ch
diff --git a/gas/testsuite/gas/maxq10/jump.d b/gas/testsuite/gas/maxq10/jump.d index 2cc9c9b..71f60e3 100644 --- a/gas/testsuite/gas/maxq10/jump.d +++ b/gas/testsuite/gas/maxq10/jump.d @@ -5,45 +5,45 @@ Disassembly of section .text: 0+000 <LableStart>: - 0: 00 0c [ ]*JUMP #00h - 2: ff 2c [ ]*JUMP C , #ffh + 0: ff 0c [ ]*JUMP #ffh + 2: fe 2c [ ]*JUMP C , #feh 4: 09 ac [ ]*JUMP C , A\[0\] 6: 19 ac [ ]*JUMP C , A\[1\] - 8: fc 6c [ ]*JUMP NC , #fch + 8: fb 6c [ ]*JUMP NC , #fbh a: 09 ec [ ]*JUMP NC , A\[0\] c: 19 ec [ ]*JUMP NC , A\[1\] - e: f9 4c [ ]*JUMP S , #f9h + e: f8 4c [ ]*JUMP S , #f8h 10: 09 cc [ ]*JUMP S , A\[0\] 12: 19 cc [ ]*JUMP S , A\[1\] - 14: f6 1c [ ]*JUMP Z , #f6h + 14: f5 1c [ ]*JUMP Z , #f5h 16: 09 9c [ ]*JUMP Z , A\[0\] 18: 19 9c [ ]*JUMP Z , A\[1\] - 1a: f3 5c [ ]*JUMP NZ , #f3h + 1a: f2 5c [ ]*JUMP NZ , #f2h 1c: 09 dc [ ]*JUMP NZ , A\[0\] 1e: 19 dc [ ]*JUMP NZ , A\[1\] - 20: f0 3c [ ]*JUMP E , #f0h - 22: ef 7c [ ]*JUMP NE , #efh - 24: 01 7c [ ]*JUMP NE , #01h + 20: ef 3c [ ]*JUMP E , #efh + 22: ee 7c [ ]*JUMP NE , #eeh + 24: 00 7c [ ]*JUMP NE , #00h 0+026 <Lable1>: - 26: 00 0c [ ]*JUMP #00h - 28: ff 2c [ ]*JUMP C , #ffh + 26: ff 0c [ ]*JUMP #ffh + 28: fe 2c [ ]*JUMP C , #feh 2a: 09 ac [ ]*JUMP C , A\[0\] 2c: 19 ac [ ]*JUMP C , A\[1\] - 2e: fc 6c [ ]*JUMP NC , #fch + 2e: fb 6c [ ]*JUMP NC , #fbh 30: 09 ec [ ]*JUMP NC , A\[0\] 32: 19 ec [ ]*JUMP NC , A\[1\] - 34: f9 4c [ ]*JUMP S , #f9h + 34: f8 4c [ ]*JUMP S , #f8h 36: 09 cc [ ]*JUMP S , A\[0\] 38: 19 cc [ ]*JUMP S , A\[1\] - 3a: f6 1c [ ]*JUMP Z , #f6h + 3a: f5 1c [ ]*JUMP Z , #f5h 3c: 09 9c [ ]*JUMP Z , A\[0\] 3e: 19 9c [ ]*JUMP Z , A\[1\] - 40: f3 5c [ ]*JUMP NZ , #f3h + 40: f2 5c [ ]*JUMP NZ , #f2h 42: 09 dc [ ]*JUMP NZ , A\[0\] 44: 19 dc [ ]*JUMP NZ , A\[1\] - 46: f0 3c [ ]*JUMP E , #f0h - 48: ef 7c [ ]*JUMP NE , #efh + 46: ef 3c [ ]*JUMP E , #efh + 48: ee 7c [ ]*JUMP NE , #eeh 4a: 04 0b [ ]*MOVE PFX\[0\], #04h 4c: c6 0c [ ]*JUMP #c6h 4e: 04 0b [ ]*MOVE PFX\[0\], #04h diff --git a/gas/testsuite/gas/maxq20/call.d b/gas/testsuite/gas/maxq20/call.d index c2bdb3f..a8bf775 100644 --- a/gas/testsuite/gas/maxq20/call.d +++ b/gas/testsuite/gas/maxq20/call.d @@ -5,7 +5,7 @@ Disassembly of section .text: 0+000 <foo>: - 0: 03 3d [ ]*CALL #03h + 0: 02 3d [ ]*CALL #02h 2: 04 0b [ ]*MOVE PFX\[0\], #04h 4: 28 3d [ ]*CALL #28h @@ -23,12 +23,12 @@ Disassembly of section .text: 1a: 10 7d [ ]*MOVE LC\[1\], #10h 0+01c <LoopTop>: - 1c: 00 3d [ ]*CALL #00h - 1e: ff 5d [ ]*DJNZ LC\[1\], #ffh + 1c: ff 3d [ ]*CALL #ffh + 1e: fe 5d [ ]*DJNZ LC\[1\], #feh 20: 10 7d [ ]*MOVE LC\[1\], #10h 0+022 <LoopTop1>: - 22: 00 3d [ ]*CALL #00h + 22: ff 3d [ ]*CALL #ffh ... 424: 00 0b [ ]*MOVE PFX\[0\], #00h 426: 1c 5d [ ]*DJNZ LC\[1\], #1ch diff --git a/gas/testsuite/gas/maxq20/jump.d b/gas/testsuite/gas/maxq20/jump.d index 0fb9d47..026d2b9 100644 --- a/gas/testsuite/gas/maxq20/jump.d +++ b/gas/testsuite/gas/maxq20/jump.d @@ -5,45 +5,45 @@ Disassembly of section .text: 0+000 <LableStart>: - 0: 00 0c [ ]*JUMP #00h - 2: ff 2c [ ]*JUMP C , #ffh + 0: ff 0c [ ]*JUMP #ffh + 2: fe 2c [ ]*JUMP C , #feh 4: 09 ac [ ]*JUMP C , A\[0\] 6: 19 ac [ ]*JUMP C , A\[1\] - 8: fc 6c [ ]*JUMP NC , #fch + 8: fb 6c [ ]*JUMP NC , #fbh a: 09 ec [ ]*JUMP NC , A\[0\] c: 19 ec [ ]*JUMP NC , A\[1\] - e: f9 4c [ ]*JUMP S , #f9h + e: f8 4c [ ]*JUMP S , #f8h 10: 09 cc [ ]*JUMP S , A\[0\] 12: 19 cc [ ]*JUMP S , A\[1\] - 14: f6 1c [ ]*JUMP Z , #f6h + 14: f5 1c [ ]*JUMP Z , #f5h 16: 09 9c [ ]*JUMP Z , A\[0\] 18: 19 9c [ ]*JUMP Z , A\[1\] - 1a: f3 5c [ ]*JUMP NZ , #f3h + 1a: f2 5c [ ]*JUMP NZ , #f2h 1c: 09 dc [ ]*JUMP NZ , A\[0\] 1e: 19 dc [ ]*JUMP NZ , A\[1\] - 20: f0 3c [ ]*JUMP E , #f0h - 22: ef 7c [ ]*JUMP NE , #efh - 24: 01 7c [ ]*JUMP NE , #01h + 20: ef 3c [ ]*JUMP E , #efh + 22: ee 7c [ ]*JUMP NE , #eeh + 24: 00 7c [ ]*JUMP NE , #00h 0+026 <Lable1>: - 26: 00 0c [ ]*JUMP #00h - 28: ff 2c [ ]*JUMP C , #ffh + 26: ff 0c [ ]*JUMP #ffh + 28: fe 2c [ ]*JUMP C , #feh 2a: 09 ac [ ]*JUMP C , A\[0\] 2c: 19 ac [ ]*JUMP C , A\[1\] - 2e: fc 6c [ ]*JUMP NC , #fch + 2e: fb 6c [ ]*JUMP NC , #fbh 30: 09 ec [ ]*JUMP NC , A\[0\] 32: 19 ec [ ]*JUMP NC , A\[1\] - 34: f9 4c [ ]*JUMP S , #f9h + 34: f8 4c [ ]*JUMP S , #f8h 36: 09 cc [ ]*JUMP S , A\[0\] 38: 19 cc [ ]*JUMP S , A\[1\] - 3a: f6 1c [ ]*JUMP Z , #f6h + 3a: f5 1c [ ]*JUMP Z , #f5h 3c: 09 9c [ ]*JUMP Z , A\[0\] 3e: 19 9c [ ]*JUMP Z , A\[1\] - 40: f3 5c [ ]*JUMP NZ , #f3h + 40: f2 5c [ ]*JUMP NZ , #f2h 42: 09 dc [ ]*JUMP NZ , A\[0\] 44: 19 dc [ ]*JUMP NZ , A\[1\] - 46: f0 3c [ ]*JUMP E , #f0h - 48: ef 7c [ ]*JUMP NE , #efh + 46: ef 3c [ ]*JUMP E , #efh + 48: ee 7c [ ]*JUMP NE , #eeh 4a: 04 0b [ ]*MOVE PFX\[0\], #04h 4c: c6 0c [ ]*JUMP #c6h 4e: 04 0b [ ]*MOVE PFX\[0\], #04h |