aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2010-04-16 11:20:41 +0000
committerNick Clifton <nickc@redhat.com>2010-04-16 11:20:41 +0000
commitbb7835b8e53aaad0111d20020ab2c2c6310405e1 (patch)
tree90792722480961f131124d5f134482575d6e9951 /gas
parent9b79b476a6a6c5776a5676c137bd7d64df4d738b (diff)
downloadgdb-bb7835b8e53aaad0111d20020ab2c2c6310405e1.zip
gdb-bb7835b8e53aaad0111d20020ab2c2c6310405e1.tar.gz
gdb-bb7835b8e53aaad0111d20020ab2c2c6310405e1.tar.bz2
PR gas/11395
* config/tc-hppa.c (pa_ip): Do not allow 64-bit add condition matcher to accept and unconditional 32-bit add instruction. (pa_build_unwind_subspace): Cope with error conditions not allowing the start symbol to be set. * gas/hppa/basic/add2.s: Add test of simple 32-bit instruction. * gas/hppa/basic/basic.exp (do_add2): Add grep for expected disassembly.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-hppa.c10
-rw-r--r--gas/testsuite/ChangeLog9
-rw-r--r--gas/testsuite/gas/hppa/basic/add2.s4
-rw-r--r--gas/testsuite/gas/hppa/basic/basic.exp3
5 files changed, 32 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d2551db..5f5d2b1 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2010-04-16 Nick Clifton <nickc@redhat.com>
+
+ PR gas/11395
+ * config/tc-hppa.c (pa_ip): Do not allow 64-bit add condition
+ matcher to accept and unconditional 32-bit add instruction.
+ (pa_build_unwind_subspace): Cope with error conditions not
+ allowing the start symbol to be set.
+
2010-04-15 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* config/tc-arm.c (arm_convert_symbolic_attribute): Add support for
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 4b7c121..186b347 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -3968,6 +3968,12 @@ pa_ip (char *str)
/* Handle an add condition. */
case 'A':
+ /* PR gas/11395
+ If we are looking for 64-bit add conditions and we
+ do not have the ",*" prefix, then we have no match. */
+ if (*s != ',')
+ break;
+ /* Fall through. */
case 'a':
cmpltr = 0;
flag = 0;
@@ -5969,6 +5975,10 @@ pa_build_unwind_subspace (struct call_info *call_info)
!= (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
return;
+ if (call_info->start_symbol == NULL)
+ /* This can happen if there were errors earlier on in the assembly. */
+ return;
+
/* Replace the start symbol with a local symbol that will be reduced
to a section offset. This avoids problems with weak functions with
multiple definitions, etc. */
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 7056cc4..797a2b4 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2010-04-16 Nick Clifton <nickc@redhat.com>
+
+ PR gas/11395
+ * gas/hppa/basic/add2.s: Add test of simple 32-bit instruction.
+ * gas/hppa/basic/basic.exp (do_add2): Add grep for expected
+ disassembly.
+
2010-04-15 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* gas/arm/attr-mcpu.d: Update for new attribute tag names.
@@ -19,7 +26,7 @@
* gas/arm/attr-mfpu-vfpv4-d16.d: Likewise.
* gas/arm/attr-mfpu-vfpv4.d: Likewise.
* gas/arm/attr-mfpu-vfpxd.d: Likewise.
- * gas/arm/attr-names.d: Add test to make sure all attribute names
+ * gas/arm/attr-names.d: Add test to make sure all attribute names
are recognised.
* gas/arm/attr-names.s: Likewise.
diff --git a/gas/testsuite/gas/hppa/basic/add2.s b/gas/testsuite/gas/hppa/basic/add2.s
index b50f515..c630a4c 100644
--- a/gas/testsuite/gas/hppa/basic/add2.s
+++ b/gas/testsuite/gas/hppa/basic/add2.s
@@ -90,3 +90,7 @@
add,tsv,dc,*vnz %r4,%r5,%r6
add,tsv,dc,*nsv %r4,%r5,%r6
add,tsv,dc,*ev %r4,%r5,%r6
+
+ ;; PR gas/11395: Check for the correct assembly
+ ;; of an unconditional 32-bit add instruction.
+ add %r1,%r1,%r1
diff --git a/gas/testsuite/gas/hppa/basic/basic.exp b/gas/testsuite/gas/hppa/basic/basic.exp
index b229738..f99ca7b 100644
--- a/gas/testsuite/gas/hppa/basic/basic.exp
+++ b/gas/testsuite/gas/hppa/basic/basic.exp
@@ -674,6 +674,7 @@ proc do_add2 {} {
-re "^ +\[0-9\]+ 0134 08A4BF26\[^\n\]*\n" { set x [expr $x+1] }
-re "^ +\[0-9\]+ 0138 08A4DF26\[^\n\]*\n" { set x [expr $x+1] }
-re "^ +\[0-9\]+ 013c 08A4FF26\[^\n\]*\n" { set x [expr $x+1] }
+ -re "^ +\[0-9\]+ 0140 08210601\[^\n\]*\n" { set x [expr $x+1] }
-re "\[^\n\]*\n" { }
timeout { perror "timeout\n"; break }
eof { break }
@@ -685,7 +686,7 @@ proc do_add2 {} {
gas_finish
# Did we find what we were looking for? If not, flunk it.
- if [expr $x==80] then { pass $testname } else { fail $testname }
+ if [expr $x==81] then { pass $testname } else { fail $testname }
}
proc do_sh1add {} {