diff options
author | Nick Clifton <nickc@redhat.com> | 2004-11-12 12:27:05 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2004-11-12 12:27:05 +0000 |
commit | 30e857fcdb77010a0a57bc86d2855e78c1842918 (patch) | |
tree | 992db7b4234c3ce3b94aacd4f789a6822c5ff44a /gas | |
parent | 9b098f24af69b10358b2254bd1a71f070d3e2514 (diff) | |
download | gdb-30e857fcdb77010a0a57bc86d2855e78c1842918.zip gdb-30e857fcdb77010a0a57bc86d2855e78c1842918.tar.gz gdb-30e857fcdb77010a0a57bc86d2855e78c1842918.tar.bz2 |
Fix off by one negative offsets for conditional branches.
Add a test of this fix.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-mn10300.c | 6 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/mn10300/relax.d | 17 | ||||
-rw-r--r-- | gas/testsuite/gas/mn10300/relax.s | 32 |
5 files changed, 64 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index c2ade55..bda1a36 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2004-11-12 Nick Clifton <nickc@redhat.com> + + * config/tc-mn10300.c (md_relax_table): Fix off by one negative + offsets for conditional branches. + 2004-11-11 Bob Wilson <bob.wilson@acm.org> * config/tc-xtensa.c (MAX_IMMED6): Change value to 65. diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c index ea5b533..e2fcf75 100644 --- a/gas/config/tc-mn10300.c +++ b/gas/config/tc-mn10300.c @@ -57,12 +57,12 @@ const char FLT_CHARS[] = "dD"; const relax_typeS md_relax_table[] = { /* bCC relaxing */ {0x7f, -0x80, 2, 1}, - {0x7fff, -0x8000, 5, 2}, + {0x7fff, -0x8000 + 1, 5, 2}, {0x7fffffff, -0x80000000, 7, 0}, /* bCC relaxing (uncommon cases) */ {0x7f, -0x80, 3, 4}, - {0x7fff, -0x8000, 6, 5}, + {0x7fff, -0x8000 + 1, 6, 5}, {0x7fffffff, -0x80000000, 8, 0}, /* call relaxing */ @@ -80,7 +80,7 @@ const relax_typeS md_relax_table[] = { /* fbCC relaxing */ {0x7f, -0x80, 3, 14}, - {0x7fff, -0x8000, 6, 15}, + {0x7fff, -0x8000 + 1, 6, 15}, {0x7fffffff, -0x80000000, 8, 0}, }; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index b5c94fc..9de9798 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2004-11-12 Nick Clifton <nickc@redhat.com> + + * gas/mn10300/basic.exp: Add relax test. + * gas/mn10300/relax.s: New test. + * gas/mn10300/relax.d: Expected results. Make sure that the + correct size of instruction has been selected. + 2004-11-11 Bob Wilson <bob.wilson@acm.org> * gas/xtensa/short_branch_offset.s: New. diff --git a/gas/testsuite/gas/mn10300/relax.d b/gas/testsuite/gas/mn10300/relax.d new file mode 100644 index 0000000..069e8b6 --- /dev/null +++ b/gas/testsuite/gas/mn10300/relax.d @@ -0,0 +1,17 @@ +#objdump: -r +#name: Relaxation of conditional branches + +.*: +file format.*elf32-[am33lin|mn10300].* + +RELOCATION RECORDS FOR \[.rlcb\]: +OFFSET TYPE VALUE +0+8003 R_MN10300_PCREL8 .L0._0\+0x00000001 +0+8005 R_MN10300_PCREL32 .L2\+0x00000001 + + +RELOCATION RECORDS FOR \[.rsflb\]: +OFFSET TYPE VALUE +0+8004 R_MN10300_PCREL8 .L0._1\+0x00000002 +0+8006 R_MN10300_PCREL32 .L4\+0x00000001 + + diff --git a/gas/testsuite/gas/mn10300/relax.s b/gas/testsuite/gas/mn10300/relax.s new file mode 100644 index 0000000..2ef3f60 --- /dev/null +++ b/gas/testsuite/gas/mn10300/relax.s @@ -0,0 +1,32 @@ + .am33_2 + + .section .rlcb, "ax" + .global relax_long_cond_branch +relax_long_cond_branch: + clr d0 + clr d1 +.L2: + add d1,d0 + inc d1 + + .fill 32764, 1, 0xcb + + cmp 9,d1 + ble .L2 + rets + + + .section .rsflb, "ax" + .global relax_long_float_cond_branch +relax_long_float_cond_branch: + clr d0 + clr d1 +.L4: + add d1,d0 + inc d1 + + .fill 32764, 1, 0xcb + + cmp 9,d1 + fble .L4 + rets |